这是我的代码(应该使用牛顿方法找到多项式根(:
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 ;
但是它不起作用。
我在这里没有指代代码的逻辑 - 牛顿方法的实现,我只是指matlab语言的语法和规则。
- 您不能在MATLAB中使用
z(0)
,因为索引从1开始,而不是0(例如C,C 和其他编程语言(。您的z(0)
需要是z(1)
- 您不能在函数声明中使用
z(index)
,只能放置变量名 - 如果
n
是向量a
的大小,则您不需要作为参数,只需在功能主体中使用n = length(a)