计算方法大作业2 高斯消元解线性方程组

计算方法大作业2  高斯消元解线性方程组
计算方法大作业2  高斯消元解线性方程组

高斯列主元消元法解线性方程组

高斯列主元消元法解线性方程组 一、题目:用Gauss 列主元消去法解线性方程组Ax b =,其中, A=17.031 -0.615 -2.991 1.007 -1.006 0.000-1.000 34.211 -1.000 -2.100 0.300 -1.7000.000 0.500 13.000 -0.500 1.000 -1.5004.501 3.110 -3.907 -61.705 12.170 8.9990.101 -8.012 -0.017 -0.910 4.918 0.1001.000 2.000 3.000 4.500 5.000 21.803?? ? ? ? ? ? ? ? ??? 0.230 -52.322 54.000 240.236 29.304 -117.818b ?? ? ? ?= ? ? ? ? ??? T X=(0.907099 -1.961798 3.293738 -4.500708 3.029344 -5.255068) 二、原理及步骤分析 设 n n ij R a A ?∈=][)1(,n n R b b b b ∈=],,,[)1()2(2)1(1 。若约化主元素 ),,2,1(0)(n k a k kk =≠,则通过高斯消元法将方程b AX =约化为三角形方程组求解。 如果在消元过程中发现某个约化主元0) (=k kk a , 则第K 次消元就无法进行。此外,即 使所有约化主元全不为零,虽然可以完成方程组的求解,但也无法保证结果的可靠性,因为计算过程中存在舍入误差。 为减少计算过程中的舍入误差对解的影响,在每次消元前,应先选择绝对值尽可能大的元作为约元的主元,如果在子块的第一列中选取主元,则相应方法称为列主元消元法。相应过程为: (1)选主元:在子块的第一列中选择一个元) (k k i k a 使) (max k ik n i k k k i a a k ≤≤= 并将第k 行元与第k i 行元互换。 (2)消元计算:对k=1,2,……n-1依次计算 ()()()?? ?? ?????++=-=++=-=++==++n k k i b m b b n k k j i a m a a n k k i a a m k k ik k i k i k kj ik k ij k ij k kk k ik k ik ,,2,1,,2,1,,,2,1) ()()1() ()()1()() ()( (3)回代求解

数值分析列主元消去法的实验报告

实验一 列主元消去法 【实验内容】 1.掌握列主元消去法的基本思路和迭代步骤 2.并能够利用列主元的高斯消去法解任意阶数的线性方程组; 3、从课后题中选一题进行验证,得出正确结果,交回实验报告与计算结果。 【实验方法与步骤】 1.列主元消去法基本思路 设有线性方程组Ax b =,设A 是可逆矩阵。列主元消去法的基本思想就是通过列主元的选取将初等行变换作用于方程组的增广矩阵[]|B A b =,将其中的A 变换成一个上三角矩阵,然后求解这个三角形方程组。 2.列主元高斯消去法算法描述 将方程组用增广矩阵[]()(1)|ij n n B A b a ?+==表示。 步骤1:消元过程,对1,2,,1k n =-L (1) 选主元,找{},1,,k i k k n ∈+L 使得 ,max k i k ik k i n a a ≤≤= (2) 如果,0k i k a =,则矩阵A 奇异,程序结束;否则执行(3); (3) 如果k i k ≠,则交换第k 行与第k i 行对应元素位置,k kj i j a a ?, ,,1j k n =+L ; (4) 消元,对,,i k n =L ,计算/,ik ik kk l a a =对1,,1j k n =++L ,计算 .ij ij ik kj a a l a =- 步骤 2:回代过程: (1) 若0,nn a =则矩阵奇异,程序结束;否则执行(2); (2) ,1/;n n n nn x a a +=对1,,2,1i n =-L ,计算 ,11/n i i n ij j ii j i x a a x a +=+??=- ??? ∑

[实验程序] #include #include #include #include #define NUMBER 20 #define Esc 0x1b #define Enter 0x0d using namespace std; float A[NUMBER][NUMBER+1] ,ark; int flag,n; void exchange(int r,int k); float max(int k); void message(); void main() { float x[NUMBER]; int r,k,i,j; char celect; void clrscr(); printf("\n\nUse Gauss."); printf("\n\n1.Jie please press Enter."); printf("\n\n2.Exit press Esc."); celect=getch(); if(celect==Esc) exit(0); printf("\n\n input n="); scanf("%d",&n); printf(" \n\nInput matrix A and B:"); for(i=1;i<=n;i++) { printf("\n\nInput a%d1--a%d%d and b%d:",i,i,n,i); for(j=1;j<=n+1;j++) scanf("%f",&A[i][j]); } for(k=1;k<=n-1;k++) { ark=max(k); if(ark==0) { printf("\n\nIt’s wrong!");message();

高斯消元法(完整)

高斯消元法解线性方程组 在工程技术和工程管理中有许多问题经常可以归结为线性方程组类型的数学模型,这些模型中方程和未知量个数常常有多个,而且方程个数与未知量个数也不一定相同。那么这样的线性方程组是否有解呢?如果有解,解是否唯一?若解不唯一,解的结构如何呢?这就是下面要讨论的问题。 一、线性方程组 设含有n 个未知量、有m 个方程式组成的方程组 a x a x a x b a x a x a x b a x a x a x b n n n n m m mn n m 11112211211222221122+++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.1) 其中系数a ij ,常数b j 都是已知数,x i 是未知量(也称为未知数)。当右端常数项b 1, b 2, …, b m 不全为0时,称方程组(3.1)为非齐次线性方程组;当b 1=b 2= … =b m = 0时,即 a x a x a x a x a x a x a x a x a x n n n n m m mn n 111122121122221122000 +++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.2) 称为齐次线性方程组。 由n 个数k 1, k 2, …, k n 组成的一个有序数组(k 1, k 2, …, k n ),如果将它们依次代入方程组(3.1)中的x 1, x 2, …, x n 后,(3.1)中的每个方程都变成恒等式,则称这个有序数组(k 1, k 2, …, k n )为方程组(3.1)的一个解。显然由x 1=0, x 2=0, …, x n =0组成的有序数组(0, 0, …, 0)是齐次线性方程组(3.2)的一个解,称之为齐次线性方程组(3.2)的零解,而当齐次线性方程组的未知量取值不全为零时,称之为非零解。 (利用矩阵来讨论线性方程组的解的情况或求线性方程组的解是很方便的。因此,我们先给出线性方程组的矩阵表示形式。) 非齐次线性方程组(3.1)的矩阵表示形式为: AX = B 其中 A = ????????????mn m m n n a a a a a a a a a ΛΛΛΛΛΛΛ212222111211,X = ????????????n x x x M 21, B = ????? ???????n b b b M 21 称A 为方程组(3.1)的系数矩阵,X 为未知矩阵,B 为常数矩阵。将系数矩阵A 和常数矩阵B 放在一起构成的矩阵

