当前位置:文档之家› 西安交通大学计算方法A实验报告

西安交通大学计算方法A实验报告

实验一 矩阵的分解一、实验目的掌握矩阵的分解原理和一般方法,学会利用矩阵分解直接求解线性方程组。

二、实验内容求矩阵()2020=ij A α⨯的T LDL 分解与Cholesky 分解,其中,min(,),ij i i ji j i j α=⎧=⎨≠⎩。

三、问题分析1. Cholesky 分解Cholesky 分解是针对被分解矩阵为对称正定的情况给出的。

分解步骤如下:11g =1111/y b g =,1111i i g g α=2i n =;DO2j n =jj g = IF 0jj g < STOP ,JUMP TO (5)DO 1i j n =+11j ij ik kj k ij jjg g g g α-=⎛⎫- ⎪⎝⎭=∑ji ij g g =11j i ik k k i jjb g y y g -=⎛⎫- ⎪⎝⎭=∑END DOEND DO2. T LDL 分解T LDL 分解是针对Cholesky 分解中的开平方运算进行的改进。

分解步骤如下:11i i r α=,1111/i i r r r =,11y b = 1i n =DO2i n =DOj in =11i ij ij ik kj k r l r α-=⎛⎫=- ⎪⎝⎭∑/ji ij ii l r r =11i i i ik k k y b l b -=⎛⎫=- ⎪⎝⎭∑END DOEND DO四、matlab 求解分别写出TLDL 分解和Cholesky 分解的函数程序gaijinsqrt.m 和.cholesky m ,调用格式如下:1. [index,x,r]=gaijinsqrt(A,b) 参数说明:A 和b 分别是线性代数方程组Ax =b 的系数矩阵和右端向量;输出x 为解向量。

[index,x,g]=Cholesky(A,b)参数说明:A 和b 分别是线性代数方程组Ax =b 的系数矩阵和右端向量;输出x 为解向量。

然后写出主程序2homework .m 如下:%生成矩阵AA=zeros(20,20);for i=1:20for j=1:20if i~=jif i>jA(i,j)=j; else A(i,j)=i;endelse A(i,j)=i;endendendb=ones(20,1);for i=1:10b(i)=i; b(21-i)=i;end%LDLt 分解[index1,x1,r]=gaijinsqrt(A,b) %Cholesky 分解[index2,x2,g]=Cholesky(A,b)gaijinsqrt.m 和.cholesky m 见附件五、实验结果选取b=[1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1]。

实验结果如下:202011=11D ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,20200010=10001110L ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,2020111=111111G ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦实验二 三对角方程组Tx f =的求解一、 实验目的掌握三对角方程组Tx f =求解的原理和方法。

二、 实验内容求三对角方程组Tx f =的解,其中:1 1 0 0 012 1 0 00 13 1 00 0 14 10 0 0 1 5T ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦,()12345,,,,T x x x x x x =,()3,8,15,24,29Tf =。

三、 问题分析追赶法的算法组织如下:(1) 输入三对角矩阵T 和右端向量f ;(2) 将T 压缩为四个一维数组{}{}{}{}i i i i a b c d 、、、,将分解矩阵压缩为三个一维数组{}{}{}i i i l r y 、、(3) 对T 做Crout 分解(也可以用Doolittle 分解)导出追赶法的计算步骤如下:11111,d l b y l ==DO2i n =()11111, ,i i i i i i i i i i i ir c l l b a r y d a y -----==-=-END DO(4) 回代求解xn n x y =DO 11i n =-1i i i i x x r x +=-END DO(5) 停止,输出结果四、matlab求解zhuigan m,调用格式如下:编写追赶法的函数程序.[x,r1]=zhuigan(A,b)参数说明:A和b分别是线性代数方程组的系数矩阵和右端向量,x是求得的解向量,r1是分解矩阵。

homework3m如下:编写主程序.T=[1 1 0 0 0;1 2 1 0 0;0 1 3 1 0;0 0 1 4 1;0 0 0 1 5];f=[3;8;15;24;29];%调用函数zhuigan.m[x,r]=zhuigan(T,f);zhuigan m见附件。

函数文件.五、实验结果x 。

(1.0000 2.0000 3.0000 4.0000 5.0000)实验三 线性代数方程组的迭代求解一、 实验目的掌握线性代数方程组的迭代求解的原理和基本方法Jacobi 迭代法和Gauss Seidel -法。

二、 实验内容用Jacobi 迭代法和Gauss Seidel -迭代法求解下列方程组:1234 0.78 -0.02 -0.12 -0.140.76-0.02 0.86 -0.04 0.06 0.08-0.12 -0.04 -0.72 -0.08 1.12-0.14 0.06 -0.08 0.74 0.68x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦ 并比较迭代次数,使误差小于310-。

