680 likes | 922 Views
§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] ;
E N D
§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=[112-1;211-1;2212]; • >>null(A,’r’) ans = 4/3 -3 4/3 1 • 通解为X=k(4/3 -3 4/3 1)^T, • k为任意常数.
注:其中的‘r’表示格式以有理数的形式显示,即是将系数矩阵化成简化行简阶梯形求得的基础解系。注:其中的‘r’表示格式以有理数的形式显示,即是将系数矩阵化成简化行简阶梯形求得的基础解系。 若使用null(A)命令,得到的是解空间的一组标准正交基,即X’*X=E.此时的X是近似值,待入有 AX不等于零,近似为零。
如上例 >>x= null(A) x = 0.3621 -0.8148 0.3621 0.2716 >> A*x ans = 1.0e-15 * 0 -0.3886 -0.6661 >> x'*x ans = 1.0000
例、 解:>> 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'*B ans = 1.0000 -0.0000 -0.0000 1.0000
二、求解非齐次线性方程组 • 1、当AX=b有唯一解时,X=A\b给出唯 一解;特别当A是方阵时也可用 X=inv(A)*b 例、
解:>>A =[120-4;1-1-49;2-315;3 -2 -5 1]; >> b=[-3;22;-3;3]; >> rank(A),rank([A,b]) ans = 4 ans = 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=[61515 15]'; >> rank(A),rank([A,b]) ans = 3 ans= 3 >> A\b ans = 1.0000 1.0000 1.0000
2、当AX=b有无穷多解时,用pinv(A)*b给出一个特解.2、当AX=b有无穷多解时,用pinv(A)*b给出一个特解. • 例、
解: >> 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)*b ans = 0.1173 0.1732 0.1006 -0.0447
注:这是它的一个特解,可以检验:A*(pinv(A)*b)=b,用null命令可求到对应的齐次线性方程组的基础解系,从而可求到通解.注:这是它的一个特解,可以检验:A*(pinv(A)*b)=b,用null命令可求到对应的齐次线性方程组的基础解系,从而可求到通解. >> null(A,'r') ans = 8 -7 -6 5 1 0 0 1 • 即为基础解系。
若想用线代教材中的高斯消元法求解,我们可以把增广矩阵化成简化行阶梯形,从而得到通解。若想用线代教材中的高斯消元法求解,我们可以把增广矩阵化成简化行阶梯形,从而得到通解。 • 如上例 >> 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
对应的齐次的基础解系为: • 非齐次的特解为:
解: >> 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
例、 解: >> A=[2 1 -1 1;4 2 -2 1;2 1 -1 -1]; >> b=[1;2;1]; >> rank(A),rank([A,b]) ans = 2 ans = 2
>> pinv(A)*b ans = 0.3333 0.1667 -0.1667 -0.0000 >> A*pinv(A)*b ans = 1.0000 2.0000 1.0000 • 注:pinv(A)*b给出它的一个特解.
>> x=A\b Warning: Rank deficient, rank = 2, tol = 1.884111e-15. x = 0.5000 0 0 0.0000 >> A*x ans = 1.0000 2.0000 1.0000 • 注:A\b也给出它的一个特解.
>> null(A,'r') ans = -0.5000 0.5000 1.0000 0 0 1.0000 0 0 • 给出对应的齐次基础解系。从而得通解
3、当求解非齐次线性方程组无解时 可用pinv(A)*b给出一个最小二乘解,即使误差向量AX-b的平方和最小化的解。 • 例、AX=b >> b=[1;2;1]; >> A=[1 2 3;4 5 6;246;];
解: >> B=[A,b]; >> rank(A),rank(B) ans = 2 ans= 3 >> pinv(A)*b ans = 0.3222 0.1556 -0.0111 • 最小二乘解!
例、 >> A=[1 2 3;4 5 6;7 8 0;2 5 8]; >> b=[366 804 351 514]'; >> rank(A),rank([A,b]) ans = 3 ans= 4 注:可知AX=b无解。
>> pinv(A)*b ans = 247.9818 -173.1091 114.9273 • 最小二乘解!
作业 1、至少用三种方法解方程组AX=b,如矩阵除法、求逆矩阵、初等变换等,其中
§2.5、特征值、特征向量的计算 • 一、如何理解矩阵A的特征值、 • 特征向量 • ? • 在Matlab中可用命令eigshow来显示X和AX在单位圆周上的运动效果
例、 >> A=[5/4 0;0 3/4]; >> eigshow(A) • 若X为单位特征向量,则X与AX共线,且AX的长就是相应的特征值。
二、二维和三维图形 • 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) 例、 >> [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
例、 >> 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)