数值分析课程设计_第1页
数值分析课程设计_第2页
数值分析课程设计_第3页
数值分析课程设计_第4页
数值分析课程设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数值分析课程设计冯选李赫李瑞雪实验1非线性方程与方程组数值求解的设计与实现实验2线性方程组直接法的设计与实现实验3线性方程组迭代法的设计与实现实验4多项式插值的设计与实现实验5数值逼近的设计与实现实验6数值积分的设计与实现实验7数值微分的设计与实现实验8常微分方程数值解法的设计与实现题目实验1非线性方程与方程组数值求解的设计与实现实验目的和任务:理解非线性方程与方程组数值求解思想,设计并掌握MATLAB中非线性方程及方程组的数值解法,理解迭代法的收敛性与收敛速度.要求精度为准确到

,给定方程与方程组分别为(1-1)(1-2)牛顿迭代线性迭代斯蒂芬森迭代MATLAB数值计算实验1非线性方程与方程组数值求解的设计与实现实验1非线性方程与方程组数值求解的设计与实现

实验总结:根据实验结果显示,可以看出不动点迭代需要9次迭代,而用斯蒂芬森加速后只需要3次,牛顿法介于其间需要4次。直接使用MATLAB函数fzero需要迭代5次,函数fsolve对(1-2)迭代需要1次,所以通过对(1-1)的实验我们知道斯蒂芬森加速后迭代速度>牛顿法>函数fzero>不动点迭代。实验2线性方程组直接法的设计与实现方程(i)的LU求解解向量x=1.0e+003*1.5926-0.6319-0.4936单位下三角阵L=1.0000000.42191.000000.3279-4.20061.0000上三角阵U=3.01006.03001.990001.6158-2.069600-0.0063index=1方程(ii)的LU求解解向量:x=-0.0000-1.00001.00001.0000单位下三角阵:L=1.0e+006*0.0000000-0.00000.0000000.0000-2.50000.000000.0000-2.40000.00000.0000上三角阵:U=1.0e+007*0.0000-0.000000.00000-0.00000.00000.0000001.50000.57500000.0000index=1LU分解法LU分解法function[x,L,U,index]=LU(A,b)A=LULy=bUx=y实验2线性方程组直接法的设计与实现方程(i)的列主元求解计算结果:解向量:x=1.0e+003*1.5926-0.6319-0.4936

行列式:det=-0.0305index=1计算结果:解向量:x=0.0000-1.00001.00001.0000行列式:det=-762.0001迭代结果:index=1方程(ii)的列主元求解列主元消去法列主元高斯消去法分解function[x,det,index]=Gauss_col(A,b)(A,b)=(E,x)实验2线性方程组直接法的设计与实现系数有扰动的方程(i)列主元消去法系数有扰动的方程(ii)列主元消去法MATLAB数值计算计算结果:解向量:x=119.5273-47.1426-36.8403行列式:det=-0.4070迭代结果:index=1无穷范数结果:>>cond(A,inf)ans=4.2601e+003计算结果:解向量:x=0.0000-1.00001.00001.0000行列式:det=-762迭代结果:index=1无穷范数结果:>>cond(A,inf)ans=12.4016x1=1.0e+003*1.5926-0.6319-0.4936x2=0.0000-1.00001.00001.0000总结线性方程组的直接解法就是“不计舍入误差,经过有限步四则运算,求出方程组精确解的方法”,它是以消去为基础的解法,常用的方法有高斯消去法、列主元高斯消去法、分解法。由于在实际计算中,难免会有舍入误差,因此线性方程组的直接解法求得的是近似解。对于阶数不太高的线性方程组,用直接法比较方便,高斯消元法是直接解法里面最重要的解法。线而由上述问题可知,线性方程组的直接解法经过有限步算数运算,求得方程组的精确解。列主元高斯消去法在实际求解的过程中,用法比较复杂,但求得的结果最接近精确解;在利用LU分解法时,要求系数矩阵的各阶顺序主子式大于0,求解的过程比较方便,但遇到用小主元做除数时,就会使消元的乘数较大,会引起中间结果数量级严重增长,再舍入就会使最后的计算结果不可靠,存在误差。实验3线性方程组迭代法的设计与实现

