当前位置:文档之家› 数值分析(08)Gauss消元法解线性方程组

数值分析(08)Gauss消元法解线性方程组

[n n]=size(A); % 确定A的维数 X=zeros(n,1); for k=1:n-1 for i=k+1:n % 消元过程 m=A(i,k)/ A(k,k); % A(k,k) ≠0
A(i,k+1:n)= A(i,k+1:n)-m*A(k,k+1:n);
b(i)= b(i)-m*b(k); end
MATLAB实现:

x=A\b
本章介绍求解n阶线性方程组的数值方法 a11 x1 a12 x2 a1n xn b1 a21 x1 a22 x2 a2 n xn b2 an1 x1 an 2 x2 ann xn bn
end X=backsub(A, b);
%回代求解
消元法是解线性方程组的基本方法,具有计算简 单的优点,但有时由于主元过小,使得计算结果严重 失真,实际中常采用选主元高斯消元法。
§1 Gaussian Elimination – Pivoting Strategies
选主元消去法 /* Pivoting Strategies */
数值求解方法有以下三条途径(三种框架)
直接法:利用Gauss消元或矩阵分解,通过有限次运算 可求出精确解。 迭代法:构造迭代格式,产生迭代序列,通过无限 次迭代过程求解。有限次截断得近似解。 极小化方法:构造二次模函数,用迭代过程求二次 模函数的极小化问题,即变分法(经n 次运算,理论上得精确解)要求A 对称正定(S.P.D)
第三章 线性代数方程组的数值解法
第一节 求解线性代数方程组的基本定理 第二节 高斯消元法及其计算机实现 第三节 用矩阵分解法求解线性方程组 第四节 误差分析和解的精度改进
n
第五节 大型稀疏方程组的迭代法 第六节 极小化方法
第一节 求解线性代数方程组的基本定理
a11 x1 a12 x2 a1n xn b1 线性代数方程组 a21 x1 a22 x2 a2 n xn b2 的一般形式 am 1 x1 am 2 x2 amn xn bm 用 矩 阵 形 式 表 示 为 Ax b
( ( ( a ijk 1 ) a ijk ) m ik a kjk ) 且计算 ( k 1) ( bi bi( k ) m ik bkk ) ( i , j k 1, ..., n )
共进行 n ?1 步
(1 (1 a11) a12) ... a1(1) x1 b1(1) n ( 2) ( 2) ( 2) a22 ... a2 n x2 b2 . . . ... . . . . . . ( n) (n ann ) xn bn
定理2 线性方程组Ax b有解(即相容)时, (1)秩( A) 秩( A) r n, 则方程组Ax b存在唯一解。
(2)r ( A) r ( A) r n, 方程组Ax b有无穷多解。 通解 原方程组一个特解 对应齐次方程组的基 础解系的线性组合。
其 增 广 矩 阵 记 为A R m( n1)
a11 a A A, b 21 am 1 a12 a22 am 2 a1 n a2 n amn b1 b2 bm
定理1 (线性代数方程组有解判别定理)线性方程组 Ax b有解的充分必要条件是:秩(A)=秩(A)
xn bn / ann xi (bi
k i 1
a
n
ik
xk ) / aii
n=length(b); X=zeros(n,1); X(n)=b(n)/A(n,n); for i=n-1:-1:1 X(i)=(b(i)-A(i,i+1:n)* X(i+1:n))/A(i,i); end A的第i行、第i+1到n列元素 构成的行向量
(k a ik ) m ik ( ( a ijk ) a ijk 1)
(1 a11)
( i k 1, , n) ( i k 1, , n;
(1 a12) (2 a 22 ) (1 a13) (2 a 23 ) (3 a 33 )
[n n]=size(A); % 确定A的维数 X=zeros(n,1); for k=1:n-1 for i=k+1:n % 消元过程 A(i,k) =A(i,k)/ A(k,k); % A(k,k) ≠0
A(i,k+1:n)= A(i,k+1:n)- A(i,k) *A(k,k+1:n);
b(i)= b(i)- A(i,k) *b(k); end
常见是m n,称为欠定方程组(方程数少于未知数) 此时,从Ax b的无穷多个解中需求出2 范数最小的解。 即求 x , 使 || x ||2 min || x ||2 ,x满足Ax b。
r ( A) r ( A)方程组Ax b无解(即不相容)。 常见是m n,称为超定方程组(又称矛盾方程组) 此时,向量b不在A的列空间R( A)之中,原方程组 无解,但可求出最小二乘意义下的解 x。 即求 x使 || b Ax ||2 min 2
end
X=backsub(A, b); %回代求解
MATLAB For Gaussian Elimination
function X=gauss(A,b) %Input—A is an n×n nonsingullar matrix % ---b is an n×1 matrix %Output—X is the solution to the system AX=b
第二节
高斯消元法及其计算机实现
求解 A x b
§1 高斯消元法 /* Gaussian Elimination */
高斯消元法: 思 首先将A化为上三角阵 /* upper-triangular matrix */, 路 再回代求解 /* backward substitution */。
2 . 回代求解
( (n xn bnn ) / ann) ( xk ( bkk )
j k 1

n
(k (k akj ) x j ) / akk )
k n 1, n 2, ,1
存储方式 在计算机中计算时,采 用动态存储方式。最初 用 一个n n的二维数组存放,第k步消元计算后 A
=
§1 Gaussian Elimination – The Method
消元
记 A A (a )
(1)
(1) ij nn
(1) , b
( b1 1 ) . b . . (1) bn
(1) (1) ( 1) Step 1:设 a11 0,计算因子 mi1 ai1 / a11 (i 2, ..., n) 将增广矩阵/* augmented matrix */ 第 i 行 mi1 第1行, 得到 其中 ( 2 ) ( 1) ( 1) ( 1) ( 1) (1) (1)
a 22 1 m 21 1 0.0 ... 01 10 9 10 9 10 9
m21 a21 / a11 109 8个
例:单精度解方程组 /* 精确解为 x1
1 1 109
109 x1 x1 x2 x2 1 2
8个 8个 1.00...0100... 和 x 2 2 x1 0.99 ... 9899 ... */
用Gaussian Elimination计算:
参数表
MATLAB For Gaussian Elimination
function X=gauss(A,b) %Input—A is an n×n nonsingullar matrix % ---b is an n×1 matrix %Output—X is the solution to the system AX=b
a11
a12
... a1n
A
( 2)
(2) b
b1
a ij a ij m i 1a1 j (2) ( bi bi(1 ) m i 1b11 ) ( i , j 2, ..., n )
(k ( (k akk ) 0,计算因子 mik aikk ) / akk ) (i k 1, ..., n) Step k:设
i n 1, n 2, ,1
返回变量
函数名
function X=backsub(A,b) %Input—A is an n×n upper- triangular nonsingullar matrix % ---b is an n×1 matrix %Output—X is the solution to the system AX=b
进行到底,得到唯一解。
注:事实上,只要 A A ) ... ... A1 存在,则可通过逐 非奇异,即 ... de t( i 次消元及行交换,将方程组化为三角形方程组,求出 a i 1 ... a ii 唯一解。
a11
... a1i
求解的全过程包括两个步骤:消元和回代
1 . 顺序消元
k 1, , n 1 i k 1, , n (1)mik aik ( k ) / akk ( k ) (2)aij ( k 1) aij ( k ) mik akj ( k ),j k 1, , n (3)bi ( k 1) bi ( k ) mik bk ( k )
§1 Gaussian Elimination – The Method
回代
( (n xn bnn) / ann )
相关主题