数值分析matlab代码Word下载.doc
《数值分析matlab代码Word下载.doc》由会员分享,可在线阅读,更多相关《数值分析matlab代码Word下载.doc(25页珍藏版)》请在冰豆网上搜索。
迭代次数为:
'
disp(i)
break;
end
p0=p;
end
ifi==n0&
&
~(abs(p-p0)<
=10^(-6))
disp(n0)
disp('
次牛顿迭代后无法求出方程的解'
2、disp('
Steffensen加速'
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);
用Steffensen加速求得方程的根为'
次Steffensen加速后无法求出方程的解'
1、%使用二分法找到方程600x^4-550x^3+200x^2-20x-1=0在区间[0.1,1]上的根,
%误差限为e=10^-4
二分法'
a=0.2;
b=0.26;
tol=0.0001;
n0=10;
fa=600*(a.^4)-550*(a.^3)+200*(a.^2)-20*a-1;
p=(a+b)/2;
fp=600*(p.^4)-550*(p.^3)+200*(p.^2)-20*p-1;
iffp==0||(abs((b-a)/2)<
tol)
disp('
用二分法求得方程的根p='
disp(p)
二分迭代次数为:
disp(i)
break;
end
iffa*fp>
a=p;
elseb=p;
~(fp==0||(abs((b-a)/2)<
tol))
次二分迭代后没有求出方程的根'
2、%使用牛顿法找到方程600x^4-550x^3+200x^2-20x-1=0在区间[0.1,1]上的根,
p0=0.3;
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)<
用牛顿法求得方程的根p='
牛顿迭代次数为:
p0=p;
次牛顿迭代后没有求出方程的根'
3、%使用割线法找到方程600x^4-550x^3+200x^2-20x-1=0在区间[0.1,1]上的根,
割线法'
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;
fori=2:
p=p1-q1*(p1-p0)/(q1-q0);
ifabs(p-p1)<
tol
用割线法求得方程的根p='
割线法迭代次数为:
p0=p1;
q0=q1;
pp=p1;
p1=p;
q1=600*(p.^4)-550*(p.^3)+200*(p.^2)-20*p-1;
~(abs(p-pp)<
次割线法迭代后没有求出方程的根'
4、%使用试位法找到方程600x^4-550x^3+200x^2-20x-1=0在区间[0.1,1]上的根,
试位法'
p=p1-q1*(p1-p0)/(q1-q0);
用试位法求得方程的根p='
试位法迭代次数为:
q=600*(p.^4)-550*(p.^3)+200*(p.^2)-20*p-1;
ifq*q1<
p0=p1;
q0=q1;
q1=q;
次试位法迭代后没有求出方程的根'
5、%使用muller方法找到方程600x^4-550x^3+200x^2-20x-1=0在区间[0.1,1]上的根,
muller法'
x0=0.1;
x1=0.2;
x2=0.25;
h1=x1-x0;
h2=x2-x1;
d1=((600*(x1.^4)-550*(x1.^3)+200*(x1.^2)-20*x1-1)-(600*(x0.^4)-550*(x0.^3)+200*(x0.^2)-20*x0-1))/h1;
d2=((600*(x2.^4)-550*(x2.^3)+200*(x2.^2)-20*x2-1)-(600*(x1.^4)-550*(x1.^3)+200*(x1.^2)-20*x1-1))/h2;
d=(d2-d1)/(h2+h1);
fori=3:
b=d2+h2*d;
D=(b*b-4*(600*(x2.^4)-550*(x2.^3)+200*(x2.^2)-20*x2-1)*d)^0.5;
if(abs(d-D)<
abs(d+D))
E=b+D;
elseE=b-D;
h=-2*(600*(x2.^4)-550*(x2.^3)+200*(x2.^2)-20*x2-1)/E;
p=x2+h;
ifabs(h)<
用muller方法求得方程的根p='
muller方法迭代次数为:
x0=x1;
x1=x2;
x2=p;
h1=x1-x0;
h2=x2-x1;
d1=((600*(x1.^4)-550*(x1.^3)+200*(x1.^2)-20*x1-1)-(600*(x0.^4)-550*(x0.^3)+200*(x0.^2)-20*x0-1))/h1;
d2=((600*(x2.^4)-550*(x2.^3)+200*(x2.^2)-20*x2-1)-(600*(x1.^4)-550*(x1.^3)+200*(x1.^2)-20*x1-1))/h2;
d=(d2-d1)/(h2+h1);
ifi==n0%条件有待商榷?
!
次muller方法迭代后没有求出方程的根'
1、%观察Lagrange插值的Runge现象
x=-1:
0.05:
1;
y=1./(1+25.*x.*x);
plot(x,y),gridon;
n=5;
2/n:
n+1
q(1,i)=y(i);
h=0.05;
z=-1:
h:
fork=1:
2/h+1
fori=2:
forj=2:
i
q(j,i)=((z(k)-x(i-j+1))*q(j-1,i)-(z(k)-x(i))*q(j-1,i-1))/(x(i)-x(i-j+1));
end
w(k)=q(n+1,n+1);
holdon,plot(z,w,'
r'
),gridon;
%****n=10****
n=10;
holdon,plot(z,w,'
k'
legend('
原始图'
'
n=5'
n=10'
2、%固支样条插植
%********第一段********
x=[1,2,5,6,7,8,10,13,17];
a=[3,3.7,3.9,4.2,5.7,6.6,7.1,6.7,4.5];
n=numel(a);
n-1
h(i)=x(i+1)-x(i);
A=[2*h
(1),h
(1),0,0,0,0,0,0,0;
h
(1),2*(h
(1)+h
(2)),h
(2),0,0,0,0,0,0;