此方法一般適用於低階稠密線性方程組。
一、利用左除的直接解法 對於ax=b,變換後可得到x=a\b
示例**如下
a=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]』;
x=a\b`
二、利用矩陣的分解求解(這裡介紹的是lu分解)
matlab提供的lu函式呼叫格式如下
1.[l,u]=lu(x);
%產生乙個上三角陣u和乙個變換形式的下三角陣l,使得x=lu
2.[l,u,p]=lu(x);
%p為置換矩陣,滿足px=lu
示例**如下(利用lu分解來計算線性方程組)
a=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];此方法一般用於求解大型稀疏矩陣,這裡主要介紹的是jacobi迭代法,對於方程組ax=b,若a為非奇異方針,且主對角線元素都不為0,把a分解為a=d-l-u,d是對角矩陣,元素為a的對角元素,l與u為a的下三角矩陣取反和上三角矩陣取反,推導出迭代公式b=[13,-9,6,0]』;
[l,u]=lu(a);
x=u(l\b) %u與括號間還有個左除符號,不知道為什麼無法顯示
y=b*x+f
function [y,n]
=jacobi
(a,b,x0,ep)
d=diag
(diag
(a))
;%求a的對角陣l=-
tril
(a,-1)
;%求a的下三角陣並取反u=-
triu
(a,1);
%求a的上三角陣並取反
b=d\(l+u)
;f=d\b;
y=b*x0+f;
%x0為迭代初值,長度等於未知數個數n=1
;%用來統計次數
while
norm
(y-x0)
>=ep %
2-範數與迭代精度比較
x0=y;
y=b*x0+f;
n=n+1;
end
這是jacobi方法的函式檔案**,在求解時在程式中呼叫此函式檔案即可得出結果。
fzero函式的呼叫格式如下
z=fzero(f,x0) , %f為待求根函式,x0為搜尋起點,此函式只能給出離x0最近的根。
x=fsolve(f,x0,option)
option用於設定優化工具箱的優化引數
%用fsolve求解非線性方程組的解的函式檔案
function f=
myfun
(x)x=x(
1);y=
x(2)
;z=x(
3);f
(1)=
sin(x)
+y+z^2*
exp(x);f
(2)=x+y+z;f(
3)=x*y*z;
指令碼檔案如下
option=
optimset
('display'
,'off');
x=fsolve
(@myfun,[1
,1,1
],option)
MATLAB 求解方程(組)
eg.解方程x 2 x 2 0 1.roots p 函式 此 matlab 函式 以列向量的形式返回 p 表示的多項式的根。輸入 p 是乙個包含 n 1 多項式係數的向量,以 xn 係數開頭。0係數表示方程中不存在的中間冪。p 1 1,2 x roots p 2.solve函式 利用solve函式求...
Matlab求解微分方程組
我們採用ode方法 1 求解普通微分方程組 使用ode45方法 1.建立乙個函式檔案eq2.m,在函式檔案中描述這個解的微分方程組 eq2.m檔案 描述微分方程組 function dy eq2 t,y 說明微分變數是二維的,令y 1 x,y 2 y dy zeros 2,1 微分方程組 dy 1 ...
matlab 求解非線性方程 方程組
使用matlab求解非線性規劃 目標函式們 0 create by zhiyang dou 2019 4 10 contact sdudzy 163.com function f target d,r,j,b,sigma j f 1 j j d 1 normcdf log j d 1 b r 0.5...