1、 课程设计报告课程设计报告 题目:数值分析课程设计报告 学学 院院 理学院 班班 级级 数学与应用数学 2010 级 学生姓名学生姓名 学学 号号 提交日期提交日期 2013 年 8 月 20 日 数值分析课程数值分析课程设计报告设计报告 设计题一 一要求 编写解线性代数方程组的列主元高斯消去法的函数,并调用该函数计算某个 9 阶以上的非奇异阵 A 的逆矩阵。通过计算 AA-1检查答案,并不使用 inv(A)所 得结果和运行时间进行比较。 二设计思路 先确定求逆矩阵 A 为方阵,构造 n*2n 矩阵 C,使得 C=A+E; 令 i=1,2,3n,找出第 i 列中从 i 到 n 的绝对值最大元素
2、 C(k,i),如果 k=I, 则两行调换位置,并且把换位信息传给记录矩阵 flag,同时对第 i 行进行化一处 理,对第 i+1 行到 n 行通过行列变换使得 C:,i=0,最后得到 C 为前 n*n 是上三 角的单位阵; 通过行列变换把矩阵 C 的前 n*n 部分化成单位阵; 把 C 的后 n*n 部分赋给 B,则 B 就是所求的逆矩阵。 三程序清单 function B=inv_dm(A) %用途:列主元高斯消去法求逆矩阵 %A-原矩阵 %B-逆矩阵 n,n=size(A); B=zeros(n,n); C=zeros(n,2*n); for i=1:n for j=1:n C(i,j)
3、=A(i,j); end for k=n+1:2*n if k=n+i C(i,k)=0; else C(i,k)=1; end end end %构造C=A+E flag=1:n; %记录行顺序向量 for i=1:n-1 t=find(abs(C(i:n,i)=max(abs(C(i:n,i); %寻找最大元素 t=t(1)+i-1; flag(i)=t; if t=i p=C(i,:);C(i,:)=C(t,:);C(t,:)=p; %换位 end if C(i,i)=0 error(矩阵不可逆); end C(i,:)=C(i,:)/C(i,i); for j=i+1:n C(j,:)
4、=C(j,:)-C(i,:)*C(j,i); end end C(n,:)=C(n,:)/C(n,n); %因为循环结构问题,所以Cn,:并没有化一,所以在最后才把最后一行化一 for i=n:-1:2 for j=1:i-1 C(j,:)=C(j,:)-C(i,:)*C(j,i); end end %通过行变换,使得C的前n列为单位阵形式 for i=n:-1:1 t=flag(i); if t=i p=C(:,t);C(:,t)=C(:,i);C(:,i)=p; end end %通过行变化矩阵还原行的顺序 for i=1:n for j=1:n B(i,j)=C(i,n+j); end
5、end %将C的后n列赋给B矩阵 四程序运行操作过程与输出结果 操作时间 给出所要求逆的矩阵 A: 执行 inv_dm(A) 执行 inv(A) 检验正确性 显然从数量级上我们可以容易判断这是一个单位阵, 负号的出现是由于计算机默 认误差造成细小误差。 设计题二 一要求 对于迭代法,)2, 1 ,0(99.0 2 1 kxxx kkk , 它显然有丌动点0 * x。 试丌用 判定收敛阶的定理,设计 1 至 2 个数值实验(其中必须有一个丌是直接用收敛 阶的定义)得到收敛阶数的大概数值。 二设计思路 求出丌动点,利用 fixed.m 函数: 确定包含丌动点的区间a,b,此处令 a=-0.5,b=
6、0.5, 接着从 b 开始迭代, 利用迭代公式,以 x0=0.5 开始迭代,终止条件为 abs(x-x0)=1e-6 戒者迭代次数超过了 10000 次,最终迒回丌动点 * x 计算收敛阶 m,利用 jie.m 函数: 1. 由 知 道 当, 所 以 根 据 收 敛 阶 公 式 , 其 中C为 非 零 常 数 , 转 化 为 2.从1开始找出满足的p,如果p丌满足, 令p=p+1, 直至找到满足条件的 p. 3.迒回收敛阶 n=p. 三程序清单 1.求丌动点函数 fixed.m function x=fixed(x0,e) %用途-求不动点 %x0-初值,abs(x0)=e) x=0.99*x0-x02; n=n+1; end %循环体 x=x0; 2.求收敛阶函数 jie.m function n=jie(x0) %用途-求阶函数