三、 问题分析将原始线性代数方程组Ax b =改写为()x x ϕ=的形式,其中()x ϕ为x 的矩阵函数。

于是可以得到迭代格式:(1)()()k k x x ϕ+=,此即为Jacobi 迭代法的迭代格式。

如果在计算(1)k x+时,将已经算出的分量立即代换()k x 对应分量,则得到Gauss Seidel -迭代法的迭代格式。

1. Jacobi 迭代法的算法组织如下: (1) 给出迭代格式(1)()()k k xx ϕ+=(2) 给出迭代初始向量0x 、允许误差ε和最大迭代次数N (3) 按照迭代格式(1)()()k k xx ϕ+=进行迭代,直至达满足迭代停止条件(1)()1max k k i i i nx x ε+≤≤-<(4) 停止,输出结果2. Gauss Seidel -迭代法的算法组织如下: (1) 给出迭代格式(1)()()k k xx ϕ+=(2) 给出迭代初始向量0x 、允许误差ε和最大迭代次数N (3) 按照迭代格式(1)()()k k xx ϕ+=,并且将已经算出的分量立即代换()k x对应分量进行迭代,直至达满足迭代停止条件(1)()1max k k ii i nx x ε+≤≤-<(4) 停止,输出结果四、 matlab 求解编写Jacobi 迭代法的函数.Jacobi m 和Gauss Seidel -迭代法函数.Gauss Seidel m -,他们的调用格式如下:1、 [x,k]=jacobi(A,b,x0,N,epsilon)参数说明:A 和b 分别是线性代数方程组的系数矩阵和右端向量,x0是迭代初始向量,N 是最大迭代次数,epsilon 是迭代允许误差,x 是求得的解向量,k 是程序结束时迭代次数。

2、 [x,k]=gaosisidel(A,b,x0,N,epsilon)参数说明:A 和b 分别是线性代数方程组的系数矩阵和右端向量,x0是迭代初始向量,N 是最大迭代系数,epsilon 是迭代允许误差,x 是求得的解向量,k 是程序结束时迭代次数。

编写主程序homework3.m 如下:A=[0.78 -0.02 -0.12 -0.14;-0.02 0.86 -0.04 0.06;-0.12 -0.04 -0.72 -0.08;-0.14 0.06 -0.08 0.74]; b=[0.76;0.08;1.12;0.68]; x0=[0 0 0 0]; N=1e+3;epsilon=1e-3;%Jacobi 迭代法[x1,k1]=jacobi(A,b,x0,N,epsilon); %Gauss-Sidel 迭代法[x2,k2]=gaosisidel(A,b,x0,N,epsilon);五、 实验结果1(0.8570 -0.0326 -1.7953 0.8896) , =6x k = 2(0.8569 -0.0326 -1.7954 0.8896) , 4x k ==实验四 多项式插值一、实验目的掌握多项式插值的原理和基本方法。

二、实验内容已知21()(11)125f x x x =-≤≤+,对5,10,20n =1、 计算函数()f x 在点21,(0,1,2,,)i x i i n n=-+=处的值()i f x2、 求插值数据点(){},(0,1,2,,)i ix y i n =的Newton 插值多项式()n N x 和三次样条插值多项式()n S x 3、 对5,20n =,计算21,(110,9099)100k x k k =-+=和相应的函数值(),(),()k n k n k k y f x N x S x =4、 计算()()max n n kk kE N y N x =-,()()max nn k kkE S yS x =-,解释所得到结果。

三、问题分析1. Newton 插值Newton 插值多项式是实质是Lagrange 插值多项式的零次式和一次式的推广,一般形式为:()()()()()()()010201011n n n N x c c x x c x x x x c x x x x x x -=+-+--++---2. 三次样条插值在节点0121()i n n x x x x x x b -<<<<=分成的每个小区间1[,]i i x x -上利用其节点处的二次导数值(即弯矩值)进行线性插值,再在此区间上积分两次,利用节点处的函数值求得两个积分常数,从而得到三次样条函数的M 表达式。

要确定三次样条插值函数,用到()S x 的光滑性,利用三次样条函数在节点处的一阶导数连续得到i M 满足1n -个方程:112,1,2,,1i i i i i i M M M d i n μλ-+++==-其中[]111111116,1,()6,,.i i i i i i i i i i i i i i i i i i i i ih h y y y y d f x x x h h h h h h h h μλμ+--+++++--===-=-=+++三弯矩方程组只有1n -个方程,不能确定1n +未知量(0,1,2,)i M i n =。

相关主题