当前位置:文档之家› 线性代数方程组求解

线性代数方程组求解

线性代数方程组求解
线性代数方程组求解

线性代数方程组求解 The Standardization Office was revised on the afternoon of December 13, 2020

线性代数方程组求解

一、实验要求

编程求解方程组:

方程组1:

方程组2:

方程组3:

要求:

用C/C++语言实现如下函数:

1.bool lu(double* a, int* pivot, int n);

实现矩阵的LU分解。

pivot为输出参数,pivot[0,n) 中存放主元的位置排列。

函数成功时返回false ,否则返回true 。

2. bool guass(double const* lu, int const* p, double* b, int n); 求线代数方程组的解

设矩阵Lunxn 为某个矩阵anxn 的LU 分解,在内存中按行优先次序存放。p[0,n)为LU 分解的主元排列。b 为方程组Ax=b 的右端向量。此函数计算方程组Ax=b 的解,并将结果存放在数组b[0,n)中。函数成功时返回false ,否则返回true 。

3. void qr(double* a, double* d, int n);矩阵的QR 分解

假设数组anxn 在内存中按行优先次序存放。此函数使用HouseHolder 变换将其就地进行QR 分解。

d 为输出参数,d [0,n) 中存放QR 分解的上三角对角线元素。

4. bool hshld(double const*qr, double const*d, double*b, int n); 求线代数方程组的解

设矩阵qrnxn 为某个矩阵anxn 的QR 分解,在内存中按行优先次序存放。d [0,n) 为QR 分解的上三角对角线元素。b 为方程组Ax=b 的右端向量。

函数计算方程组Ax=b 的解,并将结果存放在数组b[0,n)中。 函数成功时返回false ,否则返回true 。

二、问题分析

求解线性方程组Ax=b ,其实质就是把它的系数矩阵A 通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过程中,把系数矩阵A 变换成上三角或下三角矩阵显得尤为重要,然而矩阵A 的变换通常有两种分解方法:LU 分解法和QR 分解法。

1、LU 分解法:

将A 分解为一个下三角矩阵L 和一个上三角矩阵U ,即:A=LU,

其中 L=???????

?????10010012121 n n l l l , U=?

?

???

?

??????nn n n u u u u u u 000

00222112

11 2、QR 分解法:

将A 分解为一个正交矩阵Q 和一个上三角矩阵R,即:A=QR

三、实验原理

解Ax=b 的问题就等价于要求解两个三角形方程组: ⑴ Ly=b,求y; ⑵ Ux=y,求x.

设A 为非奇异矩阵,且有分解式A=LU , L 为单位下三角阵,U 为上三角阵。

L,U 的元素可以有n 步直接计算定出。用直接三角分解法解Ax=b (要求A 的所有顺序主子式都不为零)的计算公式: ① ),,2,1(n i a u li li ==,11/u a l il il = ,i=2,3,…,n. 计算U 的第r 行,L 的第r 列元素(i=2,3,…,n): ② ∑-=-=1

1r k ki rk ri ri u l a u , i=r,r+1,…,n;

③ rr r k kr ik ir ir u u l a l /)(1

1

∑-=-= , i=r+1,…,n,且r ≠n.

求解Ly=b ,Ux=y 的计算公式;

:

,3,2,,

1

1

11n i y l b y b y i k k ik i i =-==∑-=

.

1,,2,1,/)(,/1

--=-

==∑+=n n i u x u y x u y x ii n

i k k ik i i nn n n

四、实验步骤

1>将矩阵A 保存进计算机中,再定义2个空矩阵L ,U 以便保存求出的三角矩阵的值。

利用公式①,②,③将矩阵A 分解为LU ,L 为单位下三角阵,U 为上三角阵。

2>可知计算方法有三层循环。

先通过公式①计算出U 矩阵的第一行元素li u 和L 矩阵的第一列元素il l 。 再根据公式②和③,和上次的出的值,求出矩阵其余的元素,每次都要三次循环,求下一个元素需要上一个结果。 3>先由公式④ ,Ly=b

:

,3,2,,1

1

11n i y l b y b y i k k ik i i =-==∑-=

求出y ,因为L 为下三角矩阵,所以由第一行开始求y. 4>再由公式⑤,Ux=y

.

1,,2,1,/)(,/1

--=-

==∑+=n n i u x u y x u y x ii n

i k k ik i i nn n n

求出x, 因为U 为上三角矩阵,所以由最后一行开始求x.

五、程序流程图

1、LU 分解法

回代过

2、QR分解法

六、实验结果

1、LU分解法

方程组1 :

方程组2:

方程组3:

2、QR分解法

方程组1:

方程组2:

方程组3:

七、实验总结

为了求解线性方程组,我们通常需要一定的解法。其中一种解法就是通过矩阵的三角分解来实现的,属于求解线性方程组的直接法。在不考虑舍入误差下,直接法可以用有限的运算得到精确解,因此主要适用于求解中小型稠密的线性方程组。

1、三角分解法

三角分解法是将A矩阵分解成一个上三角形矩阵U和一个下三角形矩阵L,这样的分解法又称为LU分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求反矩阵和求解联立方程组。不过要注意这种分解法所得到的上下三角形矩阵并非唯一,还可找到数个不同的一对上下三角形矩阵,此两三角形矩阵相乘也会得到原矩阵。

2、 QR分解法

QR分解法是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法。

在编写这两个程序过程中,起初遇到不少麻烦!虽然课上老师反复重复着:“算法不难的,It's so easy!”但是当自己实际操作时,感觉并不是那么容易。毕竟是要把实际的数学问题转化为计算机能够识别的编程算法,所以在编写程序之前我们仔细认真的把所求解的问题逐一进行详细的分析,最终转化为程序段。每当遇到问题时,大家或许有些郁闷,但最终还是静下心来反复仔细的琢磨,一一排除了错误,最终完成了本次实验。

回头一想原来编个程序其实也没有想象的那么复杂,只要思路清晰,逐步分析,就可以慢慢搞定了。

附源代码:

#include

#include <>

#include <>

#include <>

#include <>

using namespace std;

bool lu(double* a, int* pivot, int n);6f\t",B[i]); }

cout<<"\nGuass解法的误差为:\n";

for (int i=0; i

{

if(i==3)

cout<

printf("%.16f\t",B[i]-1);

expct=expct + B[i]-1;

}

printf("\n误差期望值为%.16f\t\n",expct/6); cout<

}

else

{

cout<<"矩阵QR分解: \n";

qr(A,D,n);6f\t",B[i]);

}

cout<<"\nHouseholder解法的误差为:\n";

for (int i=0; i

{

if(i==3)

cout<

printf("%.16f\t",B[i]-1);

expct=expct + B[i]-1;

}

printf("\n误差期望值为%.16f\t\n",expct/6); cout<

}

return 0 ;

}

