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