数值实验报告_第1页
数值实验报告_第2页
数值实验报告_第3页
数值实验报告_第4页
数值实验报告_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

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

文档简介

1、重 庆 交 通 大 学学 生 实 验 报 告实验课程名称 计 算 方 法 开课实验室 数学实验室 学 院 年级 专业班 学 生 姓 名 学 号 开 课 时 间 2013 至 2014 学年 第 1 学期假设合理优良中差建模求解全面优良中差结果分析完善优良中差文档清晰优良中差综合成绩教师姓名 目 录实验一 列主元消去法1实验二 高斯-赛德尔迭代法8实验三 拉格朗日插值法14计算方法实验报告实验一 列主元消去法一、实验目的:1)掌握列主元消去法的基本思想。2)了解数值计算解线性方程组的实现范围、计算公式。3)培养上机编程及调试的能力。二、实验设备和实验环境操作系统: Windows XP Prof

2、essional 软件: MATLAB7.0或Visual C+ 6.0三、实验内容及要求:对于线性方程组 ,记方程组的系数矩阵为: , , 用高斯列主元消元法求解。并用高斯完全主元消去法和列主元消去法进行比较,同时得出高斯列主元消去法的优缺点。四、算法描述:1. 消元过程对(1)选主元:(a)按列选主元,即确定,使得(b)若,停止计算(c)若(进行交换) , (2)对 对 (3)2回代过程(a)若,输出失败信息,停止计算(b) (c)对 注: 在计算程序中对的判断用(是预先设置的很小正数)四、实验步骤与结果分析(一) 实验源程序function x=liezhuyuan(A,b)%列主元消去

