MATLAB(五)在线性代数中的应用
MATLAB在線性代數中的應用
(一)向量組的線性相關性
求列向量組A的一個最大線性無關組,可用命令rref(A)將A化成行最簡形,其中單位向量對應的列向量即為最大線性無關組所含向量,其他列向量的坐標即為其對應向量用最大線性無關組線性表示的系數。
例1. 求下列矩陣列向量組的一個最大無關組。
程序如下:
format rat %有理分數的顯示格式 a = [1 2 -1 0 2;-2 4 2 6 -6;2 -1 0 2 3;3 3 3 3 4]; b = rref(a) format %恢復到短小數的顯示格式結果為:
b =1 0 0 0 11/6 0 1 0 0 0 0 0 1 0 -1/6 0 0 0 1 -1/3記矩陣A的五個列向量依次為a1、a2、a3、a4、a5,則a1、a2、a3、a4是列向量組的一個最大無關組,且有
例2.設
驗證a1、a2、a3是的一個基,并把b1、b2用這個基線性表示。
程序如下:
clc,clear; format rat a = [2 2 -1;2 -1 2;-1 2 2]; b = [1 4;0 3;-4 2]; c = rref([a,b]) format %恢復到短小數的顯示格式結果為:
c =1 0 0 2/3 4/3 0 1 0 -2/3 1 0 0 1 -1 2/3說明a1、a2、a3是的一個基,且有
(二)齊次線性方程組
在Matlab中,函數null用來求解零空間,即滿足Ax = 0的解空間,實際上是求出解空間的一組基(基礎解系)。格式如下:
z = null(A) %z的列向量為方程組的正交規范基,滿足zTz=E z = null(A,'r') %z的列向量是方程Ax=0的有理基例3. 求方程組的通解
程序如下:
clc,clear; format rat a = [1 2 2 1;2 1 -2 -2;1 -1 -4 -3]; b = null(a,'r') syms k1 k2 x = k1*b(:,1)+k2*b(:,2) %寫出方程組的通解基礎解系和通解分別為:
b =2 5/3 -2 -4/3 1 0 0 1 x =2*k1 + (5*k2)/3- 2*k1 - (4*k2)/3k1k2(三)非齊次線性方程組
Matlab中解非齊次線性方程組可以使用‘\’,雖然表面上只是一個簡單的符號,而它的內部卻包含許多自適應算法,如對超定方程(無解)用最小二乘法,對欠定方程(多解)它將給出范數最小的一個解。
另外求解欠定方程組(多解)可以使用求矩陣A的行最簡形命令rref(A),求出所有的基礎解系。
例4.求超定方程組
程序如下:
clc,clear; format rat a = [1 1 0;1 0 1;1 1 1;1 2 -1]; b = [1;2;0;-1]; x1 = a\b %這里\和pinv是等價的 x2 = pinv(a)*b結果為:
x1 =17/6 -13/6 -2/3 x2 =17/6 -13/6 -2/3求得最小二乘解為
例5.求解方程組
程序如下:
clc,clear; format rat a = [1 -1 -1 1 0;1 -1 1 -3 1;1 -1 -2 3 -1/2]; b = rref(a) format %恢復到短小數的顯示格式結果為:
b =1 -1 0 -1 1/2 0 0 1 -2 1/2 0 0 0 0 0所以,方程組有解,并有
因而方程組的通解為
求解非齊次線性方程組需要先判斷方程組是否有解,若有解,再去求通解。因此,步驟為:
- 第一步,判斷Ax=b是否有解,若有解則進行第二步;
- 第二步,求Ax=b的一個特解;
- 第三步,求Ax=0的通解;
- 第四步,寫出Ax=b的通解。
(四)相似矩陣及二次型
有時候我們需要精確的特征值和特征向量,就必須利用Matlab的符號運算功能,在Matlab中創建符號矩陣和創建數值矩陣的形式很相似,只不過要用到符號定義函數sym。下面介紹shi使用次函數創建符號矩陣的幾種形式。
1. ?使用sym函數直接創建符號矩陣
此方法和直接創建數值矩陣的方法幾乎完全相同,矩陣元素可以是符號表達式,各符號表達式的長度可以不同,矩陣元素之間可用逗號或空格分隔。例如:
clc,clear; x = sym('[a+sin(d),b;1/c,d]'); y = det(x)結果為:
y = (a*c*d - b + c*d*sin(d))/c2. ?將數值矩陣轉化為符號矩陣
在Matlab中,數值矩陣不能直接參與符號運算,必須先轉化為符號矩陣。例如:
clc,clear; a = [2/3, sqrt(2);3,1] b = sym(a)結果為:
a =0.666666666666667 1.4142135623730953.000000000000000 1.000000000000000 b = [ 2/3, 2^(1/2)] [ 3, 1]3. ?符號矩陣的索引和修改
Matlab的符號矩陣索引和修改同數值矩陣的索引和修改完全相同。
b(2,2) = 'log(2)' b = [ 2/3, 2^(1/2)] [ 3, log(2)]例6. 求一個正交變換x = Py, 把二次型
化為標準型。
二次型矩陣為
程序如下:
clc,clear; A = [0, 1, 1, -1;1, 0, -1, 1;1, -1, 0, 1;-1, 1, 1, 0]; [P, D] = eig(A)結果為:
P =-0.5000 0.2887 0.7887 0.21130.5000 -0.2887 0.2113 0.78870.5000 -0.2887 0.5774 -0.5774-0.5000 -0.8660 0 0 D =-3.0000 0 0 00 1.0000 0 00 0 1.0000 00 0 0 1.0000P就是所求的正交矩陣,使得,x = Py,其中,
化簡后的二次型為
例7. ?判別二次型的正定性,并求正交變換把二次型化che成標準型。
程序如下:
clc,clear; a = [2 -2 0;-2 4 0;0 0 5]; b = eig(a) if all(b>0)fprintf('二次型正定\n'); elsefprintf('二次型非正定\n'); end [c,d]=eig(a)結果為:
b =0.76395.00005.2361 二次型正定 c =-0.8507 0 -0.5257-0.5257 0 0.85070 1.0000 0 d =0.7639 0 00 5.0000 00 0 5.2361?
總結
以上是生活随笔為你收集整理的MATLAB(五)在线性代数中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV学习笔记(七):形态学mor
- 下一篇: MATLAB GUI引用了不存在的字段