22列主元消去法

合集下载

用列主元消去法和追赶法求解带有边值问题的线

用列主元消去法和追赶法求解带有边值问题的线

重庆理工大学数学与统计学院数值分析课程设计成绩评定书设计题目:用列主元消去法和追赶法求解带有边值问题的线性方程组专业班学号学生姓名指导教师用列主元消去法和追赶法求解线性方程组摘要:根据高斯消去法的理论知识,通过MATLAB 工具编写函数,运用列主元消去法和追赶法来求解线性方程组。

在消元过程中可能出现)(a k kk0 的情况,这时就可以用列主元消去法来解决,它的特点是每次在系数矩阵中依次按列在主对角线及以下的元素中,选取绝对值最大的元素作为主元,将它调到主对角线上,然后用它消去主对角线以下的元素,最后化为同解的上三角形方程组去求解;而在实际问题中,如求解系数矩阵为对角占优的三对角线性方程组,用追赶法求解就显得更方便。

可以看出,两种方法对于求解线性方程组都具有可行性和准确性。

关键词:高斯消去法;列主元消去法;追赶法;MA TLAB一、问题提出. 考虑两点边值问题()()⎪⎩⎪⎨⎧==<<=+.11,00,10,22y y a a dx dy dx y d ε容易知道它的精确解为.1111ax e ea y x+⎪⎪⎭⎫⎝⎛---=--εε为了把微分方程离散,把[]1,0区间n 等分,令nh 1=,ih x i =,,1,,2,1-=n i 得到差分方程,21211a hy y hy y y ii i i i =-++-++-ε简化为()(),2211ah y y h y h i i i =++-+-+εεε从而离散后得到的线性方程组的系数矩阵为()()()()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-++-++-++-=h h h hh hh A εεεεεεεεεε2222对1=ε,6.0=a ,100=n ,分别用列主元消去法和追赶法求解线性方程组,然后比较与精确解的误差,对结果进行分析。

改变n ,讨论同样问题。

二、问题求解2.1列主元消去法2.1.1方法思想高斯消去法是一个古老的求解线性方程组的方法,但它的改进、变形得到的主元素消去法仍然是计算机上常用的计算方法,高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。

用列主元高斯消元法求线性代数方程组的解

用列主元高斯消元法求线性代数方程组的解

课程设计任务书前 言回顾普通解方程组的方法,一般都是先逐个削去未知变量,最终得到只有一个未知变量的方程,解之,把得到的值回代到消去变量过程中得到的方程组,逐个求出未知变量。

这种解线性方程组的基本方法就是这里要介绍的高斯消去法。

数学上,高斯消元法(或译:高斯消去法),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。

当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。

高斯消元法可以用在电脑中来解决数千条等式及未知数。

高斯消元法可以用来找出一个可逆矩阵的逆矩阵。

用关联矩阵表述网络拓扑结构,并根据厂站拓扑结构和网络拓扑结构等概念简化了电力系统的拓扑结构。

根据广义乘法和广义加法的运算规则,将改进的高斯消元算法应用于电力系统拓扑结构分析中,并引入稀疏、分块处理等技术提高了上述拓扑分析的效率。

采用上述高斯消元算法对山东电网220kV 以上的变电站进行拓扑结构分析,结果表明了运用该高斯消元法进行网络拓扑分析的正确性和有效性。

用列主元素法,选取每列的绝对值最大的元素作为消去对象并作为主元素。

然后换行使之变到主元位子上,在进行消元计算。

设)()(k k b X A ,确定第k 列主元所在位置k i ,在交换k i 行和k 行后,在进行消元,并用MATLAB 软件进行求解。

目录摘要......................................................................................... 错误!未定义书签。

第1章绪论 ........................................................................... 错误!未定义书签。

第2章高斯消元法的算法描述 (2)2.1高斯消元法的原理概述 (2)2.1.1高斯消元法的消元过程 (2)2.1.2高斯消元法的回带过程 (3)2.1.3高斯消元法的复杂度分析 (4)2.2列主高斯消元法原理简介 (5)2.2.1列主高斯消元法的消元过程 (6)2.2.2列主高斯消元法的回带过程 (6)2.2.3列主高斯消元法的算法描述 (6)第3章高斯消元法的物理应用 (9)3.1电网模型的描述 (9)3.2电网模型的问题分析 (9)3.3求解计算 (11)参考文献 (13)摘 要用列主元素高斯消去法法,选取每列的绝对值最大的元素作为消去对象并作为主元素。

列主元素消去法

列主元素消去法

列主元素消去法列主元素消去法(Gauss-Jordan 消元法)是一种线性代数中常用的消元方法,用于求解线性方程组的解。

这种方法的基本思想是,将线性方程组的增广矩阵通过一系列的初等变换,化为一个阶梯矩阵或行简化阶梯矩阵,从而得到线性方程组的解。

具体步骤如下:构造增广矩阵,即将系数矩阵和常数矩阵组合成一个矩阵。

将增广矩阵转化为一个上三角矩阵(也叫阶梯矩阵)。

反向消元,将阶梯矩阵转化为一个行简化阶梯矩阵。

根据简化矩阵求解方程组。

这种方法的优点是计算简单、容易理解,且可避免误差的积累。

但是,如果矩阵的规模较大,运算量会很大,计算时间较长。

此时可以使用更高效的算法,如LU分解、QR分解等。

假设有一个 $n$ 个未知量和 $n$ 个方程的线性方程组,可以写成矩阵形式如下:$Ax = b$其中,$A$ 是一个 $n \times n$ 的系数矩阵,$x$ 是一个 $n \times 1$ 的未知量向量,$b$ 是一个 $n \times 1$ 的常数向量。

为了求解 $x$,可以将方程组的增广矩阵表示如下:$\begin{bmatrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1n} & b_{1} \ a_{21} & a_{22} & a_{23} & \cdots & a_{2n} & b_{2} \ \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \ a_{n1} & a_{n2} & a_{n3} & \cdots & a_{nn} & b_{n} \end{bmatrix}$ 其中,$a_{ij}$ 表示矩阵的第 $i$ 行第 $j$ 列的元素。

2-2 Gauss列主元消去法

2-2 Gauss列主元消去法

S2 若ann 0,则输出“ A是奇异矩阵”;停机 . S3 置xn an,n1 / ann ;
对i n 1, n 2,...1,
ai,n1 n aij x j
置xi
j i 1
aii
S4 输出x1, x2,..., xn ;停机.
作业:
P50 习题3
k in
aik
;
S12 若aik ,k 0,则输出“ A是奇异矩阵”;停机 .
S13 若ik k,则
akj aik , j j k,...,n 1;
S14 对i k 1,..., n
置aik aik / akk ; 对j k 1,..., n 1
置aij aij aik akj.
§2-2 Gauss列主元消去法
一、Gauss列主元消去法的引入 例1. 用3位浮点数运算,求解线性方程组
0.0001xx11
x2 x2
1 2
解: 本方程组的精度较高的解为
x* (1.00010001 ,0.99989999 )T
用Gauss消去法求解
A ( A,b)
0.000100 1
1 1
21
0.000100
m2110 000
0
回代后得到
1
1
1.00 104 1.00 104
x1 0.00 , x2 1.00
与精确解相比,该结果显然是错误的 究其原因,在求行乘数时用了很小的数0.0001作除数
如果在求解时将1,2行交换,即
A ( A,b)
1 0.000100
1 1
a(2) i2
,
交换第2行和第i2行,
2in
然后进行消元,得[ A(3) , b(3) ].

选主元消去法的基本原理

选主元消去法的基本原理

选主元消去法的基本原理选主元消去法是高斯消元法的一种改进方法,旨在提高高斯消元法的运算效率。

它通过在每一次消去过程中选择系数矩阵的最大元素(主元)作为基准元素,将其放在消去过程中的当前行首位,从而避免出现除数为零的情况,减小误差累积,并降低运算量。

选主元消去法的基本原理如下:1. 确定主元:在每一次消去过程中,首先需要根据某种准则选择当前列中绝对值最大的元素作为主元素,并将其所在行与当前行进行交换。

常用的准则有最大主元消去法和选主元消去法。

2. 消元过程:将主元所在列中主元下方的所有元素全部变为0。

这一步骤可以通过对当前行进行线性组合,将主元下方的其他元素变为0。

消元过程结束后,主元所在列下方的所有元素均为0。

3. 回代过程:从最后一行开始,用回代法求解未知数。

通过将回代过程中的已求得的未知数带入方程组中的其他未知数,依次求解出剩余的未知数。

选主元消去法的关键在于选择合适的主元。

在最大主元消去法中,选择当前列中绝对值最大的元素作为主元,并进行行交换,使主元所在行位于当前行首位。

这样做的目的是为了最大限度地减小主元造成的误差累积。

然而,在某些情况下,选取最大主元并不能有效地减小误差,甚至可能会增加误差。

因此,选主元消去法中选取主元的准则更为复杂。

在选主元消去法中,选择准则一般有三种:绝对值最大法、相对值最大法和列主元法。

绝对值最大法:选择当前列中绝对值最大的元素作为主元。

这种方法可以有效地减小误差,并提高计算精度。

然而,对于某些特殊的矩阵,如病态矩阵,选择绝对值最大的元素作为主元可能导致误差累积增大。

相对值最大法:选择当前列中相对值最大的元素作为主元,即选择当前列中的元素与该列中绝对值最大的元素的比值最大的元素作为主元。

相对值最大法能够有效地降低误差累积,并提高计算精度。

列主元法:选择当前列中除主元外绝对值最大的元素所在的行作为主元所在的行。

这种方法能够有效地减小误差,尤其在处理病态矩阵时效果显著。

列主元素消去法

列主元素消去法

2012-2013(1)专业课程实践论文列主元素消去法范宁:0818180102,R数学08-1班夏之秋:0818180110,R数学08-1班一、算法理论列主元素消去法既是选主元高斯消去法的一种,也是实际计算中常用的部分选主元消去法。

列主元素消去法则是对完全主元素消去法的又一次改进。

列主元素消去法在完全主元素消去法的基础上减少了在选主元素时所要花费的一定的计算时间。

设有线性方程组b=Ax其中,A 为非奇异矩阵。

方程组的增广矩阵为⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=n nnn n k i n n b a a a a b a a a b a a a A212222211112111]b ,[ 首先在A 的第1列选取绝对值最大的元素作为主元素,即选择0max 111,1≠=≤≤i ni i a a然后交换A 的第1行与第1i 行(交换后增广矩阵为简单起见仍记为]b ,[A ,其元素仍记为i j i b a ,)。

经过第1次消元计算得到与原方程组等价的方程组(2))2(bx =A其中⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)2()2(2)1(1)2()2()2(2)2(2)2(22)1(1)1(12)1(11)2(b n nnn n nb b b a a a a a a a A, 上述过程可记为 ]2[)2()2(]b ,[]b ,[A A →重复上述计算过程,现假设已完成第1-k 步的选主元素过程,交换两行并进行消元计此时]b ,[A 约化为⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=)()()()()()()2(2)2(2)2(22)1(1)1(1)1(12)1(11)()(]b ,[k n k nnk nkk k k knk kkn nk k b a a b aa b a a b a a a A其中)(k A 的元素仍记为j i a ,)(b k 的元素仍记为i b .第k 步选主元素(在)(k A 右下角方阵的第1列内选),即确定k i ,使0max ,≠=≤≤ik ni k k i a a k交换]b ,[)()(k K A 第k 行与)1,,2,1(-=n k i k 行的元素,再进行消元计算,最后将原线性方程组化为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n n nn nn b b b x x x a a a a a a212122211211回代可求解得 ⎪⎩⎪⎨⎧-=-==∑+=)1,2,,1(/)(/1 n i a x a b x a b x ii ni j j ij i inn n n二、算法框图开始输出奇异标志结束输入A (增广矩阵)()k i a a ik rk >=max 1=k?0=rk a交换A 中k r ,两行1,,1,,1++=+=⨯-=n k j n k i a a a a a kk kj ik ij ij?1-<n k()1,2,,1,,,2,11, -=++=⨯-=∑+n n k n k k j a x aa x kkj kjn k k1=k输出迭代失败标志三、算法程序#include <stdio.h>#include<conio.h>#include <math.h>#include <stdlib.h>#define max_dimension 20int n;static float a[max_dimension][max_dimension]; static float b[max_dimension];static float x[max_dimension];void main(){int i;int j;int d;int row;float temp;float known_items;float l[max_dimension][max_dimension];system("cls");printf("Please Input Matrix jieshu :");scanf("%d",&n);printf("\n");printf("Please Input Matrix Factors : ");printf("\n");for (i=0; i<n; i++){printf("input di %d hang dezhi:",i+1);for (j=0; j<n; j++){scanf("%f",&a[i][j]);}printf("\n");}printf("Please Input Changshu xiang: ");for (i=0; i<n; i++)scanf("%f",&b[i]);printf("The Augmented(zenguang) Matrix is :\n\n"); for (i=0; i<n; i++)for (j=0; j<n; j++)printf("%f",a[i][j]);printf("%f",b[i]);printf("\n");}printf("\n");for (d=0; d<n-1;d++){row=d;for (i=d+1; i<n; i++){if(fabs(a[i][d])>fabs(a[row][d]))row=i;}if (row!=d){for (j=d;j<n; j++){temp=a[row][j];a[row][j]=a[d][j];a[d][j]=temp;}temp=b[row];b[row]=b[d];b[d]=temp;}for (i=d+1; i<n; i++){l[i][d]=-a[i][d]/a[d][d];for (j=d;j<n; j++){a[i][j]=a[i][j]+a[d][j]*l[i][d];}b[i]=b[i]+b[d]*l[i][d];}}for (i=0; i<n; i++){for (j=0; j<n; j++)printf("%f",a[i][j]);printf("%f",b[i]);printf("\n");}printf("\n");for (i=n-1; i>-1; i--){known_items=0;for (j=1; j<n-i; j++){known_items=known_items+a[i][i+j]*x[i+j];}x[i]=(b[i]-known_items)/a[i][i];}printf("The Root X is :\n\n");for (i=0; i<n; i++)printf("%.5f ",x[i]);printf("\n\n");getch();}四、算法实现例1. 求解方程组:⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫⎝⎛--000.3000.2000.1643.5072.1000.2623.4712.3000.1000.3000.2001.0321x x x 用四位浮点数进行计算,精确解舍入到四位有效数字为()T x 3675.0,05104.0,4904.0*--=解:运行程序(1)显示 Please Input Matrix jieshu :输入的值为3,回车。

列主元消去法解方程组

列主元消去法解方程组

数值分析上机实验报告(二)一、问题描述:利用列主元消去法求解下列方程组2X1+5X2+3X3 - 2X4=72X1- 2X2+3X3+5X4=-1X1+3X2+2X3+3X4=0X1+2X2+ X3 - 2X4=4二、算法原理:由高斯消去法知道,在消去过程中可能出现a kk(k)=0的情况,这时候消去法将无法进行,所以最好选取系数矩阵(或消元后的低阶矩阵)中绝对值最大的元素作为主元,以使高斯消去法具有较好的数值稳定性。

三、实验步骤:1、det 1;2、对于k=1,2,···,n-1(1)按列选主元|a ik.k|=max|a ik|(2)如果a i.k=0,则计算停止(det(A)=0)(3)如果i k=k则转(4)换行:a kj a ik·j(j=k,k+1,···,n)b k b ikdet -det(4)消元计算对于i=k+1,···,n○1am ik=a ik/a kk○2对于j=k+1,···,n a ij a ij—m ik*a kj○3b i b i-m ik*b ik(5)det a kk*det3、如果则计算停止(det(A)=0)4、回代求解(1)b n b n/a nn(2)对于i=n-1···,2,1bi(bi-∑aij*bj)/aii5.det ann*det四、实验框图五、源程序# include <stdio.h># include<math.h># define n 4main(){int i,j,k,l;float A[n][n],b[n],x[n],max;//输入系数矩阵及右端项for(i=0;i<n;i++)for(j=0;j<n;j++){printf("A[%d][%d]=",i,j);scanf("%f;",&A[i][j]);}for(i=0;i<n;i++){printf("b[%d]=",i);scanf("%f;",&b[i]);}//列主元消去过程for(k=0;k<n-1;k++){max=abs(A[k][k]);l=k;for(i=k+1;i<n;i++)if(abs(A[i][k])>max){max=abs(A[i][k]);l=i;} if(l>k){for(j=k;j<n;j++){max=A[k][j];A[k][j]=A[l][j];A[l][j]=max;}max=b[k];b[k]=b[l];b[l]=max;}for(i=k+1;i<n;i++){max=A[i][k]/A[k][k];for(j=k+1;j<n;j++)A[i][j]=A[i][j]-max*A[k][j];b[i]=b[i]-max*b[k];}}//回代过程x[n-1]=b[n-1]/A[n-1][n-1];for(k=1;k<n;k++){i=n-k-1;x[i]=b[i];for(j=i+1;j<n;j++)x[i]=x[i]-A[i][j]*x[j];x[i]=x[i]/A[i][i];}//输出解for(i=0;i<n;i++)printf("x[%d]=%f;",i,x[i]);getchar();}六、运行结果。

列主元消去法前两步

列主元消去法前两步

• 注意: • 交换两行的时候,要交换两行的每一个元 素,所以用循环从0到9。 • 交换两个数要借助第三个变量temp.
列主元消去法——郭雪
1选取最大元
2交换两行
存储结构
• 将方程的系数存在一个二维的数组 A[10][10] • 将常向量存在一个一维数组b[10]中 • (选择10是为了解更多的方程,而不仅局 限与本题,当然也可以选择100……)
选取最大元
• • • • • • • 不妨以第j列为例(即找第j列最大的元素) max=a[0][j]; //将最大元赋值给j列的第0个元// for(i=1;i<10;i++) //从j列的第一个数循环到最后一个// if(max<a[i][j]); //如果j列的第i个数比max大// {max=a[i][j]; //就把大的这个数再赋值给max// k=i; //将j列最大元素的角标赋值给k// }
• 注意: • 1在该题中,应该是绝最后一列都要找最大元,所以 实际是从1到10的循环。
交换两行
• 以交换第0行与第k行为例 • {for(j=0;j<10;j++) //从0循环到9// • temp=a[0][j]; //将0行的第j个元素赋值给temp// • a[0][j]=a[k][j];//将k行的第j个元素赋值给a[0][j]// • a[k][j]=temp; //将temp赋值给a[k][j]// • • temp=b[0]; //交换第0行与第k行的常向量// • b[0]=b[k]; • b[k]=temp; • }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
资源环境学科
输入A, b , n , EPS
for k = 1 : n − 1
图2-1 列主元消元法算法框图
选取主元素 alk
| alk |≤ EPS
Yes
l≠k
换行 No
消元
No
k ← k +1
Yes
输出无解信息
Yes
| A( n , n )| EPS ≤
No
End
输出解 x
回代求解
8
x1 =
b
( 1) 1
−a x −a x = −0.491 058 20 a
( 1) 12 2 ( 1) 11 ( 1) 13 3
事实上,方程组的准确解为 事实上 方程组的准确解为
资源环境学科
x* = ( −0.491058221,−0.050886077,0.367257387 )T
7
二 、 Gauss
1 1 2 A = ( A, b ) → 0.000100 1 1
1 2 1 → 0 1.00 1.00
m21 = 0.000100
0.9999
回代后得到
0.9998
x1 = 1.00 , x2 = 1.00
这是一个相当不错的结果
10 −8 2 3 1 A = ( A, b) = − 1 3.712 4.623 2 − 2 1.072 5.643 3
资源环境学科
10 −8 很小, 绝对值最大 的列元素为a13 = −2 , 因此1,3行交换
5
− 2 1.072 5.643 3 r1 ⇔ r3 → − 1 3.712 4.623 2 10 −8 2 3 1
Ax = b
i = 2ቤተ መጻሕፍቲ ባይዱ3,L, n
a11 a12 L a1n j =1 xi = lii a21 a22 L a2n A= 第二章 解线性方程组的直接法 M M M M an1 an2 L ann
bi − ∑lij xj
i−1
§ 2.2
Gauss列主元消去法 列主元消去法 列主元
经过回代后可得 列主元消去法
用换行避免小主元作除数,该方法即为 用换行避免小主元作除数 该方法即为Gauss
( b33 ) 0.685 138 54 x3 = ( 3 ) = = 0.367 257 39 a 33 0.186 555 41 × 10
( (2 b22 ) − a23 ) x3 = 0.5 − 0.18015 × 10 × x3 = −0.050 886 07 x2 = (2) 0.3176 × 10 a22
一、Gauss列主元消去法的引入 例1. 消去法解线性方程组(用 位十进制浮 用Gauss消去法解线性方程组 用3位十进制浮 消去法解线性方程组 点数计算) 点数计算)
0.0001 x1 + x2 = 1 x1 + x2 = 2
解: 本方程组的精度较高的解为
x * = ( 0.99989999 ,1.00010001)T
资源环境学科 6
− 2 1.072 5.643 3 = (A(1) , b(1) ) 0 3.176 1.8015 0.5 0 2 3 1 2.999 999 971
所用的方法是在Gauss消去法的基础上 利 消去法的基础上,利 例2所用的方法是在 所用的方法是在 消去法的基础上
资源环境学科 4
例2.
解线性方程组(用8位十进制浮点数计算)
10 −8 2 3 x1 1 − 1 3.712 4.623 x2 = 2 − 2 1.072 5.643 x 3 3
一样,若用 解: 这个方程组和例1一样,若用Gauss消去法计算会有 : 这个方程组和例1一样 若用Gauss消去法计算会有 小数作除数的现象,若采用换行的技巧 若采用换行的技巧,则可避免 小数作除数的现象 若采用换行的技巧 则可避免
= (A , b )
(0) (0)
绝对值最大 不需换行

m32 = 0.629 722 92
m21 = 0.5 m31 = −0.5×10 −8
→ − 2 1.072 5.643 3 (2) (2) = (A , b ) 1.8015 0.5 0 3.176 0 0 0.186 555 41×10 0.685 138 54
回代后得到
x1 = 0.00 , x2 = 1.00
-9998
与精确解相比,该结果相当糟糕 与精确解相比 该结果相当糟糕 究其原因,在求行乘数时用了很小的数0.0001作除数 究其原因 在求行乘数时用了很小的数 在求行乘数时用了很小的数 作除数
资源环境学科 3
如果在求解时将1,2行交换 即 如果在求解时将 行交换,即 行交换
资源环境学科
消去法求解(用 位十进制浮点数计算 位十进制浮点数计算) 用Gauss消去法求解 用3位十进制浮点数计算 消去法求解
2
主元
0.000100 1 1 A = ( A, b ) = 1 1 2
m21 =1.00×10 4
-9999
1 1 0.000100 → 4 4 0 − 1.00 × 10 − 1.00 × 10
相关文档
最新文档