3、法% A,b 线性方程的系数矩阵% x 求解函数向量n=length(A);x=zeros(n,1);c=zeros(1,n);t=0;for i=1: n-1 max=abs(A(i,i); m=i; % 寻找最大主元 for j=i+1:n if maxabs(A(j,i) max=abs(A(j,i); m=j; end end if m=i % 调换矩阵的两行 for k=1:n c(k)=A(i,k); A(i,k)=A(m,k); A(m,k)=c(k); end t=b(i); b(i)=b(m); b(m)=t; end for k=i+1:n % 消元 for j=i+1:n

4、 A(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i); end b(k)=b(k)-b(i)*A(k,i)/A(i,i); A(k,i)=0; endendx(n)=b(n)/A(n,n); for i=n-1:-1:1 %迭代求解 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j); end x(i)=(b(i)-sum)/A(i,i);endfunction x=wanquanxiaoyuan(A,b) %完全消去法% A,b 线性方程的系数矩阵% x 求解函数向量n=length(A);x=zeros(n,1);xx=zeros(n,1);c=

5、zeros(1,n);t=0;for i=1:n xx(i)=i;endfor i=1:n-1 max=abs(A(i,i); m1=i; % 横向寻找最大主元 m2=i;% 纵向寻找最大主元 for j=i:n for k=i:n if maxabs(A(j,k) max=abs(A(j,k); m1=j; m2=k; end end end if m1=i % 调换矩阵的两行 for k=1:n c(k)=A(i,k); A(i,k)=A(m1,k); A(m1,k)=c(k); end t=b(i); b(i)=b(m1); b(m1)=t; for q=1:n if xx(q)=m1%

6、记录换行的下标 xx(q)=i; xx(i)=m1; end end end if m2=i for k=1:n c(k)=A(k,i); A(k,i)=A(k,m2); A(k,m2)=c(k); end end for k=i+1:n % 消元 for j=i+1:n A(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i); end b(k)=b(k)-b(i)*A(k,i)/A(i,i); A(k,i)=0; endendx(n)=b(n)/A(n,n);for i=n-1:-1:1 %迭代求解 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j);

7、 end x(i)=(b(i)-sum)/A(i,i);endfor i=1:n% 回归x值下标的位置 for j=1:n if xx(i)=j temp=xx(i); xx(i)=xx(j); xx(j)=temp;temp=x(i); x(i)=x(j); x(j)=temp; end endend(二) 实验数据MATLAB 程序如下: 程序(1) 程序(2)(三) 实验结果分析结果:程序(1)运行结果: 误差分析: 程序(2)运行结果: 误差分析: 分析:高斯完全主元消去法和高斯列主元消去法相比较,每步消元过程所选主元的范围更广,故它对控制舍入误差更有效,求解结果更加精确可靠。但高斯完

8、全主元消去法在计算过程中,需要同时作行与列互换,因而程序比较复杂,计算时间比较长。高斯列主元消去法的精度虽低于高斯完全主元消去法,但是其计算简单,工作量大大减少,经过理论与实践经验均表明高斯列主元消去法具有良好的数值稳定性,是求解中小型稠密线性方程组的最好方法之一。实验二 高斯-赛德尔迭代法一、实验目的1)了解迭代法的基本思想及原理2)判断Jaconbi迭代、Guass-Seidei迭代对任意向量的收敛性及其应用价值3)实现Guass-Seidei迭代算法的程序设计。二、实验设备和实验环境操作系统: Windows XP Professional 软件: MATLAB7.0或Visual C+

9、 6.0三、实验内容及要求:对于线性方程组 ,记方程组的系数矩阵为: , , 用Guass-Seidei迭代法求解。并且用Jaconbi迭代法和列主元消去法进行算法比较,同时得出Guass-Seidei迭代法的优劣性,从而得出一些结论。四、算法描述:1. 选取迭代初值。2. 将方程组 化为等价方程组:将老值 加工成新值,得到: 。3. 若迭代偏差小于指定精度,则输出结果,终止计算;否者执行下一步。4. 若迭代次数k小于事先设定的最大迭代次数N,则转入第2步继续迭代;否则输出迭代失败的标志,并终止计算。五、实验步骤与结果分析(一) 实验源程序function x,k,xx=GuassSeider

10、(A,b,x0,emg,N)% A 是线性方程组的系数矩阵% b 右端向量% x0 迭代的初始值向量% emg 控制精度% N 迭代的上限,如果迭代的次数大于N时候,则迭代失败% x 表示用迭代法求的的线性方程的近似解% k 表示迭代的次数% xx 表示迭代过程中的变量变换If nargin5 N=400;endif narginemg)&(ki sum=sum+A(i,j)*x1(j); end if jN warning(迭代次数达到上限); return ; endendx=x1;xx=xx;(二)实验数据MATLAB 程序如下: 程序(1) 程序(2)程序(3) (三) 实验结果分析结

11、果:程序(1)运行结果: 程序(2)运行结果: 程序(3)运行结果:分析:从程序(1)可以得出Guss-Seidel迭代法的收敛速度明显比Jacobim迭代法快得多,因为Guss-Seidel迭代法迭代法利用了迭代过程中的新信息,从而加快收敛速度。从程序(2)可以看到Guss-Seidel迭代法不起作用了,没有列主元消元法好。在迭代过程中,Guss-Seidel迭代法必须保证迭代过程是收敛的,一个发散的迭代过程,即使迭代千万次,其计算结果也毫无价值。从程序(3)可以看出Guss-Seidel迭代法发散,而Jacobim迭代法收敛,这也显现出Jacobim迭代法在某些线性方程组中比Guss-Se

12、idel迭代法优越。总之,每一种迭代法都有自己的优势与不足,在实际应用中,我们要善于寻找最优方案。实验三 拉格朗日插值法一、实验目的1)掌握常用的插值方法,求函数的近似表达式,解决实际问题。2)明确插值多项式和分段插值多项式的优缺点。3)学会插值方法的程序设计。二、实验设备和实验环境操作系统: Windows XP Professional 软件: MATLAB7.0或Visual C+ 6.0 三、实验内容:已知实验数据如下表所示,试用拉格朗日插值多项式求 的值。 四、算法描述:已知为不超过次多项式且满足 易知Ln(x) = l0(x) y0 + + ln(x)yn,其中li(x)均为n次多

13、项式,再由xj(j i)为次多项式li(x)的n个根知,其中Ak为待定系数,由 ,得到 故:对应每一节点xi(0 i n),都能求出满足插值条件的n次插值多项式,从而可以求出n+1个n次插值多项式l0(x), l1(x), , ln(x)。进而,根据插值节点x求出插值结果。五、实验结果与分析(一) 实验源程序function f,f0=Languages(x,y,x0)%求已知数据点的拉格朗日插值多项式% x: 已知数据点x坐标向量% y: 已知数据点y坐标向量% x0: 插值点x的坐标% f: 求得的拉格朗日插值多项式% f0: x0处的插值syms t;if(length(x)=length(y) n=length(x);else disp(x和y的维数不一样!); return;end %检错f=0.0;for i=1:n p=y(i); for(j=1:i-1) p=p*(t-x(j)/(x(i)-x(j); end; for(j=i+1:n) p=p*(t-x(j)/(x(i)-x(j); end; f=f+p; endf0=subs(f,t,x0) (二) 实验数据 MATLAB 程序(1)如下: MATLAB 程序(2)如下: (二) 实验结果分析程序结果:运行结果(1):运行结果(2):分析:Lagra

温馨提示

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

评论

0/150

提交评论