logo资料库

数值分析 课程设计论文.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 长 春 大 学 学 生 实 习 报 告 [设计名称] 数值分析课程设计 [设计时间] 2009 年 12 月 19 日—2009 年 12 月 21 日 [机器型号] 东芝 M302 [系统环境] Windows XP [报告要求] 1.用Matlab(或 c)语言或你熟悉的其他算法语言编程序,使之尽量具有通用 性。 2.完成计算后写出计算实验报告,内容包括:计算机型号和所用机时,算法步 骤描述,变量说明,程序清单,输出计算结果,结果分析和小结。 3.实习时间: 09 年 12 月 19 日----09 年 12 月 21 日。 [实习题目一] 5 x   1  x    1  2 x   1 2 x 2 4 x 2 3 x 2 12 x    3 20 2 x   3 10 3 x   3      给定方程组 [实习要求] 1 用 G-S 迭代法解该方程组,取初值 X(0)=(0,0,0)T 迭代到‖x(k+1)-x(k)‖∞≤ 10-4 为止 2 讨论迭代法的收敛性 3 输出迭代矩阵 BG 迭代公式,迭代次数及计算结果表[算法描述] 1. 运用 LU 分解得到 L 矩阵和 U 矩阵,将方程组转化为 LUX=b,令 UX=Y, 原方程组转化为 LY=b 和 UX=Y,最后解的原方程组得解 X。 2. 用打印函数输出系数矩阵 A,b,L,U,X 和行列式 A 的值。 3. 根据矩阵条件数估计的定义,通过程序解得 x x 。 [程序清单] function [x,k]=GassSeidelMathod(A,b) k=1; while k>=1 x=GSM(A,b,k); y=x(:,k+1)-x(:,k); f=fanshu(y); if f<=0.0001 break; else 共 7 页 第 1 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 长 春 大 学 k=k+1; end end 学 生 实 习 报 告 function x=GSM(A,b,k) n=length(A);x(1:3,1)=[0 0 0]'; for i=1:n sum1=0;sum2=0; for m=1:i-1 sum1=sum1+A(i,m)*x(m,k); end for m=i+1:n sum2=sum2+A(i,m)*x(m,k); end x(i,k+1)=(b(i)-sum1-sum2)/A(i,i); end function max=fanshu(y) n=length(y); for i=1:2 max=y(1); if y(i+1)>y(i) max=y(i+1); end end function Convergence(A) k=0; [m,n]=size(A); for i=1:m sum(i)=0; for j=1:n sum(i)=sum(i)+abs(A(i,j)); end sum(i)=sum(i)-abs(A(i,i)); if abs(A(i,i))>=sum(i) k=k+1; end end if k==3 else end 'G-S 迭代法收敛' 'G-S 迭代法不收敛' function hanshu1(A,b,v1) D=diag(v1);L=-tril(A-D); U=-triu(A-D);B=inv(D-L)*U 共 7 页 第 2 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 长 春 大 学 f=inv(D-L)*b [输出结果] 学 生 实 习 报 告 [实习题目二] 16   4   8  4 5 4  8 4  22           x 1 x x 2 3       4   3   10       , 即 AX=b 共 7 页 第 3 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 长 春 大 学 学 生 实 习 报 告 [实习要求] 1 用平方根法解上述方程组。 2 讨论当 b 有微小变化,即 b+b=(-4.02, 3.5, 10) T 时,A 是否为病态矩阵。给 出讨论结果。 3 输出分解矩阵 L’及解向量 X 和 detA。 [程序清单] function [L,U]=lu(A) U(1,j)=A(1,j); if j>=2 elseif j>=i L(j,1)=A(j,1)/U(1,1); for k=1: i-1 sum=0; sum=sum+L(i,k)*U(k,j); end U(i,j)=A(i,j)-sum; elseif i<=j for k=1:j-1 sum=0; sum=sum+L(i,k)*U(k,j)); end L(i,j)=(A(i,j)-sum; else end break; function x=gauss(A) [L,U]=lu(A); x=abs(U(1,1)*U(2,2)*U(3,3)) function Pathological(A) FS1=fanshu(A); B=inv(A); FS2=fanshu(B); FS=FS1*FS2; if FS>10 'A 为病态矩阵' else end 'A 不是病态的' 共 7 页 第 4 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 长 春 大 学 学 生 实 习 报 告 function FS=fanshu(A) for i=1:3 sum(i)=0; for j=1:3 sum(i)=sum(i)+A(i,j); end end B=[sum(1) sum(2) sum(3)]'; FS=B(1); for k=1:3 if B(k)>FS FS=B(k); kFS=k; end end; function L=average(A) for i=1:3 sum=0; for j=1:i if i==j for k=1:j-1 sum=sum+L(i,k)^2; end L(i,j)=sqrt(A(i,j)-sum); elseif j
长 春 大 学 学 生 实 习 报 告 L(k,k) = sqrt(A(k,k)-L(k,1:(k-1))*transpose(L(k,1:(k-1)))); %L 的对角元素 for i=(k+1):n L(i,k) = (A(i,k)-L(i,1:(k-1))*transpose(L(k,1:(k-1))))/L(k,k); %L 的第 k 列 for k=2:n end end [输出结果] ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 共 7 页 第 6 页
长 春 大 学 学 生 实 习 报 告 [总结] 通过这次课程实习,我对数值分析这门课的有了一定的认识,初步掌握了 GS 迭代法、LU 分解法、和牛顿求根法等的运用,这对我以后对专业课程的学习有很 大的帮助。同时对计算机程序语言,如 C 语言编程和数学软件 MATLAB 的应用有 了一定的认识了和深入,使我在遇到学习上的困难时可以自己解决。我也将继续 努力学习专业知识。 [参考文献] [1]李庆扬著.数值分析基础教程.高等教育出版社.2004 年 2 月 [2]苏小红等编著.C 语言程序设计教程.电子工业出版社.2002 年 1 月 [3]严蔚敏,吴伟明.数据结构(C 语言版).清华大学出版社.1997 年 4 月 [4]胡良剑,孙晓君。MATLAB 数学实验,高等教育出版社.2006 年 6 月 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 共 7 页 第 7 页
分享到:
收藏