bool lu(double* a, int* pivot, int n)//矩阵LU分解{

int i,j,k;

double max,temp;

max = 0;

for (i=0; i

{

// 选出i列的主元,记录主元位置

max = fabs(a[n*i + i]);

pivot[i]=i;

for(j=i+1; j

{

if( fabs(a[n*j + i])>max)

{

max= fabs(a[n*j + i]) ;

pivot[i]=j;

}

}

// 对第i列进行行变换,使得主元在对角线上

if(pivot[i]!=i)

{

for(j=i; j

{

temp=a[n*i + j];

a[n*i + j]=a[n*pivot[i]+ j];

a[n*pivot[i]+ j]=temp;

}

}

for(j=i+1; j

a[n*j + i]=a[n*j+i]/a[n*i+i];

for(j=i+1; j

for(k=i+1; k

a[n*j + k]=a[n*j+k]- a[n*j+i]*a[n*i+k];

}

//计算下三角 L

for(i=0; i

for(k=i+1; k

{

temp=a[n*pivot[k] + i];

a[n*pivot[k] + i]=a[k*n + i];

a[k*n + i]=temp;

}

return false ;

}

bool guass(double const* lu, int const* p, double* b, int n)//求线性代数方程组的解

{

double temp;

//按qivot对b行变换,与LU匹配

for(i=0; i

{

temp = b[p[i]];

b[p[i]] = b[i];

b[i]=temp;

}

//Ly=b,将y的内容放入b

for(i=0; i

for(j=0; j

b[i]=b[i]-lu[n*i+j]*b[j];

//Uy=x,将x的内容放入b

for(i=n-1; i>=0; i--)

{

for(j=n-1; j>i; j--)

b[i]=b[i]-lu[n*i+j]*b[j];

b[i]=b[i]/lu[n*i+i];

}

return false;

}

void qr(double* a, double* d, int n) //矩阵的QR分解{

int i,j,l,k;

double tem,m;

double *temp;

temp = (double *)malloc(sizeof(double)*n);

for (i=0; i

{

//获得tem值

m = 0 ;

for(j=i; j

m = m +a[n*j + i]*a[n*j + i ];

if(a[n*i + i ]>0)

m = -sqrt(m);

else

m = sqrt(m);

//获得temp放入矩阵,并存主元d

tem = 0 ;

d[i] = m ;

a[n*i +i] = a[n*i +i] - m;

for(j=i; j<=n-1; j++)

tem=tem + a[n*j +i]*a[n*j +i];

tem= sqrt(tem);

for(j=i; j<=n-1; j++)

a[n*j +i] = a[n*j +i]/tem ;

// 调整矩阵

for(k=i+1;k

{

for(j=i; j

{

tem = 0 ;

for(l=i; l

tem =tem + a[n*j + i]*a[n*l + i]*a[n*l + k];

temp[j] = a[j*n+k] - 2*tem;

}

for(j=i; j

a[j*n+k] = temp[j];

}

}

d[n-1] = a[(n-1)*n+n-1];

}

bool householder(double const*qr, double const*d, double*b, int n)//求线性代数方程组的解

{

int i,j,l;

double rem;

double *temp;

temp = (double *)malloc(sizeof(double)*n);

for(i=0; i

{

for(j=i; j

{

rem = 0;

for(l=i;l

rem = rem + qr[l*n+i]*qr[j*n+i]*b[l];

temp[j] = b[j] - 2*rem;

}

for(j=i; j

b[j] = temp[j];

}

for(j=n-1; j>-1; j--)

{

for(l=n-1; l!=j;--l)

b[j] =b[j] - b[l]*qr[j*n+l];

b[j] = b[j] /d[j];

}

return false; }

线性方程组解的几何意义

设有三元非齐次线性方程组 线性方程组解的几何意义 ???????=++=++=++,,,)1(22221111m m m m d z c y b x a d z c y b x a d z c y b x a 我们来讨论一下三元非齐次线性方程组解的几何意义.

2) 有唯一解这时方程组(1) 中的m 个方?? ???=+--=--=+,423, 32,123z y x y x z x 该方程组有唯一解.817,21,4 7??? ??--则方程组(1) 的解有以下三种情况: 1) 无解这时方程组(1) 中的m 个方程所表示的平面既不交于一点, 也不共线、共面. 程所表示的平面交于一点. 例如

其几何意义如图3 -11 所示. 2x-y=-3 3x+2z=-1 x-3y+2z=4 图3-11

交直线所确定.3) 有无穷多组解 这时又可分为两种情形:情形一自由变量, 基础解系中有两个向量,其一般解的形式为 γ=c 1η1+ c 2η2+ γ0(c 1, c 2为任意常数).这时方程组的所有解构成一个平面, 而这个平面是由过点γ0且分别以η1、η2为方向向量的两条相A 的秩=A 的秩= 1 .此时,有两个γ=c 1η1+ c 2η2+ γ0 称为平面的参数方程.

例如, 设保留方程组为 x + y + z = 3, 则可求得其通解为 . 11110101121???? ? ??+????? ??-+????? ??-=c c x

则过点P (1,1,1) 分别以(1,-1,0)T , (1,0,-1)T 为方向,1 10111:,0 11111:21--=-=--=--=-z y x L z y x L 则这两条相交直线L 1, L 2所确定的平面的方程即向量的两直线的方程分别为 为x + y + z = 3 . 如图3-12

线性代数齐次方程组解法

D =) () ()(0)()() (001 11112 132 3122211331221 1 312a a a a a a a a a a a a a a a a a a a a a a a a k k k k k k k k ------------ 按第一列展开,再将各列的公因子提出来 D = ) ()()() () () (121323122211331221131 2a a a a a a a a a a a a a a a a a a a a a a a a k k k k k k k k ------------ =(a 2-a 1)(a 3-a 1)…(a k -a 1) 22322 32 111 ---k k k k k a a a a a a 得到的k -1阶范德蒙德行列式,由归纳假设知其值为 ∏≤<≤-k i j j i a a 2)( 于是 D =(a 2-a 1)(a 3-a 1)…(a k -a 1) ∏≤<≤-k i j j i a a 2)(= ∏≤<≤-k i j j i a a 1)( 因此,对于任意正整数n ≥2,范德蒙德行列式的展开式都成立。 证毕 例1.14 计算n 阶三对角行列式: D n = 2 1 120000 021000 12 1000 12------ 解 由行列式的性质1.4,将D n 的第一列的每个元看成两个元之和,得

D n = 2100 12000002100 120 00011----- +2 1 1200000 21000 12 1 00011------ 第一个行列式按第一列展开;第二个行列式从第一行开始依次加到下一行,得 D n =D n -1+ 1 110000 01000 110 00011 ---=D n -1+1 反复利用上面的递推公式,得到 D n =D n -1+1=D n -2+2=…=D 1+n -1=2+n -1=n +1 例1.15 计算n 阶行列式 D n = n a b b b a b b b a 21 (a i ≠b , i =1,2,…,n ) 解 对于这个行列式,采用一种“加边”的技巧。 D n =n a b b b a b b b a b b b 000121 第一行乘以(-1)加到其他各行上去,得

《线性代数》线性方程组部分练习题

一,填空题 1 已知四维向量α,β满足3α+4β=()2112T ,2α+3β=()12 31T -,则向量α=________,β=_____ 2 有三维列向两组1α=()100T ,()2110αT =,()3111αT =,()123βT =,且有112233βχαχαχα++=,则123χχχ=_____ ,=_____,=_____ 3.若向量组123,,ααα线性无关,则向量组122331,,αααααα+++是线性____。 4若n 个 n 维列向量线性无关,则由此n 个向量构成的矩阵必是______ 矩阵。 5若R )(1234,,,4αααα=,则向量组123,,ααα是线性________。 6若向量组)()()()( 12341,1,3,2,4,5,1,1,0,2,2,6,αααα===-=则此向量组的秩是______,一个极大无关组是______。 7已知向量组()()()1231,2,1,1,2,0,,0,0,4,5,2t ααα=-==--的秩为2,则t =____. 8已知方程组12312112323120x a x a x ????????????+=????????????-?????? 无解,则a =_____。 二,选择题 1.向量组()()()()12341,1,2,0,1,1,2,3,5,2,2,4αααα==-==的极大无关组为( ) (A )12,;αα (B )13,;αα (C )123,,;ααα (D )23,;αα 2.若A =12421110λ?? ? ? ??? 为使矩阵A 的秩有最少值,则λ应为( ) (A )2; (B )-1; (C)94; (D)12 ; 3. n 元齐次线性方程组AX=0有非零解时,它的每一个基础解系中所含解向量的个数等于( ) (A )R )(A -n ; (B ))(R n A + (C ))(n R -A ; (D))( n R +A 4.设123412342 34234355222χχχχχχχχχχχλ+-+=??+-+=??+-=? 当λ取( )时,方程组有解。 (A )-12 (B) 12 (C)1- (D)1

完整word版最速下降法求解线性代数方程组

最速下降法求解线性代数方程组要求:对于给定的系数矩阵、右端项和初值,可以求解线性代数方程组 一、最速下降法数学理论 PP?tX?Xf(X)的负梯中,在基本迭代公式每次迭代搜索方向取为目标函数kk1kkk?t)X??f(P?取为最优步长,由此确定的算法称为最速度方向,即,而每次迭代的步长kkk下降法。 X)Xminf(kk。现在次,获得了第,假定我们已经迭代了为了求解问题个迭代点k X出发,可选择的下降方法很多,一个非常自然的想法是沿最速下降方向(即负梯度方从k X邻近的范围内是这样。因此,去搜索方向为 )进行搜索应该是有利的,至少在向k P???f(X). kk P k?1进行一维搜索,由此得到第为了使目标函数在搜索方向上获得最多的下降,沿k个跌带点,即 X?X?t?f(X),kk1k?k t按下式确定其中步长因子k f(X?t?f(X))?minf(X?t?f(X)), kkkkkk X?ls(X,??f(X)). ( 1) k1k?k X X,XX,, ,,?k0,12是初始点,由计算就可以得到一个点列,显然,令其中0210{X}f)X(X)(f 的满足一定的条件时,由式()所产生的点列必收敛于者任意选定。当1k极小点。 二、最速下降法的基本思想和迭代步骤 ???,)(Xf(X)g. ,终止限已知目标函数及其梯度和321Xf?f(X),g?g(X)k?0. ,计算;置(1)选定初始点00000X?ls(X,?g)f?f(X),g?g(X). (2)作直线搜索:;计算 k?1kk1?k1k?kk?1?1(X,f(X))k?k?1,置,结束;用终止准则检验是否满足:若满足,则打印最优解否则,1k?1?k转(2) (3)最速下降法算法流程图如图所示.

线性代数方程组数值解法及MATLAB实现综述

线性代数方程组数值解法及MATLAB实现综述廖淑芳20122090 数计学院12计算机科学与技术1班(职教本科)一、分析课题 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。 直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。 迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi法SOR法、SSOR法等多种方法。 二、研究课题-线性代数方程组数值解法 一、直接法 1、Gauss消元法 通过一系列的加减消元运算,也就是代数中的加减消去法,以使A对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x向量。

1.1消元过程 1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。 11121121222212n n n n nn n a a a b a a a b a a a b ?? ? ? ? ???(1)(1)(1)(1)(1)11121311(2)(2)(2)(2)222322 (3)(3)(3)3333()()000 00 n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ??? 步骤如下: 第一步:1 11 1,2,,i a i i n a -? +=第行第行 11121121222212 n n n n nn n a a a b a a a b a a a b ?? ? ? ? ???1112 11(2)(2)(2)22 22 (2)(2)(2)2 00n n n nn n a a a b a a b a a b ?? ? ? ? ??? 第二步:(2)2 (2)222,3, ,i a i i n a -?+=第行第行 111211(2)(2)(2)2222(2)(2)(2)2 00n n n nn n a a a b a a b a a b ?? ? ? ? ???11 12 1311(2)(2)(2)(2)222322 (3)(3)(3)33 33(3)(3)(3)3 0000 0n n n n nn n a a a a b a a a b a a b a a b ?? ? ? ? ? ? ??? 类似的做下去,我们有: 第k 步:() ()k ,1, ,k ik k kk a i i k n a -?+=+第行第行。 n -1步以后,我们可以得到变换后的矩阵为: 11121311(2)(2)(2)(2)222322 (3)(3)(3)3333()()00000 n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ?? ?

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

用高斯消元法求解线性代数方程组 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 。

线性方程组解的判定

第四节 线性方程组解的判定 从本节开始,讨论含有n 个未知量、m 个方程的线性方程组的解。 11112211211222 22 11 22n n n n m m mn n m a x a x a x b a x a x a x b a x a x a x b +++=??+ ++= ????+++=? (13—2) 主要问题是要判断出方程组(13-2)何时有解?何时无解?有解时解有多少?如何求出方程组的解。 线性方程组有没有解,以及有怎样的解,完全决定于方程组的系数和常数项。因此,将线性方程组写成矩阵形式或向量形式,以矩阵或向量作为讨论线性方程组的工具,将带来极大的方便。 方程组(13-2)中各未知量的系数组成的矩阵11121212221 2 n n m m mn a a a a a a A a a a ? ?? ? ? ?=?? ?? ? ? 称为方程组(13-2)的系数矩阵。由各系数与常数项组成的矩阵,称为增广矩阵,记作A ,即 11121121 222212 n n m m mn m a a a b a a a b A a a a b ?? ????=??? ??? 方程组(13-2)中的未知量组成一个n 行、1列的矩阵(或列向量),记作X;常数项组成一个m 行、1 列的矩阵(或列向量),记作b ,即12n x x X x ??????=?????? ,12 m b b b b ?? ????=?????? 由矩阵运算,方程组(13-2)实际上是如下关系111212122212 n n m m mn a a a a a a a a a ? ?? ? ? ? ?? ?? ? ? 12n x x x ???????????? =12m b b b ???????????? 即 AX=b

线性代数方程组的直接解法_赖志柱

第二章线性代数方程组的直接解法 教学目标: 1.了解线性代数方程组的结构、基本理论以及相关解法的发展历程; 2.掌握高斯消去法的原理和计算步骤,理解顺序消去法能够实现的条件,并在此基础上理解矩阵的三角分解(即LU分解),能应用高斯消去法熟练计算简单的线性代数方程组; 3.在理解高斯消去法的缺点的基础上,掌握有换行步骤的高斯消去法,从而理解和掌握选主元素的高斯消去法,尤其是列主元素消去法的理论和计算步骤,并能灵活的应用于实际中。 教学重点: 1. 高斯消去法的原理和计算步骤; 2. 顺序消去法能够实现的条件; 3. 矩阵的三角分解(即LU分解); 4. 列主元素消去法的理论和计算步骤。 教学难点: 1. 高斯消去法的原理和计算步骤; 2. 矩阵的三角分解(即LU分解); 3. 列主元素消去法的理论和计算步骤。 教学方法: 教具: 引言 在自然科学和工程技术中,许多问题的解决常常归结为线性方程组的求解,有的问题的数学模型中虽不直接表现为线性方程组,但它的数值解法中将问题“离散化”或“线性化”为线性方程组。例如,电学中的网络问题、船体数学放样中建立三次样条函数问题、最小二乘法用于求解实验数据的曲线拟合问题、求解非线性方程组问题、用差分法或有限元法求解常微分方程边值问题及偏微分方程的定解问题,都要导致求解一个或若干个线性方程组的问题。 目前,计算机上解线性方程组的数值方法尽管很多,但归纳起来,大致可以分为两大类:一类是直接法(也称精确解法);另一类是迭代法。例如线性代数中的Cramer法则就是一种直接法,但其对高阶方程组计算量太大,不是一种实用的算法。实用的直接法中具有代表性的算法是高斯(Gauss)消元法,其它算法都是它的变形和应用。 在数值计算历史上,直接法和迭代法交替生辉。一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。一般说来,对同等规模的线性方程组,直接法对计算机的要求高于迭代法。对于中、低阶(200 n )以及高阶带形的线性方程组,由于直接法的准确性和可靠性高,一般都用直接法求解。对于一般高阶方程组,特别是系数矩阵为大型稀疏矩阵的线性方程组用迭代法有效。

线性代数方程组求解

线性代数方程组求解 一、实验要求 编程求解方程组: 方程组1: 方程组2: 方程组3: 要求: 用C/C++语言实现如下函数: 1.bool lu(double* a, int* pivot, int n); 实现矩阵的LU分解。 pivot为输出参数,pivot[0,n)中存放主元的位置排列. 函数成功时返回false,否则返回true。 2.bool guass(double const* lu, int const* p, double* b, int n);

求线代数方程组的解 设矩阵Lunxn 为某个矩阵anxn 的LU 分解,在内存中按行优先次序存放。p[0,n)为LU 分解的主元排列.b 为方程组Ax=b 的右端向量.此函数计算方程组Ax=b 的解,并将结果存放在数组b [0,n )中.函数成功时返回false ,否则返回true 。 3。 void qr(double* a , double * d, int n);矩阵的QR 分解 假设数组anxn 在内存中按行优先次序存放。此函数使用HouseHolder 变换将其就地进行QR 分解。 d 为输出参数,d [0,n) 中存放QR 分解的上三角对角线元素。 4。 bool hshld(double const*qr , double const*d, double*b , int n); 求线代数方程组的解 设矩阵qrnxn 为某个矩阵anxn 的QR 分解,在内存中按行优先次序存放。d [0,n ) 为QR 分解的上三角对角线元素。b 为方程组Ax=b 的右端向量。 函数计算方程组Ax=b 的解,并将结果存放在数组b[0,n)中。 函数成功时返回false ,否则返回true 。 二、问题分析 求解线性方程组Ax=b ,其实质就是把它的系数矩阵A 通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过程中,把系数矩阵A 变换成上三角或下三角矩阵显得尤为重要,然而矩阵A 的变换通常有两种分解方法:LU 分解法和QR 分解法。 1、LU 分解法: 将A 分解为一个下三角矩阵L 和一个上三角矩阵U,即:A=LU , 其中 L=??????? ?????1001 00 12121 n n l l l , U=? ? ??? ? ??????nn n n u u u u u u 000 00222112 11 2、QR 分解法: 将A 分解为一个正交矩阵Q 和一个上三角矩阵R,即:A=QR 三、实验原理 解Ax=b 的问题就等价于要求解两个三角形方程组: ⑴ Ly=b,求y; ⑵ Ux=y,求x 。 设A 为非奇异矩阵,且有分解式A=LU , L 为单位下三角阵,U 为上三角

一般线性方程组

7、5 一般线性方程组 课题: 一般线性方程组 目的要求:1.掌握矩阵秩概念 2.掌握线性方程组解判定方法; 3.掌握齐次线性方程组的解法。 重点: 线性方程组解判定方法 难点: 线性方程组的消元法 教学方法: 讲练结合 教学时数: 4课时 教学进程: 一、矩阵的秩 矩阵的秩就是矩阵的重要特性之一,它在线性方程组解的讨论中起着关键的作用. 定义:矩阵A 的阶梯形矩阵所含非零行的行数称为矩阵A 的秩,记为r (A ). 根据这个定义,可以得出求矩阵A 的秩的一般步骤: 1. 用矩阵的初等行变换把A 化为阶梯形矩阵; 2. 数一下阶梯形矩阵中有多少个非零行. 例1 求矩阵?? ? ? ? ? ? ? ?--=28552311314321 112 21A 的秩. 解 ???? ?? ? ??-----?????→?---??????? ??--=6110305502550011221)(2)()(3)() ()(2855231131432111221141312r r r r r r A ??? ?? ?? ??--?????→?+??????? ??-----?????→??255000000611011221)(5)(255003055061 1011221)()(2324r r r r ????? ? ? ??--?????→??00002550061 1011221)()(43r r 所以r (A )=3. 例2 求矩阵????? ?? ? ??------=231453312112231B 的秩.

解 ??????? ? ? ?------?????→?---+???????? ??------=46024077 055 0231)()()(3)() (2)() (2)(23145331211223115 141312r r r r r r r r B ??????? ? ???????→??-???????? ? ??????→?+++???????? ??------???→?000000 200110 231 )()()()(200200000 110231)(6)()(4)() (7)(460240*********)(5143452524232r r r r r r r r r r r 所以r (B )=3. 二、 一般线性方程组的解 一般的线性方程组,它的未知数个数与方程的个数可以相等也可以不相等.对于n 个未知 数n 个方程的线性方程组,当它的系数行列式不为零时,可以有以下三种求解方法:⑴克莱姆法则;⑵逆矩阵;⑶矩阵法.其中矩阵法还能用来求解未知数个数与方程个数不相等的线性方程组.本节将运用矩阵法来讨论一般的线性方程组的解.先考察先面的两个例子. 例3 讨论线性方程组??? ??=+--=-++=-++0 524232324321 43214321x x x x x x x x x x x x 的解. 解 ???? ? ??-------?????→?--????? ??----=228402284021321)()() (3)(015214112 321321~ 1312r r r r A ????? ? ??--???→?-????? ??----????→?-00000212121021321)(41000002284021321)()(223r r r ? ???? ? ??--?????→?-00000212121010101)(2)(21r r ① 最后一个矩阵对应于方程组:132********x x x x x -=???+-=??,因此有132******** x x x x x =+?? ?=-+??. 由于当x 3与x 4分别任意取定一个值时,都可得到方程组的一组解,因此该方程组有无穷多 组解.

线性方程组解法综述

线性方程组解法综述 Prepared on 22 November 2020

线性方程组解法的研究综述 摘要:这篇论文在说明了线性方程组的应用目的的基础上,提出了线性方程组求解的研究现状,并列举了常用的求解方法,同时说明了它们的应用条件,剖析了各种方法的不足之处。 关键词高斯消元迭代病态方程组 一、问题提出 在自然科学和工程实际应用中,有许多问题的求解最终都转化为线性方程组的求解问题。例如,电学中的网络问题,曲线拟合中常用的最小二乘法、样条函数插值、解非线性方程组、求解偏微分方程的差分法、有限元法和边界元法以及目前工程实践中普遍存在的反演问题等。特别是在图像恢复、模型参数估计、解卷积、带限信号外推、地震勘探等众多领域,都需要求解线性方程组。 由于线性方程组问题在理论上的重要性和在工程实际应用中的大量存在,多年来人们在这方面做了广泛深入的研究和探讨,并取得了许多有价值的成果.由于模型误差、测量误差、计算误差等各种误差的存在,常常使得线性方程组中的系数矩阵和非齐次项信息具有某种程度的近似性(即扰动性),这种近似性显然会使得线性方程组的求解不容易得到真实的理论解。此时,不同的求解方法由于运算机理不一样,求解过程中误差积累程度就不一样,因此必然会使得不同的求解方法得到的解具有不同的逼近真解的误差程度,尤其对具有病态性的方程组而言,由于病态线性方程组的条件数很大,数据误差以及计算过程中引入的舍入误差往往会使线性方程组的解不稳定,即不管原始数据的误差多么小,都可能造成解的很大变化,使线性方程组的解严重失真。因此,许多现有的方

法都是无效的,病态线性方程组的求解变得相当困难。求解线性方程组的最常用的方法主要有直接法和迭代法两大类,其中直接法中最常用的方法是高斯消元法。但是,该方法求解病态线性方程组时不能得到合理的解,误差很大。 二、研究现状 目前关于线性方程组的数值解法一般有两大类。一类是直接方法,另一类是迭代方法。直接方法最基本的是高斯消元法及其变形,这类方法是解低阶稠密矩阵方程组的有效方法,近十几年来直接法在求解具有较大型稀疏矩阵方程组方面取得了较大进展。迭代法就是用某种迭代过程去逐步逼近线性方程组的精确解,迭代法具有需要计算机的存储单元较少,程序设计简单,原始系数矩阵在计算过程中始终不变等优点,但存在收敛性及收敛速度问题。迭代法是解大型稀疏矩阵方程组的重要方法。当前对迭代算法的研究已经较为成熟,但如何使之适合新体系模型,以获得更好的性能加速一直是应用和体系设计者关心的问题。 三、常用方法比较 1.直接方法 直接方法是指假设计算过程中不产生舍入误差,经过有限次运算可求得方程组的精确解的方法。事实上,由于舍入误差的存在,用直接法一般也只能求得方程组的近似解。直接方法中主要有三种方法:克拉默法则、高斯消元法、LU 分解法。 (1)克拉默法则 设有线性方程组( n 个未知数 n 个方程)

线性方程组的公共解

线性方程组的公共解 问题:如何求解线性方程组的公共解? 线性方程组是高代学习的一个重点内容,它的一般形式为 ???????=+++=+++=+++bs asnxn x as x as b nxn a x a x a b nxn a x a x a ...2211... ,22...222121,11...212111 而线性方程组的求解也是这部分学习的重点和难点。其中求解线性方程组的公共解也是高等代数学习所必须掌握的一个知识点。 例1、证明:对于n 元齐次线性方程组(Ⅰ)AX=0与(Ⅱ)BX=0,有非零公共解的充要条件是r(B A )

???=-=+0 42031x x x x 又已知某齐次线性方程组(Ⅱ)的通解为 k1(0,1,1,0)’+k2(-1,2,2,1)’ 问(Ⅰ)与(Ⅱ)是否有非零公共解?若有,则求出所有公共解,若没有,则说明理由。(出自2005年中科院) 解:方法一:将(Ⅱ)的通解代入方程组(Ⅰ)得 ???=+=+0 21021k k k k 解得k1=-k2,故方程组(Ⅰ)与(Ⅱ)有非零公共解,所有非零公共解为k (1,1,1,1)’,k ≠0为任意常数 方法二:令方程组(Ⅰ)与(Ⅱ)的通解相同,即 k1(0,1,1,0)’+k2(-1,2,2,1)’=k3(-1,0,1,0)’+k4(0,1,0,1)’ 得到关于k1,k2,k3,k4的一个方程组 ???????=-=-+=-+=-0 420 422103221032k k k k k k k k k k 可求其通解为(k1,k2,k3,k4)’=k(-1,1,1,1)’ 将k1=-1,k2=k 代入(Ⅰ)的通解可得所有非零公共解为k (1,1,1,1)’,k ≠0为任意常数 方法三:方程组(Ⅱ)可以是 ? ??=+=+-041032x x x x 解(Ⅰ)与(Ⅱ)的联立方程组可得所有非零公共解为k (1,1,1,1)’,k ≠0为任意常数 韩梦雪 20132113429

线性代数方程组求解

线性代数方程组求解 The Standardization Office was revised on the afternoon of December 13, 2020

线性代数方程组求解 一、实验要求 编程求解方程组: 方程组1: 方程组2: 方程组3: 要求: 用C/C++语言实现如下函数: 1.bool lu(double* a, int* pivot, int n); 实现矩阵的LU分解。 pivot为输出参数,pivot[0,n) 中存放主元的位置排列。

函数成功时返回false ,否则返回true 。 2. bool guass(double const* lu, int const* p, double* b, int n); 求线代数方程组的解 设矩阵Lunxn 为某个矩阵anxn 的LU 分解,在内存中按行优先次序存放。p[0,n)为LU 分解的主元排列。b 为方程组Ax=b 的右端向量。此函数计算方程组Ax=b 的解,并将结果存放在数组b[0,n)中。函数成功时返回false ,否则返回true 。 3. void qr(double* a, double* d, int n);矩阵的QR 分解 假设数组anxn 在内存中按行优先次序存放。此函数使用HouseHolder 变换将其就地进行QR 分解。 d 为输出参数,d [0,n) 中存放QR 分解的上三角对角线元素。 4. bool hshld(double const*qr, double const*d, double*b, int n); 求线代数方程组的解 设矩阵qrnxn 为某个矩阵anxn 的QR 分解,在内存中按行优先次序存放。d [0,n) 为QR 分解的上三角对角线元素。b 为方程组Ax=b 的右端向量。 函数计算方程组Ax=b 的解,并将结果存放在数组b[0,n)中。 函数成功时返回false ,否则返回true 。 二、问题分析 求解线性方程组Ax=b ,其实质就是把它的系数矩阵A 通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过程中,把系数矩阵A 变换成上三角或下三角矩阵显得尤为重要,然而矩阵A 的变换通常有两种分解方法:LU 分解法和QR 分解法。 1、LU 分解法: 将A 分解为一个下三角矩阵L 和一个上三角矩阵U ,即:A=LU, 其中 L=??????? ?????10010012121 n n l l l , U=? ? ??? ? ??????nn n n u u u u u u 000 00222112 11 2、QR 分解法: 将A 分解为一个正交矩阵Q 和一个上三角矩阵R,即:A=QR

数学实验 5:线性代数方程组的数值解法

实验 5:线性代数方程组的数值解法 习题3: 已知方程组Ax b =,其中20*20 A R ∈,定义为: 3 1/21/41/231/21/41/41/231/21/41/41/231/21/4 1/23--????---? ???---??-???? ---?? --? ? 试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对 收敛速度的影响。实验要求: (1) 选取不同的初始向量x0和不同的方程组右端向量b ,给定迭代误差要求,用雅可比 迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出结论; (2) 取定右端向量b 和初始向量x0,将A 的主对角线元素成倍的增长若干次,非主对角 元素不变,每次用雅可比迭代法计算,要求迭代误差满足(1)()5 ||||10k k x x +-∞-<,比 较收敛速度,分析现象并得出结论。 1、 程序设计(可直接粘贴运行) 1) Jacobi 迭代法 function y=jacobi(a,b,x0,e,m) %定义jacobi 函数,其中:a,b 为线性方程组Ax b =中的矩阵和右端向量;x0为初始值; %e 和m 分别为人为设定的精度和预计迭代次数;运行结果y 为迭代的结果和所有中间值组成的 %矩阵 y=0; %对y 初始化 d=diag(diag(a)); %按雅可比迭代标准形形式取主对角元素作为矩阵D u=-triu(a,1); %取上三角矩阵u l=-tril(a,-1); %取下三角矩阵l bj=d^-1*(l+u); fj=d^-1*b; x=[x0,zeros(20,m-1)]; %初始化x,其中x1=x0,即初始值 for k=1:m %人为规定迭代次数,防止不收敛迭代导致死循环 x(:,k+1)=bj*x(:,k)+fj; %jacobi 迭代 if norm(x(:,k+1)-x(:,k),inf)

线性代数方程组的数值解法

线性代数方程组的数值解法 【实验目的】 1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析; 2. 通过实例学习用线性代数方程组解决简化的实际问题。 【实验内容】 【题目1】 通过求解线性方程组11b x A = 和22b x A =,理解条件数的意义和方程组的性态对解 的影响。其中1A 是n 阶范德蒙矩阵,即 1A =???? ? ? ?????? ??------1121 1 112 111 2 00111n n n n n n x x x x x x x x x ,k x k 1.01+=,1, (1) 0-=n k 2A 是n 阶希尔伯特矩阵,1b ,2b 分别是1A ,2A 的行和。 (1)编程构造1A (2A 可直接用命令产生)和1b ,2b ;你能预先知道方程组1 1b x A =和22b x A = 的解吗?令n=5,用左除命令求解(用预先知道的解可检验程序) 。 (2)令n=5,7,9,…,计算1A ,2A 的条件数。为观察它们是否病态,做以下试验:1b ,2b 不变,1A 和2A 的元素),(1n n A ,),(2n n A 分别加扰动ε后求解;1A 和2A 不变,1b ,2b 的 分量)(1n b ,)(2n b 分别加扰动ε求解。分析A 和b 的微小扰动对解的影响。ε取1010-,810-,610-。 (3)经扰动得到的解记做x ~,计算误差 x x x ~-,与用条件数估计的误差相比较。 1.1构造1A ,2A 和1b ,2b 首先令n=5,构造出1A ,2A 和1b ,2b 。首先运行以下程序,输出1A 。

线性代数练习题集线性方程组

线性代数练习题 第四章 线性方程组 系专业班 姓名学号 第一节 解线性方程组的消元法 一.选择题: 1.设A 是n m ?矩阵,b Ax =有解,则 [ C ] (A )当b Ax =有唯一解时,n m = (B )当b Ax =有无穷多解时,<)(A R m (C )当b Ax =有唯一解时,=)(A R n (D )当b Ax =有无穷多解时,0=Ax 只有零解 2.设A 是n m ?矩阵,如果n m <,则 [ C ] (A )b Ax =必有无穷多解 (B )b Ax =必有唯一解 (C )0=Ax 必有非零解 (D )0=Ax 必有唯一解 3.设A 是n m ?矩阵,齐次线性方程组0=Ax 仅有零解的充要条件是)(A R [ D ] (A )小于m (B )小于n (C )等于m (D )等于n 二.填空题: 设????? ??-+=21232121a a A ,???? ? ??=031b ,????? ??=321x x x x (1)齐次线性方程组0=Ax 只有零解,则31a a ≠≠-或 (2)非齐次线性方程组b Ax =无解,则a =1=- 三.计算题: 1. 求解非齐次线性方程组?? ? ??=--+=+-+=+-+122241 2w z y x w z y x w z y x 21 3122211112111121001421120011000110211110002000020121122000 .2000r r r r r r y x x y y x z w z z w w w --+--?????? ? ? ?-???→-???→- ? ? ? ? ? ?----?????? -?=?+==-????? -=∴==??????-===??? ? 或

线性代数方程组数值解法及MATLAB实现综述汇总

线性代数方程组数值解法及MATLAB 实现综述 廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一、分析课题 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。 直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。 迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。迭代法包括Jacobi 法SOR 法、SSOR 法等多种方法。 二、研究课题-线性代数方程组数值解法 一、 直接法 1、 Gauss 消元法 通过一系列的加减消元运算,也就是代数中的加减消去法,以使A 对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。 1.1消元过程 1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。 1112112122 2212n n n n nn n a a a b a a a b a a a b ?? ? ? ? ??? (1)(1)(1) (1)111213 11(2)(2)(2)(2 ) 222322(3)(3)(3) 3333()()000000n n n n n nn n a a a a b a a a b a a b a b ?? ? ? ? ? ? ??? 步骤如下:

1、 为何值时,线性方程组 有解,并求一般解

1、λ为何值时,线性方程组123412341 23251321383x x x x x x x x x x x λ++-=??+++=??++=?有解,并求一般解。 2、λ为何值时,线性方程组123412341 2341222 44x x x x x x x x x x x x λ+++=??-+-=??+++=?有解,并求一般解。 3、λ为何值时,线性方程组123412341232312341x x x x x x x x x x x λ++-=??++-=-??++=? 有解,并求一般解。 4、λ为何值时,线性方程组123412341 234233221 25x x x x x x x x x x x x λ+-+=??++-=??++-=?有解, 并求一般解。 填空: 1、若()4r A =,则齐次线性方程组

45510A X ??=解的情况为( )。 A .有唯一零解 B .有非零解 C .无解 D .不能确定是否有非零解 2、设非齐次线性方程组(0)AX b b =≠有无穷多解,那么齐次线性方程组0AX =( ) A. 只有零解 B. 有非零解 C. 无解 D. 不能确定是否有解 3、设A 为n 阶方阵,E 为n 阶单位阵,且22A A E O -+=,则1A -=( ) A. 2E A - ; B. 2A - ; C. 2A - ; D. A E - 4、设A ,B 均为n 阶方阵,则下列结论不正确的是( ) A ()222 A B AB = B . 222()A B A AB BA B -=--+ C . T T T A B AB =)( D . 若A 、B 都可逆,,则()111AB B A ---=

相关主题
文本预览
相关文档 最新文档