当前位置:首页 > 数值分析课程设计实验报告
5、弦截法程序:
function y = xianjiefa(a,n,x01,x02,eps) %a为对应多项式的系数,按从高次幂到低次幂的顺序输入 %n为最高次幂的级数 %x01,x02为迭代初值
%迭代公式x(i+1)=x(i)-(x(i)-x(i-1))f(x(i))/(f(x(i))-f(x(i-1))) if nargin < 5 eps = 1e-6; elseif nargin <4 error('′输入错误') return; end
x(1) = x01; x(2) = x02;
tol = 1; i = 2; while tol>eps*x(i) && i<500
x(i+1)=x(i)-(x(i)-x(i-1))*mzfun(a,n,x(i))/(mzfun(a,n,x(i))-mzfun(a,n,x(i-1)));
tol = abs(x(i+1)-x(i)); i = i+1; end
y =x(i) ; fprintf('迭代次数',i-2);
function y=mzfun(a,n,x) %计算 f(x(i))的值 y = 0; for i =1:n+1
y = y + a(i)*x^(n+1-i); end
输出结果:
6、抛物线法程序:
function root=paowuxian() x0=input('请输入初值x0='); x1=input('请输入初值x1='); x2=input('请输入初值x2='); N=input('最大迭代次数='); f1=mfun(x0); f2=mfun(x1); if f1==0 root=x0; end if f2==0 root=x1; end if f1*f2>0
disp('输入错误'); return else
err=input('请输入精度err='); f1=mfun(x0); f2=mfun(x1); f3=mfun(x2); d1=(f2-f1)/(x1-x0); d2=(f3-f2)/(x2-x1); d3=(d2-d1)/(x2-x0); B=d2+d3*(x2-x1);
root=x2-2*f3/(B+sign(B)*sqrt(B^2-4*f3*d3)); t(1)=x0; t(2)=x1; t(3)=x2; n=0;
tol=abs(root-t(3)); while tol>err n=n+1; if n>N
disp('超过迭代次数'); return end t(1)=t(2); t(2)=t(3); t(3)=root; f1=mfun(t(1)); f2=mfun(t(2)); f3=mfun(t(3));
d1=(f2-f1)/(t(2)-t(1));
d2=(f3-f2)/(t(3)-t(2)); d3=(d2-d1)/(t(3)-t(1)); B=d2+d3*(t(3)-t(2));
root=t(3)-2*f3/(B+sign(B)*sqrt(B^2-4*f3*d3)); tol=abs(root-t(3)); end end
fprintf('输出迭代次数',n); end
function y = mfun(x) p = [1,2,10,-20]; y = polyval(p,x);
输出结果:
四、成果亮点
共分享92篇相关文档