Matlab随笔之求解线性方程
生活随笔
收集整理的這篇文章主要介紹了
Matlab随笔之求解线性方程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文:Matlab隨筆之求解線性方程
理論知識補充:
%矩陣除分為矩陣右除和矩陣左除。
%矩陣右除的運算符號為“/”,設(shè)A,B為兩個矩陣,則“A/B”是指方程X*B=A的解矩陣X。
%矩陣A和B的列數(shù)必須是相等。
% 矩陣左除的運算符號為“\”,設(shè)A,B為兩個矩陣,則“B\A”是指方程B*X=A的解矩陣X。
%矩陣A和B的行數(shù)必須是相等。
%求解多項式的解,用roots函數(shù)
%求解定解方程組(未知數(shù)個數(shù)等于方程總數(shù))
%A*x=b A=[1,2; 3,4]; b=[5;11]; y=A\b z=inv(A)*b?
運行結(jié)果:
y =1 2z =1 2%求解不定方程組(未知數(shù)個數(shù)大于方程總數(shù))
運行結(jié)果:
x =0 0.3077 1.4615%求解超定方程組(未知數(shù)個數(shù)小于方程總數(shù))
?
A=[1,1; -2,-4; 1,-2]; b=[2;-3;2]; x=A\b求解輸出如下圖所示,需要說明時,求得結(jié)果是以一最小二乘近似解。
x =1.8182 -0.1299%求解奇異方程組(多個方程之間有重復(fù))
?
A=[1,2,1; -2,-4,-2; 1,-2,5]; b=[6;-12;3]; x=A\b此時,結(jié)果為
警告: 矩陣為奇異工作精度。 > In test at 5x =NaN NaN NaN此時,可以做同解異構(gòu),如下:
A=[1,2,1; -2,-4,-2; 1,-2,5; 0,0,0]; b=[6;-12;3;0]; x=A\b運行結(jié)果為:
?
x =0 2.2500 1.5000?
總結(jié):將上面的所有情況封裝起來,做成一個函數(shù),代碼如下:
function X=solveEquation(A,b) % 解方程A*x=b % A為系數(shù)方程,b為列向量 [temp1,temp2]=size(b); if(temp2~=1)%判斷b是否為列向量disp('b不是列向量!');return end [c,d]=size(A);%c為方程數(shù),d為未知量個數(shù) if(c~=temp1)disp('A,b行數(shù)不一致!');return end if(c==d)if(det(A)==0)%奇異方程組disp('奇異方程組問題');A=[A;zeros(1,d)];b=[b;0];X=A\b;returnend%定解方程組 disp('定解方程組問題');X=A\b;return elseif(c>d)%超定方程disp('超定方程組問題');X=A\b;return elsedisp('不定方程問題');X=A\b;return end?
總結(jié)
以上是生活随笔為你收集整理的Matlab随笔之求解线性方程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 16.04 安装wine
- 下一篇: BootStrap 学习笔记(一)