高斯消去法算法实验报告

算法设计与分析基础 实验报告 应用数学学院 二零一六年六月

实验高斯消去法算法 一、实验性质设计 二、实验学时14学时 三、实验目的 1、掌握高斯消去法的方法和原理。 2、掌握java语言实现该算法的一般流程。 四、实验内容 1、数组的输入。 2、高斯消去法的算法流程。 4、运行结果的输出。 五、实验报告 Ⅰ、算法原理 通过一系列的初等变换,交换方程组中两个方程的位置,把一个方程替换为它的非零倍,把一个方程替换为它和另一个方程倍数之间的和 或者差。 Ⅱ、Java算法代码: import java.util.Scanner; publicclass Gaosi { publicstaticvoid main(String[] args) { Gao ga = new Gao(); ga.set(); ga.yunSuan(); } } class Gao {

double A[][], B[], X[], ss, sum; int n, k, j, t; void set() { System.out.println("请输入方程组中方程的个数:"); Scanner sc = new Scanner(System.in); n = sc.nextInt(); A = newdouble[n][n]; B = newdouble[n]; X = newdouble[n]; System.out.println("请输入各方程的系数:"); Scanner sd = new Scanner(System.in); for (int i = 0; i

消元法实验报告4

西京学院数学软件实验任务书

《数值分析》实验报告 实验一 一、实验目的与要求 1.掌握高斯列主元消去法解线性方程组的基本思路; 2.了解一些计算机的算法,会以某种汇编语言实现算法结果(本实验主要用matlab编程) 二、实验内容 1.编写用高斯列主元消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. (1) 123 123 123 221 1 221 x x x x x x x x x +-= ? ? ++= ? ?++= ? (2) 123 123 123 21 1 21 x x x x x x x x x -+= ? ? ++= ? ?+-= ? 2.列主元消元法及其matlab程序function [Ra,Rb,n,X]=GaussXQLineMain(A,b) %高斯列主元消元法,其中B为增广矩阵 B=[A b]; %读入b的长度 n=length(b); %读出矩阵a,b秩 Ra=rank(A); Rb=rank(B); if (Rb-Ra)>0 disp('因为Ra不等于Rb,所以此方程组无解.') return end if Ra==Rb if Ra==n disp('因为Ra=Rb=n,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 %找出列中最大的元素并指出他的位置

[Y,j]=max(abs(B(p:n,p))); C=B(p,:); B(p,:)= B(j+p-1,:); B(j+p-1,:)=C; for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); end end b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end else disp('因为Ra=Rb> clear; A=[1 2 -2;1 1 1;2 2 1 ]; b=[1;1;1]; [Ra,Rb,n,X] =GaussXQLineMain(A,b) 因为Ra=Rb=n,所以此方程组有唯一解. Ra = 3 Rb = 3 n = 3 X = -3.0000 3.0000 1.0000 方程组(2)过程

用高斯消元法求解线性代数方程组.(优选)

用高斯消元法求解线性代数方程组 1234111 5 -413-2823113-2104151 3-21719x x x x ??????????????????=?????? ?????? ?????? 1111X *??????=?????? (X*是方程组的精确解) 1 高斯消去法 1.1 基本思想及计算过程 高斯(Gauss )消去法是解线性方程组最常用的方法之一,它的基本思想是通过逐步消元,把方程组化为系数矩阵为三角形矩阵的同解方程组,然后用回代法解此三角形方程组得原方程组的解。 为便于叙述,先以一个三阶线性方程组为例来说明高斯消去法的基本思想。 ??? ??=++II =++I =++III) (323034)(5 253)(6432321 321321x x x x x x x x x 把方程(I )乘(2 3 - )后加到方程(II )上去,把方程(I )乘(2 4- )后加到方程(III )上 去,即可消去方程(II )、(III )中的x 1,得同解方程组 ?? ? ??=+-II -=-I =++III) (20 223)(445.0)(6 4323232321x x x x x x x 将方程(II )乘( 5 .03 )后加于方程(III ),得同解方程组: ?? ? ??-=-II -=-I =++III) (42)(445.0)(6432332321x x x x x x 由回代公式(3.5)得x 3 = 2,x 2 = 8,x 1 = -13。 下面考察一般形式的线性方程组的解法,为叙述问题方便,将b i 写成a i , n +1,i = 1, 2,…,n 。

Gauss列主元消去法程序设计

《Gauss列主元消去法》实验报告 实验名称:Gauss列主元消去法程序设计???成绩:_________ 专业班级:数学与应用数学1202班?姓名:王晓阳???学号: 实?验?日?期:?2014?年11月10日 实验报告日期:?2014年?11月10日 一.实验目的 1. 学习Gauss消去法的基本思路和迭代步骤. 2. 学会运用matlab编写高斯消去法和列主元消去法程序,求解线性方程组. 3. 当绝对值较小时,采用高斯列主元消去法? 4. 培养编程与上机调试能力. 二、实验内容 用消去法解线性方程组的基本思想是用逐次消去未知数的方法把原线性方程组Ax二b 化为与其等价的三角形线性方程组,而求解三角形线性方程组可用回代的方法求解 1. 求解一般线性方程组的高斯消去法? (1) 消元过程: 设a kk k-0 ,第i个方程减去第k个方程的m ik Tk k倍,("k 1^1, n),得到 A k1x=b k1.

经过n-1次消元,可把方程组A1^b1化为上三角方程组A n x=b n. ⑵回代过程: 以解如下线性方程组为例测试结果 2. 列主元消去法 由高斯消去法可知,在消元过程中可能出现a kk k =0的情况,这是消去法将无法进行, 即使主元素a kk k-0但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,最后也使得计算解不可靠.这时就需要选取主元素,假定线性方程组的系数矩阵A是菲奇异的. (1)消元过程: 对于k =1,2,川,n -1,进行如下步骤: 1) 按列选主元,记 2) 交换增广阵A的p,k两行的元素 A(k,j)=A(p,j) ( j=k,…,n +1) 3) 交换常数项b的p,k两行的元素。 b(k)=b(p) 4) 计算消元 (2) 回代过程 (3) 以解如下线性方程组为例测试结果 三、实验环境 MATLAB R2014a 四、实验步骤

计算方法实验三线性方程组解法列主元高斯消去法

实验报告 学院:电子信息工程 实验课程:计算方法 学生姓名: 学号: 专业班级:通信工程

实验三线性方程组解法 1 目的与要求 (1)进一步理解和掌握求线性方程组数值解的有关方法和理论。(2)完成利用列主元高斯消去法、雅可比迭代法及高斯-赛德尔迭代法求线性方程组数值解的程序设计。本次实验只需完成列主元高斯消去法的程序设计。 (3)比较三种算法的不同特点。 2 实验内容 通过编制程序,分别用列主元高斯消去法、雅可比迭代法及高斯-赛德尔迭代法计算如下方程组的解。 设初始值为要求满足前后两次迭代结果的差向量的 1 范数小于 3 实验原理 1)列主元高斯消去法 列主元高斯消去法就是在顺序高斯消去法的基础上,每步消元之前都要进行选主元操作,即在第k 步消元前,在第k 列的元素 中选取绝对值最大的元素,设为

