![]() |
matlab斯蒂文森迭代精度及输出出现复数
使用斯蒂文森迭代求解非线性方程,斯蒂文森迭代公式如下:
%Steffensen迭代解非线性方程 function[r,n]=Steffensen(x0,eps) %if nargin==2 % eps=1.0e-10; %默认迭代精度 %end y=myf(x0); z=myf(y); r=x0-(myf(x0)-x0)^2/(myf(y)-2*myf(x0)+x0); n=1; err=0.1; while err>eps x0=r; r=x0-(myf(x0)-x0)^2/(myf(y)-2*myf(x0)+x0); err=abs(r-x0); n=n+1; if(n>100000) disp('迭代步数太多,可能不收敛') return; end end end function f=myf(x) %f=3*x.^2-exp(x); f=2*log(x)+log(3); end %end f 在命令窗口输入[r,n]=Steffensen(3.5,1.0e-4)时能够输出正常的实数值,但当提高精度后例如输入[r,n]=Steffensen(3.5,1.0e-5)就开始输出0.9144+0.0000i,同是输入format long后再次运行[r,n]=Steffensen(3.5,1.0e-5),输出为0.914378007984216+0.000010915415698i,正常的迭代后解在3.7附近,求大神指教啊! |
所有时间均为北京时间。现在的时间是 12:22。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.