§2.4 求解线性方程组
DESCRIPTION
§2.4 求解线性方程组. 一、求解齐次线性方程组 AX=0. 方法: null(A) 或 null(A, ’r’). 注:. 此命令给出齐次线性方程组 AX=0 的基础解系, 即 解空间的一组基。 前者是数值解,后者是有理形式的基。 从而可写出通解:基础解系的线性组合。. 例、. 解:. >> A=[1 1 2 -1;2 1 1 -1;2 2 1 2]; >> null(A ). ans = 0.3621 - 0.8148 0.3621 0.2716. 解: >>A=[1 1 2 -1 ; 2 1 1 -1 ; 2 2 1 2] ; - PowerPoint PPT PresentationTRANSCRIPT
§2.4 求解线性方程组一、求解齐次线性方程组 AX=0
• 此命令给出齐次线性方程组 AX=0 的基础解系,即解空间的一组基。• 前者是数值解,后者是有理形式的基。• 从而可写出通解:基础解系的线性组合。
方法: null(A) 或 null(A, ’r’)注:
例、
.0222,02,02
4321
4321
4321
xxxxxxxxxxxx
>> A=[1 1 2 -1;2 1 1 -1;2 2 1 2];>> null(A)
解:ans = 0.3621 -0.8148 0.3621 0.2716
解: >>A=[1 1 2 -1 ; 2 1 1 -1 ; 2 2 1 2] ;
>>null(A,’r’)ans = 4/3 -3 4/3 1
通解为 X=k(4/3 -3 4/3 1)^T , k 为任意常数 .
注:其中的‘ r’ 表示格式以有理数的形式显示,即是将系数矩阵化成简化行简阶梯形求得的基础解系。若使用 null(A) 命令,得到的是解空间的一组标准正交基,即 X’*X=E. 此时的 X 是近似值,待入有 AX 不等于零 , 近似为零。
>>x= null(A)x = 0.3621 -0.8148 0.3621 0.2716
如上例 >> A*x
>> x'*xans = 1.0000
ans = 1.0e-15 * 0 -0.3886 -0.6661
例、
.05105,0363
,02
4321
4321
4321
xxxxxxxx
xxxx
解: >> A=[1 2 1 -1;3 6 -1 -3;5 10 1 -5]; >> null(A,'r') ans = -2 1 1 0 0 0 0 1
B=null(A) B = -0.3229 0.8538 -0.2891 -0.4997 -0.0000 -0.0000 -0.9012 -0.1456
>> B'*Bans = 1.0000 -0.0000 -0.0000 1.0000
1 、当 AX=b 有唯一解时, X=A\b 给出唯 一解;特别当 A 是方阵时也可用X=inv(A)*b
例、
二、求解非齐次线性方程组
3523,3532,2294
,342
4321
4321
4321
421
xxxxxxxxxxxx
xxx
bXA nm
解: >>A =[1 2 0 -4;1 -1 -4 9;2 -3 1 5;3 -2 -5 1]; >> b=[-3;22;-3;3];
>> rank(A),rank([A,b])ans = 4ans = 4
>> X=A\b (或inv(A)*b )X = -1 3 -2 2
>> A=[1 2 3;4 5 6;7 8 0;2 5 8];>> b=[6 15 15 15]';>> rank(A),rank([A,b])ans = 3ans= 3
例、
>> A\bans = 1.0000 1.0000 1.0000
2 、当 AX=b 有无穷多解时,用pinv(A)*b 给出一个特解 .
例、
.5192483,13254,24653,1342
4321
4321
4321
4321
xxxxxxxxxxxxxxxx
>> b=[1;2;1;5];>> A=[1 2 4 -3;3 5 6 -4;4 5 -2 3;3 8 24 -19];
>> rank(A),rank([A,b])ans = 2 ans= 2
>> pinv(A)*bans = 0.1173 0.1732 0.1006 -0.0447
解:
注:这是它的一个特解,可以检验:A*(pinv(A)*b)=b, 用 null 命令可求到对应的齐次线性方程组的基础解系,从而可求到通解 .
>> null(A,'r')ans = 8 -7 -6 5 1 0 0 1
1057
,
0168
21
即为基础解系。
若想用线代教材中的高斯消元法求解,我们可以把增广矩阵化成简化行阶梯形,从而得到通解。如上例 >> B=[A,b];
>> rref(B)ans = 1 0 -8 7 -1 0 1 6 -5 1 0 0 0 0 0 0 0 0 0 0
对应的齐次的基础解系为:
1057
,
0168
21
非齐次的特解为:
0011
0
故通解为:
.,
,
0011
1057
0168
21
21
02211
为任意常数kk
kk
kkX
69413283542432
321
321
321
321
xxxxxxxxxxxx
例、求解下面的非齐次线性方程组
解: >> A=[2 3 1;1 -2 4;3 8 -2;4 -1 9];>> b=[4;-5;13;-6];>> rref([A,b])
ans =
1 0 2 -1 0 1 -1 2 0 0 0 0 0 0 0 0
由此可得通解为:
.,021
112
RkkX
.12,2224
,12
4321
4321
4321
xxxxxxxx
xxxx例、
>> A=[2 1 -1 1;4 2 -2 1;2 1 -1 -1];>> b=[1;2;1];>> rank(A),rank([A,b])ans = 2ans = 2
解:
>> pinv(A)*bans = 0.3333 0.1667 -0.1667 -0.0000>> A*pinv(A)*bans = 1.0000 2.0000 1.0000
注:pinv(A)*b给出它的一个特解 .
>> x=A\bWarning: Rank deficient, rank = 2, tol = 1.884111e-15. x = 0.5000 0 0 0.0000>> A*xans = 1.0000 2.0000 1.0000
注: A\b也给出它的一个特解 .
>> null(A,'r')
ans =
-0.5000 0.5000 1.0000 0 0 1.0000 0 0
给出对应的齐次基础解系。从而得通解
可用 pinv(A)*b 给出一个最小二乘解,即使误差向量 AX-b 的平方和最小化的解。
3 、当求解非齐次线性方程组无解时
例、 AX=b
>> b=[1;2;1];>> A=[1 2 3;4 5 6;2 4 6;];
>> pinv(A)*bans = 0.3222 0.1556 -0.0111
>> B=[A,b];>> rank(A),rank(B)ans = 2ans= 3
最小二乘解!
解:
例、>> A=[1 2 3;4 5 6;7 8 0;2 5 8];>> b=[366 804 351 514]';>> rank(A),rank([A,b])ans = 3ans= 4
注:可知 AX=b 无解。
>> pinv(A)*b
ans =
247.9818 -173.1091 114.9273
最小二乘解!
作业 1 、至少用三种方法解方程组AX=b, 如矩阵除法、求逆矩阵、初等变换等,其中
6120
5407395012818053
bA
2 、判断 AX=b 的解,并用适当命令求解,其中
61354
914283421132
)1( bA
.353,2522,132
)2(321
321
321
xxxxxxxxx
.8311,1023,224
)3(21
321
321
xxxxxxxx
;12,34,32
,1253,1453
)4(
54321
54321
54321
54321
4321
xxxxxxxxxxxxxxxxxxxx
xxxx
3 、解方程组 , 并验证得出的解满足原方程 .
0174
5112123152212913237
)1( X
60151403514436136349624
5432141097539108627810715675
)2( X
§2.5 、特征值、特征向量的计算一、如何理解矩阵 A 的特征值、 特征向量
?在 Matlab 中可用命令 eigshow 来显示 X 和 AX 在单位圆周上的运动效果
例、
430
045
)1( A
>> A=[5/4 0;0 3/4];>> eigshow(A)
若 X 为单位特征向量,则 X 与 AX 共线,且 AX 的长就是相应的特征值。
1001)2( A
0110)3( A
二、二维和三维图形1 、命令: plot(x,y)
例、 y=sin(x)
>> x=0:pi/100:2*pi;>> y=sin(x);>> plot(x,y)
注:可增加注记。
>> plot(x,y),...xlabel('x'),ylabel('sin(x)'),title('plot of the Sine function')
>> plot(x,y),...xlabel('x'),...ylabel('sin(x)'),...title('plot of Sine function')
或
注:可在同一坐标系下画出不同函数图形例、 y=sin(x) , y=cos(x)
>> x=0:pi/100:2*pi;y=sin(x);plot(x,y)>> hold on % 添加到同一张图中>> y2=cos(x);>> plot(x,y2,'r:'),...legend('sin','cos')
2 、三维图形命令:[x,y]=meshgrid( 初值:步长:终值 ) ; z=f(x,y); surf(x,y,z)
例、 22 yxxez
>> [x,y]=meshgrid(-2:.2:2);>> z=x.*exp(-x.^2-y.^2);>> surf(x,y,z)
三、 eig(A): 表示求矩阵 A 的特征值。>> A=[0 1;-1 0];1. >> eig(A)
ans =
0.0000 + 1.0000i 0.0000 - 1.0000i
例、
注:我们知道矩阵 A 的特征值是它的特征多项式的根,所有我们也可求出它的特征多项式。2 . >> p=poly(A) p = 1 0 1
注:输出的这些数是特征多项式中各项的系数,按降幂排列。
>> x=-8:0.1:8;>> y=polyval(p,x);>> plot(x,y)
>> syms a>> f=a^2+1;>> solve(f==0,a)
ans = i -i
例、
201034011
A
>> A=[-1 1 0;-4 3 0;1 0 2];>> poly(A)
ans = 1 -4 5 -2
>> x=-4:1:4;>> y=polyval(p,x);>> plot(x,y)
>> syms a;>> f=a^3-4*a^2+5*a-2;>> solve(f==0,a) ans = 1 1 2
二、 [ 变量名 , 矩阵名 ]=eig(A): 表示求矩阵 A 的特征值和特征向量。>> [X,D]=eig(A)
注:结果中 D 的主对角线上 的元素是 特征值, X 的列是相应的特征向量
例、
X = 0.7071 + 0.0000i 0.7071 + 0.0000i 0.0000 + 0.7071i 0.0000 - 0.7071i
D = 0.0000 + 1.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 - 1.0000i
注:在 Matlab 中,如没有特殊声明,所以的运算都是进行数值计算,结果会自动以近似值的形式给出。若需要得到精确的表达式,可声明为symbolic 对象, ( 符号对象,需要有symbolic math toolbox 工具箱的支持 ) 。命令为 sym
1222212222122221
A
例、求矩阵 A 的特征值与特征向量
>> A=[1 -2 -2 -2;-2 1 -2 -2;-2 -2 1 -2;-2 -2 -2 1];>> [V,D]=eig(A)
V = 0.5000 -0.2113 0.7887 0.2887 0.5000 0.7887 -0.2113 0.2887 0.5000 -0.5774 -0.5774 0.2887 0.5000 0 0 -0.8660
D =
-5 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3
>> A=sym([1 -2 -2 -2;-2 1 -2 -2;-2 -2 1 -2;- 2 -2 -2 1]);
>> [V,D]=eig(A)
V =[ 1, -1, -1, -1][ 1, 1, 0, 0][ 1, 0, 1, 0][ 1, 0, 0, 1]
D = -5 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3
注:对于重特征值的,可由给出的特征 向量判断该矩阵是否可对角化。例、 >> A=[5 6 -3;-1 0 1;1 2 1];
>> [V,D]=eig(A)
D =
2.0000 0 0 0 2.0000 0 0 0 2.0000
V =
0.9045 -0.9045 -0.8393 -0.3015 0.3015 0.5116 0.3015 -0.3015 0.1840
注:显然第一列、第二列相同,线性相关,所以它没有三个线性无关特征向量,故矩阵 A 不可对角化。
作业 1 、考虑矩阵
5335,
5335 BA
( 1 )使用 Matlab 计算 A,B 的特征值,并判断是否是相同 类型特征值。
( 2 )使用命令分别形成它们的特征多项式,并画出它们的图形,x=-8:0.1:8.
(3) 从图形看,关于 B 的特征值你能得到什么结论?
2 、求出矩阵 A 和 B 的特征值和特征向量,并判断是否可对角化 .其中
16151413121110987654321
A
1097591086781075675
B
3 、设矩阵 A
384252120
A
( 1 )求矩阵 A 的特征值;( 2 )问 A 能否相似于对角阵,若相似,求可逆矩阵 P ,使得 APP 1
为对角阵;( 3 )求 100A
4 、按如下方式构造一个对称矩阵: A=round(5*rand(6));A=A+A'
并完成如下操作:( 1 )用合适的命令求 A 的特征 值、特征值的和、特征值的乘积、 A 的行列式及 A的 迹,并比较这些结果,哪些是相等的;
( 2 )用命令 [X,D] 求 A 的特征 向量,并计算 X^(-1)AX 并比 较此结果和 D 的关系;计算 A^(-1) 和 XD^(-1)X^(-1)比较这两个结果。
5 、令A=ones(10)+eye(10),求 A 的特征值、 A-E 的秩及 A的 迹,并从理论上解释为什么 1是它的九重特征值,而另一个特征值是 11 ,写出你的理由。