实验目的和任务:理解线性方程组迭代法思想,设计并掌握MATLAB中线性方程组的迭代法,理解迭代法的收敛性与收敛速度.对于线性方程组,其中为五对角矩阵:

(3-1)实验3线性方程组迭代法的设计与实现(1)雅可比迭代法运行程序:>>b=ones(20,1);>>ep=0.005;>>[x,k,index]=jacobi(A,b,ep)计算结果:x=00000000000000000000k=0index=0运行程序:>>b=zeros(20,1);>>ep=0.005;>>[x,k,index]=jacobi(A,b,ep)计算结果:x=00000000000000000000k=0index=0实验3线性方程组迭代法的设计与实现(2)高斯—塞德尔迭代法运行程序>>b=ones(20,1);>>ep=0.005;>>[x,k,index]=gauss(A,b,ep)计算结果:x=0.48110.57270.63200.65120.66000.66340.66480.66540.66560.66570.66570.66570.66560.66520.66400.66070.65200.63270.57340.4816k=5index=1运行程序>>b=zeros(20,1);>>ep=0.005;>>[x,k,index]=gauss(A,b,ep)计算结果:x=00000000000000000000k=0index=1实验3线性方程组迭代法的设计与实现SOR迭代法:运行程序>>b=ones(20,1);>>ep=0.005;>>x0=zeros(20,1);>>w=1.4;>>[x,k,index]=sor(A,b,x0,ep,w)计算结果:x=0.48160.57340.63280.65210.66100.66430.66570.66630.66650.66660.66650.66630.66640.66650.66450.65940.65200.63420.57270.4818k=6index=1运行程序>>b=zeros(20,1);>>ep=0.005;>>x0=ones(20,1);>>w=1.4;>>[x,k,index]=sor(A,b,x0,ep,w)计算结果:x=-0.0000-0.00000.00000.00000.00000.0000-0.0000-0.00000.00000.00010.0001-0.0003-0.00070.00060.0013-0.0010-0.00080.0010-0.00050.0002k=7index=1实验3线性方程组迭代法的设计与实现总结:通过本次实验了解到线性方程组的迭代解法,在初始向量不变时,改变b的取值,运用雅可比迭代和高斯-赛德尔迭代分别计算并进行比较,从结果中可得出,高斯-赛德尔的收敛速度比雅可比迭代的快。在SOR迭代法的实验中,可以得出,松弛因子的不同影响着迭代速度,在使用SOR进行迭代时,要慎重考虑松弛因子的取值,找到最佳松弛因子,可减少运算时间。结论:雅克比:结果表明迭代方法也是收敛的。高斯——赛德尔:结果表明迭代方法也是收敛的。SOR迭代法:结果表明迭代方法也是收敛的。实验4多项式插值的设计与实现实验目的和任务:理解函数插值的基本原理,设计并掌握MATLAB中拉格朗日插值、分段低次插值的实现.已知数据如下:实验4多项式插值的设计与实现1)设计全区间上拉格朗日插值程序.利用Matlab在第一个图中画出离散数据及拉格朗日插值函数.functionyi=Lagrange(x,y,xi)n=length(x);m=length(y);ifn~=merror('thelengthsofXandYmustbeequel!');return;endyi=zeros(size(xi));fork=1:nw=ones(size(xi));forj=[1:k-1k+1:n]ifabs(x(k)-x(j))<epserror('theDATAiserror!');return;endw=(xi-x(j))/(x(k)-x(j)).*w;endyi=yi+w*y(k);end>>x=0.2:0.2:1;>>y=[0.97986520.91777100.80803480.63860930.3843735];>>xi=0.2:0.1:1;>>yi=Lagrange(x,y,xi);>>plot(x,y,'*',xi,yi)图4.1实验4多项式插值的设计与实现2.分段线性插值与(4.1)作比较利用分段线性插值,画出分段线性插值函数如下:

