使用割线法计算函数根的matlab代码如下:
syms x
f=@(x) x.^2-2;
x0=1;
x1=5;
tol=0.01;
for i=1:100
if (f(x0)-f(x1)) < 0.00001
break;
end
xn = x0-((f(x0)*(x0-x1))/(f(x0)-f(x1)));
if abs(xn-x0) < tol*abs(xn)
break;
end
x0=xn;
x1=x0;
end
fprintf('the root is %g\n', xn)当我运行代码时,matlab说:Undefined function or variable 'xn'.,它为什么这么说?我在代码中定义了xn!
非常感谢
发布于 2016-03-31 10:54:46
在此if语句中缺少一个绝对值:
if abs(f(x0)-f(x1)) < 0.00001
break;
end没有这一点,for循环在进入xn定义之前就会中断,这不是因为f(x0)接近f(x1),而是因为结果为负值。
通过运行,您有第二个问题,这些行需要交换,否则它们最终是相等的,这不是你想要的。
x0=xn;
x1=x0;https://stackoverflow.com/questions/36330963
复制相似问题