,然后交换第 k 行和第 p 行,继续进行消去过程,直到获得上三角方程组,然后通过回代得到方程的根。 4 程序设计 (1)流程图 列主元高斯消去程序流程图 (2)程序代码 #include #include void main() { float a[3][4],x,s; int i,j,m,k; printf("please input coeffient martix array:\n");

for(i=0;i<3;i++) //输入增广矩阵// { for(j=0;j<4;j++) { scanf("%f",&a[i][j]); } } printf("\n"); printf("Output the input matrix"); printf("\n"); for(i=0;i<3;i++) //输出输入的矩阵// { for(j=0;j<4;j++) { printf("%8.4f",a[i][j]); } printf("\n"); } printf("\n"); for(k=0;k<=2;k++) //在不同列中选主元// { m=k;

线性方程组的Guass消元法求解

西京学院数学软件实验任务书 课程名称数学软件实验班级数学0901 学号0912020112 姓名*** 实验课题 线性方程组高斯消去法,高斯列主元消去法,高斯全 主元消去法 实验目的熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法 实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成 实验内容线性方程组高斯消去法 线性方程组高斯列主元消去法线性方程组高斯全主元消去法 成绩教师

实 验 报 告 实验名称:Guass 消元法编程求解线性方程 实验目的:进一步熟悉理解Guass 消元法解法思路 学习matlab 编程 实验要求: 已知:线性方程矩阵 输出:线性方程组的解 程序流程: 输入矩阵 调用函数求解矩阵 输出方程组的解 实验原理: 消元过程: 设0) 0(11 ≠a ,令乘数) 0(11 ) 0(11/a a m i i -=,做(消去第i 个方程组的i x )操 作1i m ×第1个方程+第i 个方程(i=2,3,.....n ) 则第i 个方程变为1 )1(2)1(2 ...i n in i b x a x a =++ 这样消去第2,3,… ,n 个方程的变元i x 后。原线性方程组变为 ?? ?? ? ????=++=++=++) 1()1(2)1(2)1(2)1(22)1(22)0(1)0(11)0(11... . . ... ...n n nn n n n n n b x a x a b x a x a b x a x a

这样就完成了第1步消元。 对线性方程组中有第2,3,.。。。N 个方程组成的n —1元线性方程组做同样的处理,消去其除第一个方程组之外的所有变元2x ,可得到 ???? ?? ? ??????=++=++=++=++)3()3(3)3(3)2(3)2(33)2(33)1(2)1(22)1(22)0(1)0(11)0(11... . . . ... ... ...n n nn n n n n n n n b x a x a b x a x a b x a x a b x a x a 依次类推,当做到n-1步消元后,就完成了Guass 消元过程,得到上三角方程组 实验内容:利用Guass 消元操作的原理,求解线性方程组 ?? ?? ? ????==++=++--) 1()1()1(2)1(22)1(22) 0(1)0(11)0(11 . . ... ...n n n n nn n n n n b x a b x a x a b x a x a 回代过程: 在最后的一方程中解出n x ,得:) 1() 1(/--=n nn n n n a b x 再将n x 的值代入倒数第二个方程,解出1-n x ,依次往上反推,即可求出方程组的解: 其通项为3, (1) -n 2,-n k /)() 1(1 )1()1(=- =-+=--∑k kk n k j j k kj k k k a x a b x 流程图如下:

高斯消元法解线性方程组

高斯消元法解线性方程组 C++实验报告2015年6月 一、完成人 王婧婷张子承郗滢 二、问题描述 线性方程组问题是大学阶段经常研究的问题,为了进一步熟悉理解高斯消元法的解题思路并且掌握编程语言在数学方面的应用。且为解决线性方程组问题提供便利,要求给出线性方程组的矩阵,能够输出线性方程组的解。 三、解决方案设计 基本程序流程为: (1)输入矩阵 (2)运用初等行变换将其化为阶梯型矩阵 (3)调用一个函数:r()求其秩(有解时)及其无解情况 实验原理为: (1)系数矩阵及其增广矩阵经过初等行变换所得到的矩阵对应的方程与原方程同解 (2)化为阶梯型矩阵过程(输入增广矩阵后,运用初等行变换,使其a[i][i]以下全为零,若a[i][i]为零,运用行变换交换使其不为零) (3)输出阶梯型矩阵 (4)判断解情况并输出(解情况)

(5)输出解 四、模块及代码组织设计 其基本模块分为三大部分,7小部分。第一部分为输入矩阵阶段,用for语句实现。第二部分是对矩阵进行一系列的处理以求得线性方程组的解,先运用初等行变换化为阶梯型,并输出化简矩阵;然后以线性方程组的秩判断其是否有解(规定无解时秩为零)。第三部分是输出线性方程组的解情况及其解,如果无解即输出无解。 五、关键代码 (1)实现化为阶梯型的代码 实现此功能的代码是整个程序的重要内容,其需要进行的初等变换以实现校园的目的,使线性方程组得到简化。其实现如下: for( i=0; i<=n-1&&i

高斯消元法讲解

#include "Stdio.h" #include "Conio.h" /*L是矩阵的行减1,从程序上看是最外层循环的次数 N 对应矩阵的行数,M对应矩阵的列数 可以通过改变L、N、M来控制矩的阶数 */ #define L 3 #define N 4 #define M 5 void gauss(double a[N][M],double x[N]) {int i,j,l,n,m,k=0; double temp[N]; /*第一个do-while是将增广矩阵消成上三角形式*/ do{n=0; for(l=k;l=0;l--)temp[n++]=a[k-l][k+1]/a[k+1][k+1]; for(m=0,i=k;i>=0;i--,m++) for(j=k;j=0) ; /*下一个for是解方程组*/ for(i=0;i

完整版高斯消元法MATLAB实现

《数值分析》实验报告 一、实验目的与要求 1.掌握高斯消去法的基本思路和迭代步骤; 2.培养编程与上机调试能力。 二、实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. 5x?2x?x?80.101x?2.304x?3.555x?1.183??312312??(1)(2) 21x?8x?32x?2.137x?3.712x?4.623?1.347x???312312??1x?3x?6x??2.835x?1.072x?5.643x?3.035??132 312 2.编写用列主元高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. 5x?2x?x?80.101x?2.304x?3.555x?1.183??312312??(1)(2) 2x?8x?3x?212.137?4.6231.347?x?3.712x?x??321321??1x?3x?6x??2.835x?1.072x?5.643x?3.035??132 312三.MATLAB计算源程序 AX?b MATLAB1. 程序用高斯消元法解线性方程组的b;输入的量:系数矩阵和常系数向量A RA,RB, n方程组中未知量的个数的秩输出的量:系数矩阵和增广矩阵BA.及其解的信息和有关方程组解X gaus(A,b) function [RA,RB,n,X]=B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('RA~=RB.') ,所以此方程组无解请注意:因为return end if RA==RB if RA==n disp('RA=RB=n.') ,所以此方程组有唯一解请注意:因为X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);

(完整版)解线性方程组的消元法及其应用

解线性方程组的消元法及其应用 (朱立平 曲小刚) ● 教学目标与要求 通过本节的学习,使学生熟练掌握一种求解方程组的比较简便且实用的方法—高斯消元法,并能够熟练应用消元法将矩阵化为阶梯形矩阵和求矩阵的逆矩阵. ● 教学重点与难点 教学重点:解线性方程组的高斯消元法,利用消元法求逆矩阵. 教学难点:高斯消元法,利用消元法求逆矩阵. ● 教学方法与建议 先向学生说明由于运算量的庞大,克莱姆法则在实际应用中是很麻烦的,然后通过解具体的方程组,让学生自己归纳出在解方程组的时候需要做的三种变换,从而引出解高阶方程组比较简便的一种方法—高斯消元法,其三种变换的实质就是对增广矩阵的初等行变换,最后介绍利用消元法可以将矩阵化为阶梯形矩阵以及求矩阵的逆。 ● 教学过程设计 1.问题的提出 由前面第二章的知识,我们知道当方程组的解唯一的时候,可以利用克莱姆法则求出方程组的解,但随着方程组阶数的增高,需要计算的行列式的阶数和个数也增多,从而运算量也越来越大,因此在实际求解中该方法是很麻烦的. 引例 解线性方程组 ??? ??=+-=+=++132724524321 21321x x x x x x x x )3()2()1( 解 (1)???→??)2()1(?????=+-=++=+13245247 232132121x x x x x x x x )3()2()1(????→?+-?+-?) 3()2()1()2()4()1(?????-=+-=+=+133524567232 3221x x x x x x )3()2()1(

????→?+-?)3()65 ()2(??????? =--=+=+76 724567233221x x x x x )3()2()1( 用回代的方法求出解即可. 问题:观察解此方程组的过程,我们总共作了三种变换:(1)交换方程次序,(2)以不等于零的数乘某个方程,(3)一个方程加上另一个方程的k 倍.那么对于高阶方程组来说,是否也可以考虑用此方法. 2.矩阵的初等变换 定义1 阶梯形矩阵是指每一非零行第一个非零元素前的零元素个数随行序数的增加而增加的矩阵. 定义2 下面的三种变换统称为矩阵的初等行变换: i. 互换矩阵的两行(例如第i 行与第j 行,记作j i r r ?), ii. 用数0≠k 乘矩阵的某行的所有元素(例如第i 行乘k ,记作i kr ), iii. 把矩阵某行的所有元素的k 倍加到另一行的对应元素上去(例如第j 行的k 倍加到第i 行上,记作j i kr r +). 同理可以定义矩阵的初等列变换. 定义 3 如果矩阵A 经过有限次初等变换变为矩阵B ,则称矩阵A 与B 等价,记作 A ~ B . 注:任意一个矩阵总可以经过初等变换化为阶梯形矩阵. 3. 高斯消元法 对于一般的n 阶线性方程组 ?????? ?=++=+++=+++n n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a ΛΛΛΛΛΛΛΛΛΛΛΛΛΛΛ22112 22221211 1212111 )()2()1(n (3.1) 若系数行列式0det ≠A ,即方程组有唯一解,则其消元过程如下: 第一步,设方程(1)中1x 的系数01≠l a 将方程)(l 与(1)对调,使对调后的第一个方程1x 的系数不为零.作)1(11 1 a a i i - ),3,2(n i Λ=,得到同解方程组 ?? ? ????=++=++=+++)1()1(2)1(2) 1(2 )1(22)1(22)0(1)0(12)0(121)0(11n n nn n n n n n b x a x a b x a x a b x a x a x a ΛΛΛΛΛΛΛΛΛΛΛΛΛ (3.2) 第二步,设0) 1(22≠a ,保留第二个方程,消去它以下方程中的含2x 的项,得

消元法解线性方程组

消元法解线性方程组 学校:青海师范大学 院系:数学系 专业:数学与应用数学 班级:10B 指导教师:邓红梅 学号:20101611218 姓名:梅增旺

摘要:线性方程组在数学的各个分支,在自然科学,工程技术,生产实际中经常遇到,而且未知元的个数及方程的个数可达成百上千,因此它的理论是很重要的,其应用也很广泛。本篇将就解线性方程组在此做一浅谈,以消元法为主要方法。消元法是解一般线性方程组行之有效的方法,早在中学大家都已经有接触,消元法的基本思想是通消元变形把方程组化成容易求解的同解方程组进行求解。 关键字:线性方程组消元法求解 Abstract: linear equations in various branches of mathematics, natural science,engineering technology, often encountered in actual production, and the unknown element number and the number of equations can be hundreds, so itis important in the theory, its application is very extensive. This article on thesolution of linear equations based on a discussion, mainly by means ofelimination method. Elimination method is the general linear equations ofeffective early in high school, everyone has a contact, the basic idea ofelimination method is through the elimination of the equations of deformationinto easy to solve with the solution of equations. Keywords:elimination method for solving linear equations

MATLAB之GAUSS消元法解线性方程组

Matlab之Gauss消元法解线性方程组 1.Gauss消元法 function x=DelGauss(a,b) %Gauss消去法 [n,m]=size(a); nb=length(b); det=1;%存储行列式值 x=zeros(n,1); for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k);%计算行列式 end det=det*a(n,n); for k=n:-1:1%回代求解 for j=k+1:n b(k)=b(k)-a(k,j)*x(j); end x(k)=b(k)/a(k,k);

