这是我的Matlab代码:
clear;clc;format ('long','g')
i=1;
x(i)=0;
error(i) = 9999;
while error(i) >= 0.05
x(i+1) = (0.2062129)*(20+(2*x(i)))^(2/5);
error(i+1)=abs((((x(i+1)-x(i))/(x(i+1)))*100));
i=i+1;
end
disp(' root error(%)');
disp([x',error'])
如何将其转换为Mathematica,以便它在matlab中生成根和错误列表?
答案 0 :(得分:1)
由于我们没有从Matlab获得的输出,因此很难知道这是否足够正确。将它与你拥有的东西相比较并从那里开始。
captions
在几分之一秒内返回
expr={1,0,9999};
f[{i_,xi_,err_}]:=(xipp=0.2062129*(20+(2*xi))^(2/5);
{i+1,xipp,Abs[(((xipp-xi)/(xipp))*100)]});
NestWhileList[f,expr,#[[3]]>=.05&]
答案 1 :(得分:0)
我建议不要在你喜欢的函数中隐藏收敛测试:
f[xi_] := 0.2062129*(20 + (2*xi))^(2/5)
NestWhileList[f, 0, Abs[(#2 - #1)/#2*100] >= .05 &, 2]
{0,0.683483,0.701799,0.70228,0.702293}
你也可以这样做:
FixedPointList[f, 0, SameTest -> (Abs[(#2 - #1)/#2*100] < .05 &)]
请注意,在这两种情况下,如果您只想要最终结果而不是中间值列表,则可以使用FixedPoint
和NestWhile
。