>>x=0.2:0.2:1;>>y=[0.97986520.91777100.80803480.63860930.3843735];>>xi=0.2:0.01:1;>>yi=interp1(x,y,xi,'linear');>>plot(x,y,'o',xi,yi,'k-')结论:由图(4.2)与图(4.1)对比可知分段线性插值精度比较差,曲线比较生硬不够光滑。

图(4.2)实验4多项式插值的设计与实现3.三次样条插值对于自然边界条件,利用MATLAB在第二个图中画出离散数据,再画出通过表中型值点并满足边界条件的三次样条插值函数如下:

>>x=0.2:0.2:1;>>y=[0.97986520.91777100.80803480.63860930.3843735];>>xi=0.2:0.01:1;>>yi=interp1(x,y,xi,'variational');>>plot(x,y,'o',xi,yi,'k-')

图4.3实验4多项式插值的设计与实现4.三次样条插值对于第一种边界条件,利用MATLAB在第三个图中画出离散数据,再画出通过表中型值点并满足边界条件的三次样条插值函数如下:

>>x=0.2:0.2:1;>>y=[0.97986520.91777100.80803480.63860930.3843735];>>xi=0.2:0.01:1;>>yi=interp1(x,y,xi,'second',0.20271,1.55741);>>plot(x,y,'o',xi,yi,'k-')

(见图4.4)实验4多项式插值的设计与实现小结:从本次实验中可以知道,插值方法有各自的优点也有缺点,在使用时应注意自己解决题的方法选择,拉格朗日插值公式整齐,理论性应用很好,利用计算机很容易实现;分段性插值,能使在计算中不会出现病态;而三次样条插值,能够很好的实现曲线的光滑性,收敛性也很好,一般有二阶光滑度,所以在一些工程中要求线形度高的可利用三次样条插值来实现。

(5)通过实验,谈谈你对插值方法有何理解、三次样条插值有何特点:分段线性插值精度比较低,一样的数据用不同的方法就会有不同的精度,在使用时要慎重考虑方法的选择,三次样条插值精度比较高,也比较光滑实验5数值逼近的设计与实现.

实验目的和任务:理解数值逼近的基本原理,设计并掌握MATLAB中最小二乘拟合的实现.已知数据如下:实验5数值逼近的设计与实现.实验5数值逼近的设计与实现.实验5数值逼近的设计与实现.实验5数值逼近的设计与实现.4.谈一谈对离散数据最小二乘拟合的理解.

