首页 > 解决方案 > 在交互方法中使用时如何在 matlab 函数中声明 x0

问题描述

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

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 ;

但它不起作用。

标签: matlabfunctioninputmethods

解决方案


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

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

推荐阅读