end Example: >>A=[1.0170-0.00920.0095;-0.00920.99030.0136;0.00950.0136 0.9898]; >>b=[101]'; >>x=DelGauss(A,b) x= 0.9739 -0.0047 1.0010 2.列主元Gauss消去法: function x=detGauss(a,b) %Gauss列主元消去法 [n,m]=size(a); nb=length(b); det=1;%存储行列式值 x=zeros(n,1); for k=1:n-1 amax=0;%选主元 for i=k:n if abs(a(i,k))>amax amax=abs(a(i,k));r=i; end end if amax<1e-10 return;

“线性方程组高斯消去法”实验报告(内含matlab程序)

实验一实验报告 一、实验名称:线性方程组高斯消去法。 二、实验目的:进一步熟悉理解Guass 消元法解法思路,提高matlab 编程能力。 三、实验要求:已知线性方程矩阵,利用软件求解线性方程组的解。 四、实验原理: 消元过程: 设0)0(11≠a ,令乘数)0(11 )0(11/a a m i i -=,做(消去第i 个方程组的i x )操作1i m ×第1个方程+第i 个方程(i=2,3,.....n ) 则第i 个方程变为1)1(2)1(2...i n in i b x a x a =++ 这样消去第2,3,。。。,n 个方程的变元i x 后。原线性方程组变 为: ???? ?????=++=++=++)1()1(2)1(2)1(2)1(22)1(22)0(1)0(11)0(11... . . ... ...n n nn n n n n n b x a x a b x a x a b x a x a 这样就完成了第1步消元。 回代过程: 在最后的一方程中解出n x ,得:)1()1(/--=n nn n n n a b x

再将n x 的值代入倒数第二个方程,解出1-n x ,依次往上反推,即可求出方程组的解: 其通项为3,...1-n 2,-n k /)()1(1)1()1(=-=-+=--∑k kk n k j j k kj k k k a x a b x 五、实验内容: A=[1 1 1;0 4 -1;2 -2 1];%?μêy???ó b=[6 5 1]'%3£êy?? num=length(b) for k=1:num-1 for i=k+1:num if A(k,k)~=0 l=A(i,k)/A(k,k); A(i,:)=A(i,:)-A(k,:).*l; b(i)=b(i)-b(k)*l; end end end A b %??′ú?óx x(num)=b(num)/A(num,num); for i=num-1:-1:1 sum=0; for j=i+1:num sum=sum+A(i,j)*x(j); end x(i)=(b(i)-sum)/A(i,i); end x 六、实验结果:

UL分解与高斯消元法实验报告

数值方法实验报告 课程名称:LU分解法与高斯消元法 学院:数学与财经学院 专业:信息与计算科学(金融软件)年级:2011级 姓名:郑荐 学号:201102334023 指导教师:李梦

实验一 【实验名称】 实现LU算法,并利用该算法求解线性方程组 【实验目的】 了解如何用LU三角分解法解线性方程组,利用LU三角分解法解线性方程组 【实验原理】 设无行交换变换的高斯消去法可求解一般线性方程组AX=B,则矩阵A可分解为一个下三角矩阵L和一个上三角矩阵U乘积: A=LU 而且L的对角线元素为1,U的对角线元素非零。得到L和U后,可通过如下步骤得到X: 1.利用向前替换法对方程组L Y=B求解Y。 2.利用回带法对方程组UX=Y求解X。 【实验步骤】 1.输入矩阵A 2.LU分解A,得到L矩阵与U矩阵的值[L U]=LU_1(A) 3.输入矩阵B,利用向前回带法求出Y值Y=upsub(L,B) 4.利用回带发求出X值[X]=backsub(U,Y) 【实验程序】 1.LU分解 代码: function [L U]=LU_1(A) n=length(A(1,:)); L=eye(n); U=zeros(n); for j=1:n U(1,j)=A(1,j); end for i=2:n L(i,1)=A(i,1)/U(1,1); end for k=2:n for j=k:n U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j); end for i=k+1:n L(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k))/U(k,k); end end 结果:

