【发布时间】:2015-11-20 12:12:08
【问题描述】:
我正在尝试使用 MATLAB 编写一个小程序,在该程序中我尝试区分我在不同函数中创建的函数,但我不断出错。
我的文件是:
牛顿.m:
function [ y, iter ] = newton( f, fp, x0 )
iter = 0;
xprev = x0;
x = xprev - f(xprev)/fp(xprev);
iter = iter + 1;
while abs(x-xprev) > eps*abs(x)
xprev = x;
x = x - f(x)/fp(x);
iter = iter + 1;
y = x;
end
end
f.m:
function y = f(x)
y = tan(x) - 2*x;
end
fp.m:
function y = fp(f)
y = diff(f);
end
我正在运行以下命令:
[y, iter] = newton(@f, @fp, 1.4)
得到:
使用 /
时出错 矩阵尺寸必须一致。牛顿错误(第 6 行) x = xprev - f(xprev)/fp(xprev);
当我在 fp.m 中检查y 的值时,我不断收到[]。
【问题讨论】:
-
函数
diff返回向量中元素之间的差异。参见se.mathworks.com/help/matlab/ref/…>。调用fp时需要至少获取两个值
标签: matlab function differentiation