数值分析(08)Gauss消元法解线性方程组
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 )
用列主元高斯消元法求线性代数方程组的解
课程设计任务书前 言回顾普通解方程组的方法,一般都是先逐个削去未知变量,最终得到只有一个未知变量的方程,解之,把得到的值回代到消去变量过程中得到的方程组,逐个求出未知变量。
这种解线性方程组的基本方法就是这里要介绍的高斯消去法。
数学上,高斯消元法(或译:高斯消去法),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。
当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。
高斯消元法可以用在电脑中来解决数千条等式及未知数。
高斯消元法可以用来找出一个可逆矩阵的逆矩阵。
用关联矩阵表述网络拓扑结构,并根据厂站拓扑结构和网络拓扑结构等概念简化了电力系统的拓扑结构。
根据广义乘法和广义加法的运算规则,将改进的高斯消元算法应用于电力系统拓扑结构分析中,并引入稀疏、分块处理等技术提高了上述拓扑分析的效率。
采用上述高斯消元算法对山东电网220kV 以上的变电站进行拓扑结构分析,结果表明了运用该高斯消元法进行网络拓扑分析的正确性和有效性。
用列主元素法,选取每列的绝对值最大的元素作为消去对象并作为主元素。
然后换行使之变到主元位子上,在进行消元计算。
设)()(k k b X A ,确定第k 列主元所在位置k i ,在交换k i 行和k 行后,在进行消元,并用MATLAB 软件进行求解。
目录摘要....................................................................................... 错误!未定义书签。
第1章绪论 ......................................................................... 错误!未定义书签。
第2章高斯消元法的算法描述 (2)2.1高斯消元法的原理概述 (2)c231730658" 2.1.1高斯消元法的消元过程 (2)c231730658" 2.1.2高斯消元法的回带过程 (3)c231730658" 2.1.3高斯消元法的复杂度分析 (4)c231730658" 2.2列主高斯消元法原理简介 (5)c231730658" 2.2.1列主高斯消元法的消元过程 (6)c231730658" 2.2.2列主高斯消元法的回带过程 (6)c231730658" 2.2.3列主高斯消元法的算法描述 (6)c231730662"第3章高斯消元法的物理应用 (9)3.1c231730663"电网模型的描述 (9)c231730658" 3.2电网模型的问题分析 (9)c231730658"3.3求解计算 (11)c231730693"参考文献 (13)摘 要用列主元素高斯消去法法,选取每列的绝对值最大的元素作为消去对象并作为主元素。
Gauss消去法求解线性方程组的改进
1问题的提出在科学和工程计算中,线性方程组(1)数值解非常重要,而求解线性方程组(1)的计算方法一般分为两类:直接法和迭代法。
不管是哪一类算法都只能在预定的计算步数内或给定的精度内得到近似解,所有的算法都存在着误差问题。
误差的来源是在求解线性方程组的过程中,由于系数相除所产生的舍入误差累积带入了未知量的求解过程,导致了线性方程组解的误差,即求解线性方程组误差来源于除法。
如果我们在求解过程中不使用或尽可能少使用除法,或对于除法采取分数代入(因为计算机的字长总是有限的),误差就可以完全消除,或达到误差最小。
本文在不增加计算量的情况下,将系数加减消元法融入到Gauss消去法中,在归一消元化为等价同解的上三角形方程组(n)的过程中,将系数加减消元,避逸了除法运算所产生的舍入误差,消除了消元过程中除法造成的误差累积,大大提高了线性方程组解的精确值。
2传统的Gauss消去法求解线性方程组Gauss消去法求解线性方程组的步骤如下:①消去:对于k从1到n-1归一化②回代Gauss消去法在归一过程中每执行一次就要作n-k+1次系数相除,相应地产生了n-k+1个舍入误差,产生的舍入误差又带入随后的乘法运算,累积所产生的误差个数就为(n-k+1)(n-k)。
因此,仅归一消元过程就产生了个累积误差,再加上回代过程中所作的次乘法所产生的累积误差,整个Gauss消去法中总共产生的误差个数(加减法不会产生误差)为。
尽管每次乘除所产生的误差符号不会都相同,从而使误差在累积时发生相互抵的消现象,但累积所产生的误差仍是相当大的,现仅以2阶线性方程组为例说明:例1方程组Gauss消去法求解:消元回代得而方程组的精确解为仅2阶就产生了这么大的误差原因何就在于系数与不能整除或在计算机允许的范围内不能除尽,将所产生的舍入误差带入了随后的运算,致使的解产生了误差。
3改进Gauss消去法求解线性方程组将系数加减消去法,融入到Gauss消去法中,改进Gauss消去法。
数值分析Gauss消去法课件
高斯消元法的代码实现
初始化矩阵
将系数矩阵A进行初始化,并存储在二维数 组中。
消元过程
通过一系列行变换,将系数矩阵变为上三角 矩阵。
主元选择
选择主元,即系数矩阵中所在行和列的最大 元素。
回带求解
利用上三角矩阵的元素,求解线性方程组的 解。
选主元的优化策略
1 2
自然主元
选择系数矩阵中绝对值最大的元素作为主元。
病态问题
对于一些病态问题,高斯 消元法可能无法得到准确 解,需要采用其他方法进 行求解。
01
Gauss消去法的应 用实例
应用领域与案例介绍
线性方程组求解
01
Gauss消去法是求解线性方程组的一种常用方法,适用于大ห้องสมุดไป่ตู้模
、稀疏矩阵的求解。
矩阵求逆
02
通过Gauss消去法可以计算矩阵的逆,这在许多科学计算和工程
最小二乘主元
选择使所在行和列的绝对值之和最小的元素作为 主元。
3
随机主元
随机选择一个元素作为主元,可以避免某些数值 问题。
数值稳定性与误差控制
01
02
03
数值稳定性
高斯消元法在某些情况下 可能产生数值不稳定性, 如主元接近零或数值误差 累积。
误差控制
在消元过程中,可以通过 一些技巧来控制误差,如 预处理、选主元策略和舍 入误差控制。
领域中都有应用。
特征值和特征向量计算
03
Gauss消去法可以用于计算矩阵的特征值和特征向量,这在物理
、工程和经济学等领域有广泛的应用。
实际应用中的问题与挑战
数值稳定性
Gauss消去法在处理病态问题或 接近奇异矩阵时可能会出现数值 不稳定性,导致计算结果误差较 大。
高斯消元法解线性方程组
高斯消元法解线性方程组线性方程组是数学中常见的问题,其中包含多个线性方程,求解线性方程组即为找到满足所有方程的解。
高斯消元法是一种常用的方法,可以有效地解决线性方程组。
本文将介绍高斯消元法的原理和步骤,并通过一个具体的例子来演示其应用。
一、高斯消元法原理高斯消元法是通过一系列的行变换来将线性方程组转化为上三角形式,进而求解方程组。
具体步骤如下:1. 将线性方程组写成增广矩阵形式,其中每一行表示一个方程,最后一列为常数项。
2. 选择一个主元,通常选择第一列的第一个非零元素作为主元。
3. 将主元所在行的所有元素除以主元,使主元变为1。
4. 将主元所在列的其他行元素通过适当的倍数加到相应行,使得主元所在列的其他元素都变为0。
5. 重复步骤2-4,直到将矩阵转化为上三角形式。
6. 从最后一行开始,通过回代法求解每个未知数的值。
二、高斯消元法步骤示例为了更好地理解高斯消元法的步骤,下面以一个具体的线性方程组为例进行演示。
假设有如下线性方程组:2x + y - z = 1-3x - y + 2z = -2-2x + y + 2z = 3首先,将线性方程组写成增广矩阵形式:[ 2 1 -1 | 1 ][-3 -1 2 | -2 ][-2 1 2 | 3 ]选择第一列的第一个非零元素2作为主元,将主元所在行的所有元素除以主元,使主元变为1,得到:[ 1 0 -0.5 | 0.5 ][-3 -1 2 | -2 ][-2 1 2 | 3 ]然后,将主元所在列的其他行元素通过适当的倍数加到相应行,使得主元所在列的其他元素都变为0,得到:[ 1 0 -0.5 | 0.5 ][ 0 -1 1.5 | -0.5 ][ 0 1 3 | 4 ]接下来,选择第二列的第二个非零元素-1作为主元,将主元所在行的所有元素除以主元,使主元变为1,得到:[ 1 0 -0.5 | 0.5 ][ 0 1 -1.5 | 0.5 ][ 0 1 3 | 4 ]再次进行行变换,将主元所在列的其他行元素通过适当的倍数加到相应行,使得主元所在列的其他元素都变为0,得到:[ 1 0 -0.5 | 0.5 ][ 0 1 -1.5 | 0.5 ][ 0 0 4.5 | 3 ]将矩阵转化为上三角形式后,从最后一行开始,通过回代法求解每个未知数的值。
数值分析计算方法实验报告
end;
end;
X=x;
disp('迭代结果:');
X
format short;
输出结果:
因为不收敛,故出现上述情况。
4.超松弛迭代法:
%SOR法求解实验1
%w=1.45
%方程组系数矩阵
clc;
A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]
b=[10,5,-2,7]'
b=[10,5,-2,7]'
[m,n]=size(A);
if m~=n
error('矩阵A的行数和列数必须相同');
return;
end
if m~=size(b)
error('b的大小必须和A的行数或A的列数相同');
return;
end
if rank(A)~=rank([A,b])
error('A矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解');
3.实验环境及实验文件存档名
写出实验环境及实验文件存档名
4.实验结果及分析
输出计算结果,结果分析和小结等。
解:1.高斯列主元消去法:
%用高斯列主元消去法解实验1
%高斯列主元消元法求解线性方程组Ax=b
%A为输入矩阵系数,b为方程组右端系数
%方程组的解保存在x变量中
format long;
A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]
return;
end
c=n+1;
A(:,c)=b;
for k=1:n-1
用高斯消元法解线性方程组
用高斯消元法解线性方程组高斯消元法是一种常用的解线性方程组的方法。
它通过一系列的行变换将线性方程组转化为一个简化的行阶梯形式,从而可以方便地求解方程组。
基本步骤使用高斯消元法解线性方程组的基本步骤如下:1. 构造增广矩阵:将线性方程组的系数矩阵和常数向量按照方程的顺序组合成一个增广矩阵。
2. 初等行变换:通过初等行变换操作,将增广矩阵转化为行阶梯形或行最简形。
3. 回代求解:从最后一行开始,反向代入得到方程组的解。
详细步骤以下是用高斯消元法解线性方程组的详细步骤:1. 将线性方程组的系数矩阵和常数向量按照方程的顺序组合成一个增广矩阵,如下所示:[a11 a12 ... a1n | b1][a21 a22 ... a2n | b2][... ... ... ... | ...][an1 an2 ... ann | bn]2. 选择第一个非零元素所在的列,记为第 k 列。
3. 通过初等行变换操作,将第 k 列除了第 k 行之外的所有元素变为零。
首先,将第 k 行的第 k 个元素系数标准化为 1,即将第 k 行的所有元素除以第 k 个元素的值。
然后,对第 i 行(i ≠ k)进行以下操作:将第 i 行的第 k 个元素的系数变为零,即将第 i 行减去第 k 行的 k 个元素乘以第 i 行的第 k 个元素的系数。
4. 重复步骤 2 和步骤 3,直至所有列都处理完毕。
5. 如果最后一行的所有元素都为零,则该线性方程组无解。
6. 如果最后一行的最后一个非零元素所在的列号为 m,则 m+1 到 n 列的所有元素均为自由变量。
7. 从最后一行开始,反向代入求解自由变量。
示例假设有以下线性方程组:2x + 3y - z = 13x + 2y + z = 2x + 3y + 2z = 3将该方程组转化为增广矩阵的形式:[2 3 -1 | 1][3 2 1 | 2][1 3 2 | 3]通过高斯消元法的步骤,可以得到以下的行阶梯形式:[1 3/2 1/2 | 3/2][0 7/2 -3/2 | -3/2][0 0 17/7 | 17/14]根据行阶梯形式,可以得到方程组的解为:x = 1/2y = -1/2z = 2/7总结高斯消元法是一种简单而有效的方法,用于解线性方程组。
高斯消元法是线性代数中的一个算法可用来求解线性方
高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。
高斯消元法的原理是:若用初等行变换将增广矩阵化为,则AX = B与CX = D是同解方程组。
所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。
以上是线性代数课的回顾,下面来说说高斯消元法在编程中的应用。
首先,先介绍程序中高斯消元法的步骤:(我们设方程组中方程的个数为equ,变元的个数为var,注意:一般情况下是n个方程,n个变元,但是有些题目就故意让方程数与变元数不同)1. 把方程组转换成增广矩阵。
2. 利用初等行变换来把增广矩阵转换成行阶梯阵。
枚举k从0到equ – 1,当前处理的列为col(初始为0) ,每次找第k行以下(包括第k行),col列中元素绝对值最大的列与第k行交换。
如果col列中的元素全为0,那么则处理col + 1列,k不变。
3. 转换为行阶梯阵,判断解的情况。
①无解当方程中出现(0, 0, …, 0, a)的形式,且a != 0时,说明是无解的。
②唯一解条件是k = equ,即行阶梯阵形成了严格的上三角阵。
利用回代逐一求出解集。
③无穷解。
条件是k < equ,即不能形成严格的上三角形,自由变元的个数即为equ – k,但有些题目要求判断哪些变元是不缺定的。
这里单独介绍下这种解法:首先,自由变元有var - k个,即不确定的变元至少有var - k个。
我们先把所有的变元视为不确定的。
在每个方程中判断不确定变元的个数,如果大于1个,则该方程无法求解。
如果只有1个变元,那么该变元即可求出,即为确定变元。
以上介绍的是求解整数线性方程组的求法,复杂度是O(n3)。
浮点数线性方程组的求法类似,但是要在判断是否为0时,加入EPS,以消除精度问题。
高斯消元法简介在信息学竞赛中,很多问题都可以转化成线性方程组或者与之相关的问题。
因此,我们需要了解线性方程组的各种解法。
Gauss消元法解解线性方程组
Gauss消元法解解线性⽅程组摘要本⽂叙述了Gauss 顺序消元法解线性⽅程的算法思想以及其求解过程,同时简要叙述了Gauss 主元素消元法以及Gauss 全主元消元法。
紧接着给出了Gauss Seidel -迭代法的算法思想,本⽂给出了这三个消元⽅法以及⼀个迭代法的算法流程图,由于全主元消元法是前两个算法的基础上改进⽽来,故本⽂采⽤第三种⽅法进⾏编程计算,前两种⽅法不再重复编程,然后给出⼀个实例的计算结果,运⾏时间,在⽂章最后分析该实例的计算结果,针对同⼀实例,⼜采⽤Gauss Seidel -⽅法编程实现,然后对结果进⾏分析和对⽐。
最后给出了本⼈在编程时遇到的⼀些问题和解决办法。
关键词:Gauss 顺序消元法 Gauss 主元素消元法 Gauss 全主元消元法⼀、算法的简要描述1.1Gauss 顺序消元法Gauss 消元法在中学⾥已经学习过,其⽅法实质,就是运⽤初等变换,将线性⽅程组Ax b =转化为同解的上三⾓矩阵⽅程组1Ux L b -=(1.1.1)其中,U 为上三⾓矩阵,L 为下三⾓矩阵。
然后对式(1.1.1)进⾏回代求解,即得⽅程组的解。
⼿算的过程是⾮常清楚的,现在需回答的是计算机求解,如何实现上述计算过程。
设线性⽅程组为1111221331121122223322112233n n n n n n n nn n na x a x a x a xb a x a x a x a x b a x a x a x a x b ++++=??++++=??++++= 写成矩阵形式为1112111212222221222m m m n n a a a x b aa a xb a a a x b=???????(1.1.2)设线性⽅程组如上式所⽰,记(1)A A =,(1)b b =,与是增⼴矩阵具有形式(1)(1)[][]A b A b =,此时⽅程组为(1)(1)A x b =。
第⼀次消元。
数值分析实验报告-清华大学--线性代数方程组的数值解法
数值分析实验报告-清华大学--线性代数方程组的数值解法(总15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--线性代数方程组的数值解法实验1. 主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。
主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组 n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。
实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。
取n=10计算矩阵的条件数。
让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。
每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。
若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。
重复上述实验,观察记录并分析实验结果。
程序清单n=input('矩阵A 的阶数:n=');A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1); b=A*ones(n,1);p=input('计算条件数使用p-范数,p='); cond_A=cond(A,p) [m,n]=size(A);Ab=[A b];r=input('选主元方式(0:自动;1:手动),r=');Abfor i=1:n-1switch rcase(0)[aii,ip]=max(abs(Ab(i:n,i)));ip=ip+i-1;case (1)ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);end;Ab([i ip],:)=Ab([ip i],:);aii=Ab(i,i);for k=i+1:nAb(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);end;if r==1Abendend;x=zeros(n,1);x(n)=Ab(n,n+1)/Ab(n,n);for i=n-1:-1:1x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);endx运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1) =×103Cond(A,2) = ×103Cond(A,inf) =×103程序自动选择主元(列主元)a.输入数据矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=0b.计算结果x=[1,1,1,1,1,1,1,1,1,1]T(2)n=10,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[, , , , , , , , , ]Tb. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k 步选择主元处于第k+1行) 最终计算得x=[1,1,1,1,1,1,1,1,1,1]T(3)n=20,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[,,,,,,,,,,,,,,,,,,,]T b. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]T(4)A分别为幻方矩阵,Hilbert矩阵,pascal矩阵和随机矩阵简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。
线性方程组的Gauss消元法
15
计算方法 第一章解线性方程组的直接法
例 利用LU分解求解如下方程组
2x1 4x2 2x3 6,
x1
x2 5x3 0,
4x1 x2 2x3 2.
16
计算方法 第一章解线性方程组的直接法
Doolittle分解算法的程序语言表述 对于i=1,2,…,n
(1)计算U的第i行k列元素,即对于k=i,i+1, …,n,计算
0
a(k kk
)
2
计算方法 第一章解线性方程组的直接法
由于
lik
a(k) ik
/
a(k kk
)
可将Gauss矩阵写成
Gk I k a%kekT I lkekT
其中,
lk (0,L , 0,lk1,k ,L ln,k )T
不难验证 因而
Gk1 I lk ekT k
(Gk L G1)1 G11 L Gk1 I lieiT i 1
提供了计算行列式的方法.
18
计算方法 第一章解线性方程组的直接法
把D并入L, A=(LD)R= L%R
L% 为下三角矩阵
11
计算方法 第一章解线性方程组的直接法
➢ 乔列斯基(Cholesky)分解
若A为n阶对称正定矩阵,则由对称正定阵的性质可
证明必有
A L%L%T
L% 是对角元全为正的下三角矩阵
12
计算方法 第一章解线性方程组的直接法
Doolittle分解
a (2)
22
L0
O
a a(k) kk 1k
a(2) 2k
a(k) k ,k 1
a(k 1) k 1,k 1 M
a(k 1) n,k 1