最小线性二乘拟合适用于曲线拟合的求解,最小线性二乘拟合对于求解实际问题有很大的帮助,它是离散点的最佳平方逼近,首先要确定是做几次拟合,然后得到法方程,求得最小二乘拟合曲线,在算出平方误差。实验6数值积分的设计与实现实验目的和任务:理解数值积分的基本原理,设计并掌握MATLAB中数值积分的实现.对于积分:实验6数值积分的设计与实现数值积分的设计与实现符号积分:数值积分:symsxs=x^2*exp(-x^2);I=int(s,x,0,2)结果:I=-exp(-4)+1/4*pi^(1/2)*erf(2)fun=inline('x.^2.*exp(-x.^2)');Q1=quad(fun,0,2)结果:Q1=0.4227symsxs=cot(x);I=int(s,x,pi/2,3*pi/4)结果:I=-1/2*log(2)fun=inline('cot(x)');Q1=quad(fun,pi./2,3.*pi./4结果:Q1=-0.3466symsxs=1/(x^2-1);I=int(s,x,2,3)结果:I=-1/2*log(2)+1/2*log(3)

fun=inline('1./(x.^2-1)');Q1=quad(fun,2,3)结果:Q1=0.2027实验6数值积分的设计与实现龙贝格法求积分:(ⅰ)运行程序:>>f=inline('x^2*exp(-x^2)');>>a=0;b=2;n=4;tol=1e-6;>>[T,quad,err,h]=romberg(f,a,b,n,tol)计算结果:龙贝格计算表:T=0.073300000.40450.51490000.41820.42270.4166000.42160.42270.42270.422800.42240.42270.42270.42270.4227积分值:quad=0.4227误差估计:err=8.7091e-005最小步长:h=0.1250(ⅱ)运行程序:>>f=inline('cot(x)');>>a=pi/2;b=3/4*pi;n=4;tol=1e-6;>>[T,quad,err,h]=romberg(f,a,b,n,tol)计算结果:龙贝格计算表:T=-0.39270000-0.3590-0.3478000-0.3498-0.3467-0.346600-0.3474-0.3466-0.3466-0.34660-0.3468-0.3466-0.3466-0.3466-0.3466积分值:quad=-0.3466误差估:err=2.9333e-007最小步长:h=0.0491(ⅲ)运行程序:>>f=inline('1/(x^2-1)');>>a=2;b=3;n=4;tol=1e-6;>>[T,quad,err,h]=romberg(f,a,b,n,tol)计算结果:龙贝格计算表:T=0.229200000.20980.20340000.20450.20280.2027000.20320.20270.20270.202700.20280.20270.20270.20270.2027积分值:quad=0.2027误差估:err=1.4781e-007最小步长:h=0.0625实验6数值积分的设计与实现5点高斯求积公式及复化3点高斯求积公式functionquad=guass_legendre(f,a,b,n)h=(b-a)/n;quad=0;fork=1:nt=[-1/sqrt(3/5),0,sqrt(3/5)];A=[5/9,8/9,5/9];F=feval(f,h/2*t+a+(k-1/2)*h);quad=quad+sum(A.*F);endquad=h/2*quad;输入:f1=inline('x.^2.*exp(-x.^2)');a=0;b=2;n=4;quad=guass_legendre(f1,a,b,n);quad=vpa(quad,7)结果:quad=0.4194083输入:f2=inline('cot(x)');a=pi/2;b=3*pi/4;n=4;quad=guass_legendre(f2,a,b,n);quad=vpa(quad,7)结果:quad=-0.3337198输入:f3=inline('1./(x.^2-1)');a=2;b=3;n=4;quad=guass_legendre(f3,a,b,n);quad=vpa(quad,7)结果:quad=0.2073716实验6数值积分的设计与实现对五点高斯法与复化三点高斯法所得的结果进行比较如下:(i)五点高斯法:0.422720775202602

复化3点高斯:0.422735763060519(ii)五点高斯法:1.542126458733056复化3点高斯:0.925275412602127(iii)五点高斯法:0.202732641800508复化3点高斯:-0.025024125653057实验6数值积分的设计与实现

结论:实验结果可以看出龙贝格的精度最高,再就是五点高斯法,复化3点高斯法依次降低低,龙贝格有误差限的控制,所以精度有误差控制。对于高斯法,其自身的构造性保证了其具有(2n+1)的精度。而对于复化的我们也可以给定误差限,而不停地分段来增加精度,多次可达到精度要求。实验目的和任务:理解数值微分的思想,理解比较求一阶导数的数值方法。对于函数:实验7数值微分的设计与实现实验7数值积分的设计与实现(ⅰ)中心差分:x=2;yy=zeros(6,9);h=[1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.001];fori=1:6forj=1:9yy(i,j)=(exp(1/(x(i)+h(j)))-exp(1/(x(i)-h(j))))/(2*h(j));end;end;yy=vpa(yy,6)计算x=2时的导数,利用中心差分公式取不同的步长h,由计算结果可知h=0.01的逼近效果较好(ⅱ)数值积分求导:d1=diff(exp(1/x))d1=-exp(1/x)/x^2functiony=f(x)y=-exp(1/x)/x^2所取的求导点:x=0.50000.80001.10001.40001.70002.0000

准确解为:y=-29.5562-5.4537-2.0513-1.0422-0.6231-0.4122(ⅲ)理查森外推计算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论