MATLAB中方程組求解的學習總結

2021-10-08 02:28:38 字數 1728 閱讀 7007

此方法一般適用於低階稠密線性方程組。

一、利用左除的直接解法 對於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];

b=[13,-9,6,0]』;

[l,u]=lu(a);

x=u(l\b) %u與括號間還有個左除符號,不知道為什麼無法顯示

此方法一般用於求解大型稀疏矩陣,這裡主要介紹的是jacobi迭代法,對於方程組ax=b,若a為非奇異方針,且主對角線元素都不為0,把a分解為a=d-l-u,d是對角矩陣,元素為a的對角元素,l與u為a的下三角矩陣取反和上三角矩陣取反,推導出迭代公式

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...