数值分析matlab代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、%用牛顿法求f(x)=x-sin x 的零点,e=10^(-6)
disp('牛顿法');
i=1;
n0=180;
p0=pi/3;
tol=10^(-6);
for i=1:n0
p=p0-(p0-sin(p0))/(1-cos(p0));
if abs(p-p0)<=10^(-6)
disp('用牛顿法求得方程的根为')
disp(p);
disp('迭代次数为:')
disp(i)
break;
end
p0=p;
end
if i==n0&&~(abs(p-p0)<=10^(-6))
disp(n0)
disp('次牛顿迭代后无法求出方程的解')
end
2、disp('Steffensen加速');
p0=pi/3;
for i=1:n0
p1=0.5*p0+0.5*cos(p0);
p2=0.5*p1+0.5*cos(p1);
p=p0-((p1-p0).^2)./(p2-2.*p1+p0);
if abs(p-p0)<=10^(-6)
disp('用Steffensen加速求得方程的根为')
disp(p);
disp('迭代次数为:')
disp(i)
break;
end
p0=p;
end
if i==n0&&~(abs(p-p0)<=10^(-6))
disp(n0)
disp('次Steffensen加速后无法求出方程的解')
end
1、%使用二分法找到方程 600 x^4 -550 x^3 +200 x^2 -20 x -1 =0 在区间[0.1,1]上的根,
%误差限为 e=10^-4
disp('二分法')
a=0.2;b=0.26;
tol=0.0001;
n0=10;
fa=600*(a.^4)-550*(a.^3)+200*(a.^2)-20*a-1;
for i=1:n0
p=(a+b)/2;
fp=600*(p.^4)-550*(p.^3)+200*(p.^2)-20*p-1;
if fp==0||(abs((b-a)/2) disp('用二分法求得方程的根p=') disp(p) disp('二分迭代次数为:') disp(i) break; end if fa*fp>0 a=p; else b=p; end end if i==n0&&~(fp==0||(abs((b-a)/2) disp(n0) disp('次二分迭代后没有求出方程的根') end 2、%使用牛顿法找到方程 600 x^4 -550 x^3 +200 x^2 -20 x -1 =0 在区间[0.1,1]上的根, %误差限为 e=10^-4 disp('牛顿法') p0=0.3; for i=1:n0 p=p0-(600*(p0.^4)-550*(p0.^3)+200*(p0.^2)-20*p0-1)./(2400*(p0.^3) -1650*p0.^2+400*p0-20); if(abs(p-p0) disp('用牛顿法求得方程的根p=') disp(p) disp('牛顿迭代次数为:') disp(i) break; end p0=p; end if i==n0&&~(abs(p-p0) disp(n0) disp('次牛顿迭代后没有求出方程的根') end 3、%使用割线法找到方程 600 x^4 -550 x^3 +200 x^2 -20 x -1 =0 在区间[0.1,1]上的根, %误差限为 e=10^-4 disp('割线法') p0=0.2; p1=0.25; q0=600*(p0.^4)-550*(p0.^3)+200*(p0.^2)-20*p0-1; q1=600*(p1.^4)-550*(p1.^3)+200*(p1.^2)-20*p1-1; for i=2:n0 p=p1-q1*(p1-p0)/(q1-q0); if abs(p-p1) disp('用割线法求得方程的根p=') disp(p) disp('割线法迭代次数为:') disp(i) break; end p0=p1; q0=q1; pp=p1; p1=p; q1=600*(p.^4)-550*(p.^3)+200*(p.^2)-20*p-1; end if i==n0&&~(abs(p-pp) disp(n0) disp('次割线法迭代后没有求出方程的根') end 4、%使用试位法找到方程 600 x^4 -550 x^3 +200 x^2 -20 x -1 =0 在区间[0.1,1]上的根, %误差限为 e=10^-4 disp('试位法') p0=0.2; p1=0.25; q0=600*(p0.^4)-550*(p0.^3)+200*(p0.^2)-20*p0-1; q1=600*(p1.^4)-550*(p1.^3)+200*(p1.^2)-20*p1-1; for i=2:n0 p=p1-q1*(p1-p0)/(q1-q0); if abs(p-p1) disp('用试位法求得方程的根p=') disp(p) disp('试位法迭代次数为:') disp(i)