数值分析matlab代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档