% Nonlinear_Iteration.m functionNonlinear_Iteration(f,start) format long; disp('不动点迭代方程为:') disp(f) st = start; disp(['迭代初值为:',num2str(start)]) x=feval(f,st); Eps=1E-8; i=1; while1 x0=x; i=i+1; x=feval(f,x); if ~isreal(x) % 不是实数不进行迭代 break; end if x>1E10% 若大于给定值,则发散,不进行迭代 break; end ifabs(x-x0)<Eps break; end end % 输出迭代次数以及解 disp(['迭代次数为:',num2str(i)]) disp('迭代产生的解为:') disp(x) format short; end
format long; f=inline('x-(x^5-12.5*x^4+57.5*x^3-118.75*x^2+105.5625*x-29.53125)/(5*x^4-50*x^3+172.5*x^2-237.5*x+105.5625)'); forj=0.2:1:4.2 disp(['迭代初值为:',num2str(j)]) x=feval(f,j); Eps=1E-8; % 设置精度 i=1; while1 x0=x; i=i+1; x=feval(f,x); % 进行迭代 if ~isreal(x) % 不是实数不进行迭代 break; end if x>1E10% 若大于给定值,则发散,不进行迭代 break; end ifabs(x-x0)<Eps % 达到设定精度后退出 break; end end % 输出迭代次数以及解 disp(['迭代次数为:',num2str(i)]) disp(['迭代产生的解为:',num2str(x)]) format short; end