文档库 最新最全的文档下载
当前位置:文档库 › 顺序高斯消去法的计算步骤

顺序高斯消去法的计算步骤

顺序高斯消去法的计算步骤

顺序高斯消去法的计算步骤

高斯消去法C语言程序

高斯消去法C语言程序 XYYZ 2006年4月9日 #include #include #define N 4 void main() { int k,i,j,ii=0,jj=0,z[N],tt; double a[N][N],b[N],sum,x[N],y[N],sp,t; printf("请输入原始增广矩阵(按行输入):\n"); for(i=0;i

数值分析编程及运行结果(高斯顺序消元法)

高斯消元法1.程序: clear format rat A=input('输入增广矩阵A=') [m,n]=size(A); for i=1:(m-1) numb=int2str(i); disp(['第',numb,'次消元后的增广矩阵']) for j=(i+1):m A(j,:)=A(j,:)-A(i,:)*A(j,i)/A(i,i); end A end %回代过程 disp('回代求解') x(m)=A(m,n)/A(m,m); for i=(m-1):-1:1 x(i)=(A(i,n)-A(i,i+1:m)*x(i+1:m)')/A(i,i); end x

2.运行结果:

高斯选列主元消元法1.程序: clear format rat A=input('输入增广矩阵A=') [m,n]=size(A); for i=1:(m-1) numb=int2str(i); disp(['第',numb,'次选列主元后的增广矩阵']) temp=max(abs(A(i:m,i))); [a,b]=find(abs(A(i:m,i))==temp); tempo=A(a(1)+i-1,:); A(a(1)+i-1,:)=A(i,:); A(i,:)=tempo disp(['第',numb,'次消元后的增广矩阵']) for j=(i+1):m A(j,:)=A(j,:)-A(i,:)*A(j,i)/A(i,i); end A end %回代过程 disp('回代求解')

x(m)=A(m,n)/A(m,m); for i=(m-1):-1:1 x(i)=(A(i,n)-A(i,i+1:m)*x(i+1:m)')/A(i,i); end x 2.运行结果:

“线性方程组高斯消去法”实验报告(内含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 六、实验结果:

高斯消元法Fortran90程序

本文末给出Gauss-Jordan消去法的Fortran90源程序。 !/************************************************************* !程序:Gauss_Jordan消去法 !过程:Gauss_Jordan(aa,b,n,sgn) !作用:aa为方阵,b为aa的逆,n为aa的阶 ! sgn为标识符,1表示求逆成功,0表示求逆失败 !调用格式为:call Gauss_Jordan(aa,b,n,sgn) !*************************************************************/ subroutine Gauss_Jordan(aa,b,n,sgn) implicit none integer(4):: n,sgn real(8):: aa(n,n),b(n,n) integer(4):: i,j,k real(8),allocatable:: a(:,:) real(8):: t allocate(a(n,n)) a=aa ! a代替aa进行运算 sgn=1 ! 初始化b为单位阵 do i=1,n do j=1,n if(i==j) then b(i,j)=1 else b(i,j)=0 end if end do end do ! Gauss_Jordan消去法过程 do k=1,n if(a(k,k)==0) then sgn=0;EXIT end if ! 化第k行使得a(k,k)为1 t=1.0d0/a(k,k) do j=k,n a(k,j)=a(k,j)*t end do do j=1,n b(k,j)=b(k,j)*t end do ! 完成第k列的计算 do i=1,n

高斯消元法MATLAB实现

《数值分析》实验报告 一、实验目的与要求 1.掌握高斯消去法的基本思路和迭代步骤; 2.培养编程与上机调试能力。 二、实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. (1) 123 123 123 0.101 2.304 3.555 1.183 1.347 3.712 4.623 2.137 2.835 1.072 5.643 3.035 x x x x x x x x x ++= ? ? -++= ? ?-++= ? (2) 123 123 123 528 28321 361 x x x x x x x x x ++= ? ? +-= ? ?--= ? 2.编写用列主元高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. (1) 123 123 123 0.101 2.304 3.555 1.183 1.347 3.712 4.623 2.137 2.835 1.072 5.643 3.035 x x x x x x x x x ++= ? ? -++= ? ?-++= ? (2) 123 123 123 528 28321 361 x x x x x x x x x ++= ? ? +-= ? ?--= ? 三.MATLAB计算源程序 1. 用高斯消元法解线性方程组b AX=的MATLAB程序 输入的量:系数矩阵A和常系数向量b; 输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n 和有关方程组解X及其解的信息. function [RA,RB,n,X]=gaus(A,b) 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)普通的线性方程组 ①顺序消去法 #include #include int main(void) { float A[10][10]= {{4,2,-3,-1,2,1,0,0,0,0}, {8,6,-5,-3,6,5,0,1,0,0}, {4,2,-2,-1,3,2,-1,0,3,1}, {0,-2,1,5,-1,3,-1,1,9,4}, {-4,2,6,-1,6,7,-3,3,2,3}, {8,6,-8,5,7,17,2,6,-3,5},

{0,2,-1,3,-4,2,5,3,0,1}, {16,10,-11,-9,17,34,2,-1,2,2}, {4,6,2,-7,13,9,2,0,12,4}, {0,0,-1,8,-3,-24,-8,6,3,-1} }; float b[10]= {5,12,3,2,3,46,13,38,19,-21}; float x[10]= {0}; float Aik,S,temp; int i,j,k; int size=10; for(k=0; k

高斯消去法和列主元高斯消去法解线性方程组的程序(C语言)

//Gauss消去法解线性方程组 //参考教材《计算方法教程》第二版,西安交通大学出版社#include int main(void) { float A[7][7]={{3,-5,6,4,-2,-3,8}, {1,1,-9,15,1,-9 ,2}, {2,-1,7,5,-1,6,11}, {-1,1,3,2,7,-1,-2}, {4,3,1,-7,2,1,1}, {2,9,-8,11,-1,-4,-1}, {7,2,-1, 2,7,-1,9}}; float b[7]={11,2,29,9,5,8,25}; float x[7]={0}; float Aik,S; int i,j,k; int size=7; printf("A[][]\n"); for(i=0;i

} //消去的结果 printf("A[]\n"); for(i=0;i=0;k--) { S=b[k]; for(j=k+1;j #include int main(void) { float A[7][7]={{3,-5,6,4,-2,-3,8}, {1,1,-9,15,1,-9 ,2}, {2,-1,7,5,-1,6,11},

(完整版)数值计算用C编程实现gauss顺序消去法

用C 编程实现gauss 顺序消去法 班级: 09医软(一)班 姓名: 包优 学号: 09713001 姓名: 曹俊武 学号: 09713003 姓名: 查海松 学号: 09713004 一、 实验名称 用c 编程实现gauss 顺序消去法 二、 执行步骤 设有线性方程组 Ax = b (1.1) 其中 A=??????????????nn n n n n a a a a a a a a a K K K K K K K 2122221 11211,x=??????????????n x x x M 21,b=?????????? ????n b b b M 21 为了清晰起见,以n=4为例来说明消去法的过程,将方程组写成如下的形式 ??? ?????? ?????=+++=+++=+++=+++)1(44)1(443)1(432)1(421)1(41)1(34)1(343)1(332)1(321)1(31)1(24)1(243)1(232)1(221)1(21)1(14)1(143)1(132)1(121)1(11b x a x a x a x a b x a x a x a x a b x a x a x a x a b x a x a x a x a (1.2) Gauss 消去法的过程是: 第1步 假定)1(11a ≠0 ,在方程组(1,2)中保留第一个方程,将第一 个方程分别乘 21)1(11)1(21l a a = 、 31)1(11)1(31l a a = 、41)1(11 )1(41l a a = ,再分别减第二个、第三

个、第四个方程便得到方程组(1,2)的等价方程组 ??? ?????? ?????=++=++=++=+++)2(44)2(443)2(432)2(42)2(34)2(343)2(332)2(32)2124)2(243)2(232)2(22)1(14)1(143)1(132)1(121)1(11b x a x a x a b x a x a x a b x a x a x a b x a x a x a x a (1.3) 其中)1(11)1()2(j i ij ij a l a a -=(j=2,3,4,5,;i=2,3,4,),)1(11)1()2(b l b b i i i -=(i=2,3,4). 第2 步 假定0)2(22 ≠a ,在方程组(1,3)中保留第一及第二个方程分别乘以 32)2(22)2(32l a a = ,42)2(22 )2(42l a a =再分别减第三个、第四个方程便可得到方程组(1,3)的等价方程组 ??? ?????? ?????=+=+=++=+++)3(44)3(443)3(43)3(34)3(343)3(33)2124)2(243)2(232)2(22)1(14)1(143)1(132)1(121)1(11b x a x a b x a x a b x a x a x a b x a x a x a x a (1.4) 其中)2(22)2()3(j i ij ij a l a a -=(j=3,4;i=3,4))2(22)2()3(b l b b i i i -=(i=3,4) 第3步 假定0)3(33≠a ,保留方程组(1,4)的前3个方程,将第三个方程 乘 43)3(33 )3(43l a a = ,再减去第四个方程便可得到方程组(1,4)的等价方程组 ??? ?????? ?????==+=++=+++)4(44)4(44)3(34)3(343)3(33)2124)2(243)2(232)2(22)1(14)1(143)1(132)1(121)1(11b x a b x a x a b x a x a x a b x a x a x a x a (1.5) 其中)3(3443)3(44)4(44a l a a -=,)3(343)3(4)4(4 b l b b -=。 由方程组(1,2)经过3步得到等价方程组(1,5)的过程称为消元过程。由方程组(1,5)的最后一个方程求出x4,将x4带入第三个方程便可求出得x3,

高斯消元法

求解线性方程组的直接解法 5.1 Gauss 消去法 ① 三角方程组 先举一个简单的例子来说明消去法的基本思想. 例1. 用消去法解方程组 ??? ??=+-=-=++(3) .122(2) ,54(1) ,6321 32321x x x x x x x x 解 第一步.将方程(1)乘上-2加到方程(3)上去,消去(3)中的未知数1x ,得到 (4) .11432-=--x x 第二步.将方程(2)加到方程(4)上去,消去方程(4)中的未知数2x ,得到与原方程组等 价的三角形方程组 (5) .62 ,54 ,6332321?? ? ??-=-=-=++x x x x x x 显然,方程组(5)是容易求解的,解为.)3,2,1(T x =* 上述过程相当于 332331 (-2) 6-56 20014011111-56 140140111156 122140111)|(r r r r r r b A →+→+??? ? ?? ??--→????? ??---→????? ??--= 其中用i r 表示矩阵的第i 行. 下面我们讨论求解一般线性方程组的高斯消去法. 一般地 ???????==++=+++n n nn n n n n b x a b x a x a b x a x a x a 2 222211212111 当a 11a 22…a nn ≠0时,可解出 x n =b n /a nn for k=n-1:1 x k =(b 1- a k,k+1x k +1-…- a kn x n )/ a kk end

注: k k b x ,可用同一组单元.并可解出一个未知数即代入其它方程消去该未知数 Gauss 消元法的流程图为: 流程图中,,(,1,2,...,)ij i a b i j n 分别为线性方程组的系数矩阵和常数向量; k 是循环次数。 ② 顺序消去法 一般地,k =1对n 阶方程组消去第k 个元(a kk ≠0):

高斯消去法高斯塞德尔迭代法

数值计算 高斯消去法和高斯-塞德尔迭代法

摘要 虽然已学过加减消元法、代入消元法、矩阵变换法和Cramer 法则等,但是无法满足实际计算需要,故在此讨论在计算机上实现的有效而实用的解法。线性方程组的解法大致分2类:直接法(高斯消去法)和迭代法(高斯-赛德尔迭代法),在此对着此类算法进行比较分析。 一、算法设计 当计算线性方程组如下时, 11112211 21122222 1122n n n n n n nn n n a x a x a x b a x a x a x b a x a x a x b +++=??+++=?? ? ?+++=? (1-1) 为方便起见,常将线性方程组表示成矩阵形式 Ax b = 其中 1111n n nn a a A a a ?? ??=?????? 1n x x x ?? ??=?????? 1n b b b ????=?????? 并始终假定A 是非奇异的,即方程组的解存在且唯一。 1.1高斯消去法 消去法就是按特定顺序进行的矩阵初等变换法,当消元按自然顺序进行时,称为 高斯顺序消去法。一般情况下的高斯顺序消去法的计算机算法如下,现将方程组(1-1)的增广矩阵记作 (0)(0)(0)11111(0)(0)(0)11n n n nn nn a a a a a a ++??? ??? ????? ? 假设经k-1步消元后,增广矩阵化为 (0)(0) (0)(0)1112111 (1)(1)(1)22 221(1)(1) (1)1(1)(1)(1) 1n n n n k k k kk kn kn k k k nk nn nn a a a a a a a a a a a a a ++---+---+???????? ?????????? ? ? 其中() s ij a 的上标表示是由s 步消元得到的植。

高斯顺序消去法

数量问题 种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了能够保证稳定的收获,各个年龄的种群数量应维持不变,种群因雌性个体的繁殖而改变,为方便起见一下种群数量均指其中的雌性。 种群年龄记作k=1,2...,n.当年龄为k 的种群数量记作k x ,繁殖率记作k b (每个雌性个体一年繁殖的数量),自然存活率记作k s (k s =1-k d ,k d 为一年的死亡率),收获量记作k h ,则来年年龄k 的种群数量 1~x =).1,...,2,1(~1n 1-=-=+=∑n k h x s x x b k k k k k k k ,要求各个年龄的种群数量每年维持不变就是要使).,...,2,1(x ~n k x k k == (1)若k b ,k s 已知,给定收获量k h ,建立各年龄的稳定种群数量k x 的模型(用矩阵、向量表示). (2)设n=5,.6.0,4.0,3,5,0b 324143521=========s s s s b b b b 要求k h (k=1,2,...,5)为500,400,200,100,100,求k x (k=1,2,...,5). (3)欲使k h (k=1,2,...,5)均为500,如何达到. 建立模型 根据题目给出的关系式和各个参量,建立线性方程组(1)。 向量i k x ,表示年龄为k 的种群在第i 个统计时间段中的数量。 根据题意,可将方程(1)变为如下方程(2)的形式:

高斯顺序消去法 #include #include #define n 5 void Gauss_elimination(float a[n][n],float h[n]) { int i,j,k; float x[n],temp1,temp2; for(k=0; k-1; i--) { temp2=0; for(j=i+1; j

高斯消去法的一个简单c++程序

简介:本程序演示高斯消去法如何消元并最终成为上三角矩阵的过程,矩阵阶数和内容由使用者手动输入。 源程序: #include #include void main() { int i(1),j(1),k,n; double a[10][10],b[10],m; cout<<"矩阵阶数n="; cin>>n; cout<<"请依次输入a矩阵和b矩阵"<

i=1; for(i;i<=n;i++) { cout<<"b["<>b[i]; }//for cout<<"您输入的b矩阵为"<

数值分析高斯顺序消去法、列主元消去法LU分解法

数值分析实验报告 (1) 学院:信息学院 班级:计算机0903班 姓名:王明强 学号:20092954

课题一 A.问题提出 给定下列几个不同类型的线性方程组,请用适当的方法求解 线性方程组1、设线性方程组 ?? ??????????????????? ??? ??? ?????--------------------------1368 2438 100 41202 9 13 726422123417911101610352431205362177586832337616244911315120130123122400 1 0563568000 0121 324?? ??? ???? ???? ???????????????????1098765432 1x x x x x x x x x x =???? ??????? ????? ????????????????-2119381346323125 x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T 2、设对称正定阵系数阵线方程组 ??????????????????????????----------------------1924336002141103520411144334 3104221812334161206538114140231212200420424?????????????? ????????????87654321x x x x x x x x = ??? ??? ??? ?????? ??? ?? ? ?????---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T 3、三对角形线性方程组

高斯列主元消去法

问题提出: 采用高斯列主元消去法解线性方程组。 算法(公式)推导: 高斯顺序消去法有一个最大的缺点就是一旦对角元素为0,就进行不下去了,为了解决这个问题就有了高斯主元消去法。 如果在高斯顺序消去法消去过程进行到第i 步时,先选取a ri ()n r i ≤≤中(即第i 列)绝对值最大的元素,设为第j 行的元素aji , 然后将第i+1行至第n 行中的每一行减去第i 行乘以 ii kj a a (k 代表行号),依 次进行消元,这样得到的算法叫高斯按列主元消去法。 高斯按列主元消去法的算法步骤介绍如下: 1. 将方程组写成以下的增广矩阵的形式: 4 3 21 44434241343332312423222114131211b b b b a a a a a a a a a a a a a a a a 2. 对k=1,2,3,…..,n-1,令∑==n k s sk pk a a max ,交换增广矩阵的第k 行与第p 行; 对j=k+1,K+2,……..,n,计算 *km jk jm jm kk a a a a a =-(m=k,k+1,....n) kk jk k j j a a b b b *- = 算法结束。 3. 在MATLABE 中编程实现的高斯按列主元消去法函数为:GaussXQLineMain 功能:高斯按列主元消去法求线性方程组Ax=b 的解 调用格式:[x,XA]=GaussXQLineMain(A,b) 其中,A :线性方程组的系数矩阵;

B:线性方程组中的常数向量; x:线性方程组的解: XA:消元后的系数矩阵(可选的输出参数)。 高斯列主元消去法用MATLAB实现如下所示: 4.其中用到上三角矩阵求解函数: 在MATLABE中编程实现的上三角系数矩阵求解函数为:SolveUPTriangle 功能:求上三角系数矩阵的线性方程组Ax=b的解 调用格式:x=SolveUpTriangel(A,b)

Gauss顺序消去法解线性方程组报告

Gauss 顺序消去法解线性方程组 制作人:陈静 Gauss 消去法是解线性方程组的一种直接方法,有时也称为精确法,这种算法只包含有限四次运算,并且在每一步运算过程都不会发生舍入误差的假设下,计算的结果就是方程组的精确解。但实际计算中不可避免舍入误差的存在和影响,所以这种方法只能求得线性方程组的近似解。 一.实验目的: 学会用Gauss 顺序消去法解线性方程组。 二.实验要求: 线性方程组中≠-)1(k kk a 0. 三.顺序消去法解方程组原理: (1) 消元计算:对k=1,2, ,n-1 ???????+=-=+=-=+==++) ,,1(),,1,(),,1() ()()1()()()1()()(n k i b l b b n k j i a l a a n k i a a l k k ik k i k i k kj ik k ij k ij k kk k ik ik (2) 回代计算: ?????-=-==∑+=)1,2,,1()()(1)()()()( n i a x a b x a b x i ii n i j j i ij i i i n nn n n n 四.顺序消去法解方程组的解题步骤: 设有线性代数方程组 Ax = b 其中 A = ????????????nn n n n n a a a a a a a a a .....................212222111211,x = ????????????n x x x 21,b = ????? ???????n b b b 21. 为了清晰起见,将方程组写成如下形式

?? ?????=+++=+++=+++. ,,)1()1(2)1(21)1(1)1(2)1(22)1(221)1(21)1(1)1(12)1(121)1(11n 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 第一步 设) 1(11a ≠0,首先计算乘数 )1(11)1(11a a l i i =(i=2,3, ,n ). 用-1i l 乘上述方程组的第一个方程,再加到第i 个(i=2,3, ,n )方程上,消 去上述方程组的第二个方程到第n 个方程中的未知数1x ,得与上述方程组等价的方程组 ???????????? ??)2()2(2)2(2)2(22)1(1)1(12)1(11nn n n n a a a a a a a ????????????n x x x 21 = ?????? ????????)2()2(2)1(1n b b b 简记为x A )2(=)2(b ,其中)2(A 、)2(b 的元素计算公式为 ? ??=-===-=.,,3,2,,,2,,,2,)1(11)1()2()1(11)1()2(n i b l b b n i n j a l a a i i i j i ij ij 第二步 仿照第一步的做法以此类推,到第n 步便得到与上述方程组等价的方程组 ???????????? ??)()2(2)2(22)1(1)1(12)1(11n nn n n a a a a a a ????????????n x x x 21 = ?????? ????????))22)1(1n n b b b 以上两步为高斯顺序消去法的消去过程。 第三步 将上述得到的方程组通过原理中的回代计算法: ?????-=-==∑+=)1,2,,1()()(1)()()()( n i a x a b x a b x i ii n i j j i ij i i i n nn n n n 得到方程组的解i x (i=1,2, ,n )。 这步为高斯顺序消去法的回代过程。 五.流程图如下:

相关文档
相关文档 最新文档