高斯消元法简介

高斯消元法简介 一,教学目标 知识与技能:了解高斯消元法 过程与方法:直接演示说明,学习做简单练习 情感,态度和价值观:进一步体会解方程组的根本思想消元,通过高斯消元的学习增强学习数学的能力 二,重点与难点:高斯消元法 三,课型:新授课 四,教学过程: 1.在前面的几节课,已经用加减消元和代入消元法求解二元或者三元一次方程组,其基本的思想就是从已知的方程导出未知数较少的方程组,直到最后得到一个一元一次方程,这种做法可适用于一般的n 元线性方程组(线性方程组),但是由于未知数的增加,我们希望我们的消元是有规律的,以避免混乱,下面介绍高斯消元法 2.例1:解方程组 1234123412341234251027612632517315292763 x x x x x x x x x x x x x x x x ---=?? -++-=?? ---=??--++=-? 解:把第一个方程的2倍,-3倍,5倍分别加到第2,3,4个方程上,可以消去2,3,4个 方程的未知数1x 12342342342342510 522226 2 1 7213 x x x x x x x x x x x x x ---=?? +-=?? +-=??--+=-? 为了使以后少出现分数运算,交换第二,三个方程的位置 12342342342342510 2 1 522226 7213 x x x x x x x x x x x x x ---=?? +-=?? +-=??--+=-? 把第2个方程的-5倍,7倍分别加到第3,4个方程,可以消去第3,4个方程未知数2x 123423434342510 2 1 31221 6126 x x x x x x x x x x x ---=?? +-=?? --=??-=-? 整理一下方程,第3个方程的左右两边乘以13 - ,第4个方程左右两边乘以1 6 123423434342510 2 1 47 21 x x x x x x x x x x x ---=?? +-=?? +=-??-=-?

数值分析实验二(列主元Gauss消去法)

《数值分析》实验报告 实验编号:实验二 课题名称:列主元Gauss消去法 一、算法介绍 1、输入矩阵的阶数n,方程组的增广矩阵A; 2、对k=0,1,…,n-2,循环:选取列中绝对值最大的元素,将主元所在的行的元素保存在 数组temp[n+1]中。若主元为零,则系数矩阵奇异,计算停止;否则,顺序进行。如果绝对值最大的元素就在矩阵的对角线上,则进行普通高斯消元法的第一大步,否则将方程组系数换行之后再进行普通高斯消元法的第一大步; 3、然后利用回代法求解线性方程组。 二、程序代码 #include #include #include using namespace std; int main() { int n=0,k=0,i=0,j=0,h=0,g=0,flag=0,i1,j1; double max=0,m=0; cout<<"***利用列主元Gauss消元法求解线性方程组***"<>n; double a[n][n+1]; double t[n+1]; double x[n]; memset(a,0,sizeof(a)); memset(x,0,sizeof(x)); cout<<"请输入方程组的增广矩阵:"<>a[i][j]; } } for(k=0;kmax) { max=fabs(a[i][k]); i1=i; j1=k; } } if(max==0)

相关文档
最新文档