计算方法实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、用列主元Gauss 消去法解线性方程组Ax b =,其中:
810 2 31-1 3.712 4.623,2-2 1.072 5.6433A b -⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
。 1)算法组织
1. For k=1,2,…,n -1 1.1 找满足ik k
i k
max k ααμ≥=的下标k μ
1.2 If 0=k k μα then 输出错误信息;stop 1.3 For
j=1,2,…n
1.3.1 j kj k μαα⇔
1.4 k k μββ⇔
1.5 For i=k+1,k+2,…n
1.5.1 ik kk ik /ααα⇒ 1.5.2 For j=k+1,k+2,…,n
1.5.
2.1
ik kj ik ij αααα⇒-
1.5.3 i ik i βαβ⇒-
2.
[回代过程]
2.1 n nn n x /⇒αβ
2.2 For k=n-1,n-2,…,1
2.2.1 k kk n
k j j ki k x /x ⇒⎪⎪⎭
⎫
⎝
⎛
-
∑+=ααβ1 2)计算结果与结果分析
列主元Gauss 消去法解线性方程组,在消去过程中,适当交换方程顺序,使绝对值最大的一个换到(k,k )位置,保证了消去过程的
顺利进行及计算解的精确度。
2、矩阵T LDL 分解与Cholesky 分解
求矩阵()2020ij A α⨯=的T LDL 分解与Cholesky 分解,其中 ,min(,),ij i i j
i j i j
α=⎧=⎨
≠⎩ 。
1)算法组织 1.1) 矩阵T LDL 分解
本算法计算分解式T A LDL =,A 只需给出下三角部分的元,L 存于A 的下三角部分,D 存放于A 的对角线上。
1. For k=1,2,…,n
1.1 For p=1,2,…,k-1
1.1.1
p
kp pp r ⇒αα
1.2 ∑-=⇒∙-1
1
k p kk
p kp kk r ααα
1.3 If
=kk α then 输出错误信息;stop
else
1.4
For i=k+1,k+2,…,n
ik kk k p p ip ik /r αααα⇒⎪
⎪⎭⎫
⎝⎛-∑-=11
1.2) Cholesky 分解
本算法n 阶对称正定矩阵A ,计算Cholesky 矩阵G ,其元存放于A 矩阵的(i ,k )位置上。
1. ()1121
11αα⇒
2. For i=2,3,…,n
2.1 For j=1,2,…,i-1
ij jj j p jp ip ij /ααααα⇒⎪
⎪⎭⎫
⎝⎛-∑-=1
1
2.2
ii
i p ip ii ααα⇒⎪
⎪⎭
⎫ ⎝⎛-∑-=2
1
1
12
2)计算结果与结果分析
当A对称时,A=LDL T;进一步,如果A还是正定矩阵,则A=GG T,G 为Cholesky三角阵。
3、求三对角方程组Tx f
的解,其中:
11000121000
13100014100015T ⎡⎤
⎢⎥⎢⎥
⎢⎥=⎢⎥
⎢⎥⎢⎥⎣⎦
,125(,,
,)T x x x x =,(3,8,15,24,29)T f =。
1)算法组织
本算法解三对角线性方程组,系数存于数组a 、b 和c 中,d 是右端向量。
1.
11μ⇒b ,11y d ⇒
2. For k=2,3,…,n 2.1 k
k k l /a ⇒-1μ
2.2 k
k k k c l b μ⇒∙--1 2.3 k
k k k y y l d ⇒∙--1
3.
n
n n x /y ⇒μ
4. For k=n-1,n-2,…,1 4.1
()k
k
k k k x /x c y ⇒∙-+μ1
2)计算结果与结果分析
矩阵的LU 分解同未选主元的Gauss 消去法完全等价,故一般情况下,算法TSS 不一定能顺利进行,或会产生大的误差。但本题中的矩阵是严格对角占优的,故不必进行行与列的交换,就能保证各步的主元就是绝对值最大的元。
4、用Jacobi 和Gauss Seidel -方法解线性方程组
1234 0.78 -0.02 -0.12 -0.140.76-0.02 0.86 -0.04 0.060.08-0.12 -0.04 -0.72 -0.08 1.12-0.14 0.06 -0.08 0.740.68x x x x ⎧⎫⎧⎫⎧⎫⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪
=⎨⎬⎨⎬⎨⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪
⎪⎩⎭⎩⎭⎩⎭
1)算法组织 1.1) Jacobi 迭代
此种迭代方式的数学依据是:()
ii n i j j j ij i k i x x ααβ/10)
(⎪⎪⎪⎭
⎫
⎝⎛-=∑≠=
本算法用Jacobi 迭代求方程组的解,初始向量必须赋予()0x 中,结果在x 中。
1.
For
k=1,2,…, max N 1.1 For
i=1,2,…,n
1.1.1 ()
i ii n i j j j ij i x x ⇒⎪⎪⎪⎭
⎫
⎝⎛-∑≠=ααβ/10
1.2 ()e x x max i i i
⇒-0
1.3 If ε 1.4 For i=1,2,…,n 1.4.1 ()0i i x x ⇒ 2. 输出错误信息:“不收敛”;stop 1.2) Gauss Seidel -迭代 本算法用Gauss-Seidel 迭代解方程组,要求给出的初始向量赋予x 中,结果也在x 中。 1. For i=1,2,…,n 1.1 ()0i i x x ⇒ 2. For k=1,2,…,max N