【问题标题】:How to declare x0 in a matlab function when using it in an interetion method在交互方法中使用时如何在 matlab 函数中声明 x0
【发布时间】:2019-05-16 09:10:25
【问题描述】:

这是我的代码(应该使用牛顿法求多项式根):

function z = newton(n, m ,z(0), a)
  b(1)=a(0);
  c(1)=a(0);
  for k=1:1:m
    for j=2:1:n+1
      b(j)=z(k)*b(b-1)+a(j);
    end
    for s=2:1:n
      c(s)=z(k)*c(s-1)+b(s);
    end
    h(k)=-b(n)/c(n-1);
    z(k+1)=z(k)+h(k);
  end
end

我不能调用这个函数,因为 Matlab 在z(0) 输入参数上给了我一个错误。 a 是一个向量,n 是向量的大小,m 是迭代次数,z(0) 是第一个 x,从它开始迭代。你能帮我吗,也许还有另一种方法来声明第一个x?

我试过写:

function z = newton(n, m ,z, a)
z(0)=z ;

但它不起作用。

【问题讨论】:

  • 在你的函数中,你永远不会分配z(1),因为z(k+1)=...k=1,...。另一方面,您在b(j)=z(k)*... 中使用z(1) 来表示k=1,...。所以,我猜z(1)=z 应该没问题!?

标签: matlab function input methods


【解决方案1】:

我这里不是指你代码的逻辑——牛顿法的实现,我只是指Matlab语言的语法和规则。

  1. 您不能在 Matlab 中使用z(0),因为索引从 1 开始,而不是 0(如 C、C++ 和其他编程语言)。 您的 z(0) 必须是 z(1)
  2. 不能在函数声明中使用z(index),只能放变量名
  3. 如果n是向量a的大小,则不需要它作为参数,只需在函数体中使用n = length(a)即可

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多