数值分析考试复习题附matlab程序实现.docx
- 文档编号:30050148
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:113.82KB
数值分析考试复习题附matlab程序实现.docx
《数值分析考试复习题附matlab程序实现.docx》由会员分享,可在线阅读,更多相关《数值分析考试复习题附matlab程序实现.docx(17页珍藏版)》请在冰豆网上搜索。
数值分析考试复习题附matlab程序实现
期末作业
1.给定一个方程组
试建立一个收敛的迭代格式,并说明收敛的理由
解:
A=[214;141;311];
b=[632]';
%对A|b进行行变换,使A为严格对角占优阵
%如果A为严格对角占优阵,则解Ax=b的Jacobi迭代法和Gauss-Seidel迭代法均收敛
A=[311;141;214];
b=[236]';
A\b%正确答案
w=[1:
20]*0.1;
fori=1:
20
[x,k,flag]=SOR(A,b,1e-5,w(i),100);%函数见SOR.m
result(:
i)=[w(i);flag;k;x];
end
[CI]=min(result(3,:
));
plot(w,result(2,:
).*result(3,:
),w(I),C,'r*');xlabel('w');ylabel('k');
legend('k-w曲线',['k=',num2str(C),',\omega=',num2str(w(I))]);
title(['方程组解为:
',num2str(result(4:
end,I)','%10.4f')]);
结果:
2.证明方程
在区间
内有根,并建立收敛的迭代格式,使用任意初值
都收敛,并说明理由
解:
[x,err,k,y]=NewtonDownhill('x^3+2*x-5',1,10^(-5),30)%函数见NewtonDownhill.m
结果:
3.当X=-1,1,2时f(x)分别为-3,0,4利用基函数法,求f(x)的二次插值多项式
解:
x=[-112];
y=[-304];
p=polyfit(x,y,2);
f=poly2str(p,'x');
x1=-5:
0.01:
5;
y1=polyval(p,x1);
plot(x1,y1,x,y,'o');
legend(['f(x)=',f],'节点');
结果:
4.已知x、y的值,用线性插值和二次插值计算x=0.54的近似值
x
0.4
0.5
0.6
0.7
0.8
y
-0.916291
-0.693147
-0.510826
-0.357765
-0.223144
解:
x=[0.40.50.60.70.8];
y=[-0.916291-0.693147-0.510826-0.357765-0.223144];
x0=0:
0.01:
1;
p1=newpoly(x,y,1,0.54);%函数见newpoly.m
y1=polyval(p1,0.54);
p2=newpoly(x,y,2,0.54);
y2=polyval(p2,0.54);
y01=polyval(p1,x0);
y02=polyval(p2,x0);
subplot(1,2,1),plot(x,y,'o',x0,y01,0.54,y1,'r*');
h1=legend('插值节点',['N1(x)=',poly2str(p1,'x')],['N1(0.54)=',num2str(y1)]);
set(h1,'Location','SouthEast','FontSize',20);
subplot(1,2,2),plot(x,y,'o',x0,y02,0.54,y2,'r*');
h2=legend('插值节点',['N2(x)=',poly2str(p2,'x')],['N2(0.54)=',num2str(y2)]);
set(h2,'Location','SouthEast','FontSize',20);
结果:
5.用最小二乘法求一个二阶方程
,使其与下列数据相拟合,请求均方误差,绘图
x
-1.0
-0.5
0.0
0.5
1.0
1.5
2.0
y
-4.447
-0.452
0.551
-0.048
0.447
0.549
4.552
解:
%%期末作业No.5:
方法1用函数lsqcurvefit实现
xdata=[-1.0-0.50.00.51.01.52.0];
ydata=[-4.447-0.4520.5510.048-0.4470.5494.552];
F=inline('x
(1)+x
(2).*xdata.^2','x','xdata');
x0=[0;0];
[x,resnorm]=lsqcurvefit(F,x0,xdata,ydata);
plot(xdata,x
(1)+x
(2).*xdata.^2,xdata,ydata,'*r');
legend(['y=',poly2str([x
(2)0x
(1)],'x'),...
',\delta=',num2str(sqrt(resnorm))]);
%%期末作业No.5:
方法2求内积解方程组
xdata=[-1.0-0.50.00.51.01.52.0];
ydata=[-4.447-0.4520.5510.048-0.4470.5494.552];
A=zeros(2,2);
B=zeros(2,1);
fori=1:
7
A(1,1)=A(1,1)+1^2;
A(1,2)=A(1,2)+xdata(i)^2;
A(2,2)=A(2,2)+xdata(i)^4;
B(1,1)=B(1,1)+ydata(i);
B(2,1)=B(2,1)+xdata(i)^2*ydata(i);
end
A(2,1)=A(1,2);
x=A\B;%等价于inv(A)*B
delta=0;
fori=1:
7
delta=delta+((x
(1)+x
(2)*xdata(i)^2)-ydata(i))^2;
end
delta=sqrt(delta);
plot(xdata,x
(1)+x
(2).*xdata.^2,xdata,ydata,'*r');
legend(['y=',poly2str([x
(2)0x
(1)],'x'),...
',\delta=',num2str(delta)]);
结果:
6.利用
(1)科特斯算法,
(2)高斯算法,(3)龙贝格算法计算
解:
%
(1)NewtonCotes
[y,Ck,Ak]=NewtonCotes(@(x)(x./(4+x.^2)),0,1,4)%函数见NewtonCotes.m
结果:
y=0.1116
Ck=0.07780.35560.13330.35560.0778
Ak=0.07780.35560.13330.35560.0778
%
(2)GaussLegendre
y=GaussLegendre('x./(4+x.^2)',0,1,4)%函数见GaussLegendre.m
结果:
y=0.1116
%(3)Romberg
[y,T,err,h]=Romberg('x./(4+x.^2)',0,1,4)%函数见Romberg.m
结果:
y=0.1116
T=0.1000000
0.10880.111800
0.11090.11160.11160
0.11140.11160.11160.1116
err=2.1240e-006
h=0.1250
7.利用牛顿弦切法求非线性方程
在0.2附近的根
解:
[x,err,k,y]=NewtonDownhill('1-exp(-x^2)',0.2,10^(-5),30)%函数见NewtonDownhill.m
结果:
8.已知
实现高斯-赛德尔迭代,要求精度10-4
解:
A=[521;-112;2-310];
b=[-12;20;3];
A\b%精确解
[x,k,flag]=SOR(A,b,1e-4,1,100)%函数见附件SOR.m,w=1时即为高斯塞德尔迭代
结果:
ans=-5.8991
6.9633
3.5688
x=-5.8991
6.9633
3.5688
k=66
flag=1
平时作业
1.已知函数
值及差商表,求
(1)
来近似
(2)
和
来近似
,并比较
(1)和
(2)的误差
0.4
0.55
0.65
0.8
0.9
1.05
解:
见作业本Page1
2.已知
和
,计算
,并求
解:
x=[1347];
y=[021512];
p=newpoly(x,y,3);%函数见newpoly.m
x1=0:
0.1:
10;
y1=polyval(p,x1);
plot(x1,y1,x,y,'ro');
h=legend(['N3(x)=',poly2str(p,'x')],'插值节点');
set(h,'Location','SouthWest');
结果:
3.已知离散数据点
用
(1)左矩形公式
(2)中矩形公式(3)右矩形公式(4)Newton-Cotes公式,求
解:
x=[1.82.02.22.42.6];
y=[3.120144.425696.042418.0301410.46675];
qleft=rectint(x,y,x
(1),x(end),'left')%函数见rectint.m
qright=rectint(x,y,x
(1),x(end),'right')
qmiddle=rectint(x,y,x
(1),x(end))
[y,Ck,Ak]=NewtonCotes([x;y]')%函数见NewtonCotes.m结果:
qleft=4.3237
qright=5.7930
qmiddle=5.0583
y=5.0329
4.用
(1)复化梯形法
(2)复化辛普森法,求
,要求具有6位有效数字
解:
y1=mulNewtonCotes('exp(x)',0,1,1,Nan,1e-6)%函数见mulNewtonCotes.m
y2=mulNewtonCotes('exp(x)',0,1,2,NaN,1e-6)
结果:
y1=1.7183
y2=1.7183
5.用龙贝格算法求
解:
[y,T,err,h]=Romberg('sin(x)./x',0,1,5)%函数见Romberg.m
结果:
y=0.9461
T=0.9207000
0.93980.946100
0.94450.94610.94610
0.94570.94610.94610.9461
err=6.6324e-008
h=0.1250
6.借助三次勒让德多项式构造三点高斯公式
解:
推导过程见作业本Page6
7.已知方程
的精确解为
,用迭代法求近似解,要求精度
解:
[x,err,k,y]=NewtonDownhill('x-exp(-x)',0.2,1e-5,30)%函数见NewtonDownhill.m
结果:
8.用下列方法求方程
的根,精度要求
(1)牛顿法:
(2)弦截法:
(3)两步法:
解:
%
(1)牛顿法
[x,err,k,y]=NewtonDownhill('4*cos(x)-exp(x)',pi/4,1e-4,30)%函数见NewtonDownhill.m
结果:
%
(2)弦截法
[x,err,k,y]=secant('4*cos(x)-exp(x)',pi/4,pi/2,1e-6,20)%函数见secant.m
结果:
%(3)两步法
9.解方程
(1)用Jacobi迭代法
(2)用Gauss-Seidel迭代法(3)用SOR法(4)画SOR法程序流图
解:
A=[15-3;5-21;21-5];
b=[24-11]';
%对A|b进行行变换,使A为严格对角占优阵
%如果A为严格对角占优阵,则解Ax=b的Jacobi迭代法和Gauss-Seidel迭代法均收敛
A=[5-21;15-3;21-5];
b=[42-11]';
A\b%正确答案
%
(1)Jacobi迭代
[x,k,flag]=jacobi(A,b,1e-5)%函数见Jacobi.m
结果:
x=1.0000
2.0000
3.0000
k=17
flag=1
%
(2)Gauss-Seidel迭代
[x,k,flag]=SOR(A,b,1e-5,1)%函数见SOR.m
结果:
x=1.0000
2.0000
3.0000
k=12
flag=1
%(3)SOR法
w=[1:
20]*0.1;
fori=1:
20
[x,k,flag]=SOR(A,b,1e-5,w(i));%函数见SOR.m
result(:
i)=[w(i);flag;k;x];
end
[CI]=min(result(3,:
));
plot(w,result(2,:
).*result(3,:
),w(I),C,'r*');xlabel('w');ylabel('k');
legend('k-w曲线',['k=',num2str(C),',\omega=',num2str(w(I))]);
title(['方程组解为:
',num2str(result(4:
end,I)','%10.4f')]);
结果:
%(4)SOR法程序流图
%见作业本Page9
附录:
函数
见下一页
Matlab版本:
7.12.0.635(R2011a)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 考试 复习题 matlab 程序 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)