MATLAB(五)在线性代数中的应用
MATLAB在線性代數(shù)中的應(yīng)用
(一)向量組的線性相關(guān)性
求列向量組A的一個(gè)最大線性無(wú)關(guān)組,可用命令rref(A)將A化成行最簡(jiǎn)形,其中單位向量對(duì)應(yīng)的列向量即為最大線性無(wú)關(guān)組所含向量,其他列向量的坐標(biāo)即為其對(duì)應(yīng)向量用最大線性無(wú)關(guān)組線性表示的系數(shù)。
例1. 求下列矩陣列向量組的一個(gè)最大無(wú)關(guān)組。
程序如下:
format rat %有理分?jǐn)?shù)的顯示格式 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 %恢復(fù)到短小數(shù)的顯示格式結(jié)果為:
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的五個(gè)列向量依次為a1、a2、a3、a4、a5,則a1、a2、a3、a4是列向量組的一個(gè)最大無(wú)關(guān)組,且有
例2.設(shè)
驗(yàn)證a1、a2、a3是的一個(gè)基,并把b1、b2用這個(gè)基線性表示。
程序如下:
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 %恢復(fù)到短小數(shù)的顯示格式結(jié)果為:
c =1 0 0 2/3 4/3 0 1 0 -2/3 1 0 0 1 -1 2/3說(shuō)明a1、a2、a3是的一個(gè)基,且有
(二)齊次線性方程組
在Matlab中,函數(shù)null用來(lái)求解零空間,即滿足Ax = 0的解空間,實(shí)際上是求出解空間的一組基(基礎(chǔ)解系)。格式如下:
z = null(A) %z的列向量為方程組的正交規(guī)范基,滿足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) %寫(xiě)出方程組的通解基礎(chǔ)解系和通解分別為:
b =2 5/3 -2 -4/3 1 0 0 1 x =2*k1 + (5*k2)/3- 2*k1 - (4*k2)/3k1k2(三)非齊次線性方程組
Matlab中解非齊次線性方程組可以使用‘\’,雖然表面上只是一個(gè)簡(jiǎn)單的符號(hào),而它的內(nèi)部卻包含許多自適應(yīng)算法,如對(duì)超定方程(無(wú)解)用最小二乘法,對(duì)欠定方程(多解)它將給出范數(shù)最小的一個(gè)解。
另外求解欠定方程組(多解)可以使用求矩陣A的行最簡(jiǎn)形命令rref(A),求出所有的基礎(chǔ)解系。
例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是等價(jià)的 x2 = pinv(a)*b結(jié)果為:
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 %恢復(fù)到短小數(shù)的顯示格式結(jié)果為:
b =1 -1 0 -1 1/2 0 0 1 -2 1/2 0 0 0 0 0所以,方程組有解,并有
因而方程組的通解為
求解非齊次線性方程組需要先判斷方程組是否有解,若有解,再去求通解。因此,步驟為:
- 第一步,判斷Ax=b是否有解,若有解則進(jìn)行第二步;
- 第二步,求Ax=b的一個(gè)特解;
- 第三步,求Ax=0的通解;
- 第四步,寫(xiě)出Ax=b的通解。
(四)相似矩陣及二次型
有時(shí)候我們需要精確的特征值和特征向量,就必須利用Matlab的符號(hào)運(yùn)算功能,在Matlab中創(chuàng)建符號(hào)矩陣和創(chuàng)建數(shù)值矩陣的形式很相似,只不過(guò)要用到符號(hào)定義函數(shù)sym。下面介紹shi使用次函數(shù)創(chuàng)建符號(hào)矩陣的幾種形式。
1. ?使用sym函數(shù)直接創(chuàng)建符號(hào)矩陣
此方法和直接創(chuàng)建數(shù)值矩陣的方法幾乎完全相同,矩陣元素可以是符號(hào)表達(dá)式,各符號(hào)表達(dá)式的長(zhǎng)度可以不同,矩陣元素之間可用逗號(hào)或空格分隔。例如:
clc,clear; x = sym('[a+sin(d),b;1/c,d]'); y = det(x)結(jié)果為:
y = (a*c*d - b + c*d*sin(d))/c2. ?將數(shù)值矩陣轉(zhuǎn)化為符號(hào)矩陣
在Matlab中,數(shù)值矩陣不能直接參與符號(hào)運(yùn)算,必須先轉(zhuǎn)化為符號(hào)矩陣。例如:
clc,clear; a = [2/3, sqrt(2);3,1] b = sym(a)結(jié)果為:
a =0.666666666666667 1.4142135623730953.000000000000000 1.000000000000000 b = [ 2/3, 2^(1/2)] [ 3, 1]3. ?符號(hào)矩陣的索引和修改
Matlab的符號(hào)矩陣索引和修改同數(shù)值矩陣的索引和修改完全相同。
b(2,2) = 'log(2)' b = [ 2/3, 2^(1/2)] [ 3, log(2)]例6. 求一個(gè)正交變換x = Py, 把二次型
化為標(biāo)準(zhǔn)型。
二次型矩陣為
程序如下:
clc,clear; A = [0, 1, 1, -1;1, 0, -1, 1;1, -1, 0, 1;-1, 1, 1, 0]; [P, D] = eig(A)結(jié)果為:
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,其中,
化簡(jiǎn)后的二次型為
例7. ?判別二次型的正定性,并求正交變換把二次型化che成標(biāo)準(zhǔn)型。
程序如下:
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)結(jié)果為:
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?
總結(jié)
以上是生活随笔為你收集整理的MATLAB(五)在线性代数中的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenCV学习笔记(七):形态学mor
- 下一篇: python找出NAN值所在处