matlab - 在交互方法中使用时如何在 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 ;
但它不起作用。
解决方案
我这里不是指你代码的逻辑——牛顿方法的实现,我只是指Matlab语言的语法和规则。
- 您不能
z(0)
在 Matlab 中使用,因为索引从 1 开始,而不是 0(如 C、C++ 和其他编程语言)。你的z(0)
需要是z(1)
- 不能
z(index)
在函数声明中使用,只能放变量名 - 如果
n
是向量的大小,则a
不需要它作为参数,只需n = length(a)
在函数体中使用
推荐阅读
- python - 如何将“get (gcf, 'currentchar') ~= ' '” 从 Matlab 转换为 Python?
- loops - 单击按钮时,需要 10 秒的图像雨
- angular - Angular - matDatepicker 无法正常工作
- flume - Flume 无法访问 s3 来写入文件 java.lang.IllegalArgumentException: Invalid hostname in URI s3://ACCESSKEY:SECRETKEY/@bucket
- postgresql - 如何像在 MySQL 中一样在 postgresql 中设置“wait_timeout”值?
- swift - 如何在 Realm 中对 WBS 格式字符串进行排序?
- nexus - 连结 3 | 如何使用 Nexus 3 API 创建(外部)用户?
- python - 实现 dotProduct 的最 Pythonic 方式是什么?
- ruby-on-rails - 即使对于非 CRUD 路由(Rails),我也应该使用资源路由吗?
- c# - 如何实现 ParallelForEach
(IEnumerable 源,ParallelOptions 并行选项,动作 身体)?