matlab解微分方程

2021-08-15 11:26:57 字數 2127 閱讀 2298

1.dsolve函式

這是最簡單的一種求解微分方程的一種方法-符號解法。一般來說,在matlab中解常微分方程有兩種方法,一種是符號解法,另一種是數值解法。在本科階段的微分數學題,基本上可以通過符號解法解決。

用matlab解決常微分問題的符號解法的關鍵命令是dslove命令。該命令中可以用d表示微分符號,其中d2表示二階微分,d3表示三階微分,以此類推。值得注意的是該微分預設是對自變數t求導,也可以很容易在命令中改為對其他變數求導。

①求解析解

y』『= a*y+ bx;

s = dsolve('d2y=a*y+b*x','x');

d2y用以表示y的二階導數,預設是以t為自變數的,所以最好指明自變數為x.

②初值問題

y』 = y – 2*t / y , y(0) = 1;

s = dsolve('dy == y - 2*t / y','y(0) ==1');

③邊值問題

x*y』』 – 3*y』 = x^2 , y(1) = 0 , y(5) = 0;

s = dsolve('x*d2y - 3*dy ==x^2','y(1)=0','y(5) == 0','x');

函式最後乙個引數指明自變數為x.

④高階方程

求解y』』 = cos(2x) – y , y(0) = 1 , y』(0) = 0;

s=dsolve('d2y == cos(2*x) - y','y(0) =1','dy(0) = 0','x');

simplify(s);

⑤方程組問題

f』 = f + g , g』 = -f + g,f(0) = 1, g(0) =2;

[f,g]= dsolve('df == f + g','dg = -f + g','f(0)==1','g(0) == 2','x');

另外,對於常係數線性微分方程,尤其是高階線性常係數微分方程

可用特徵根法

求得相應齊次微分方程的基本解,再用

常數變易法

求特解。

如:求x'' + 0.2x' +3.92x = 0的通解

解: 特徵方程為:x^2 + 0.2x + 3.92 = 0

roots( [ 1 0.2 3.92 ] )
然後求出來繼續做就好啦。

2.ode45

常用格式 

[ t , y ] = ode45( odefun , tspan , y0 )

odefun

用以表示f(t,y)的函式控制代碼或inline函式i,t是標量,y是標量或向量

tspan

若是二維向量[t0,tf],表示自變數初值t0和終值tf;若是高維向量[t0,t1,...,tn],則表示輸出結點列向量

y0初值向量y0

t表示結點列向量(t0,t1,...,tn)^t

y數值解矩陣,每一列對應y的乙個分量

ode是最常用的求解微分方程的指令,它採用變步長

四、五階runge-kutta-felhberg法適合高精度問題,ode23與ode45類似,只是精度低一些。

如:

1. 建立乙個函式檔案eq2.m,在函式檔案中描述這個解的微分方程組:

%eq2.m檔案

%描述微分方程組

function dy=eq2(t,y)

%說明微分變數是二維的,令y(1)=x,y(2)=y

dy=zeros(2,1);

%微分方程組

dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(t-y(2))^2);

dy(2)=5*(1-y(2))/sqrt((1-y(1))^2+(t-y(2))^2);

end

2.外部呼叫ode45函式求解微分方程組:

[t,y]=ode45(@eq2,[0,2],[0,0]);
ode45函式說明:第乙個引數是方程的名稱,第二個引數是指求解時t的範圍,第三組引數是指y中每個元素的初值。

[t,y]=ode45(@eq2,[t1,t2],[y1(0),y2(0)]);

這部分來自於

MATLAB解一階微分方程

matlab裡ode45命令用4階龍格 庫塔解一階微分方程 常係數 變係數 都能解。首先把微分方程化為dx dt f x 的標準形式寫成函式放在乙個檔案裡,再寫主程式用ode45呼叫這個檔案。舉例如下 函式檔案 方程的定義 一定要用函式名命名 di dt l 1u l 1 wl r i functi...

Matlab求微分方程de符號解

1.dsolve 函式 在求通解問題 syms y x y dsolve x 2 y x 2 y diff y 0 這裡插入 片 syms y x 定義符號變數 dy diff y 一階導數 d2y diff y,2 二階導數,用於初值或邊值條件的賦值 y dsolve diff y,3 diff ...

解方程及微分方程 MATLAB

x1,x2,x3,solve eq1 eq2 eq3 x1 x2 x3 s solve eq1 eq2 eq3 x1 x2 x3 第一種方式,對solve的括號中的x1,x2,x3的次序會有要求 與前面的一致 第二種無要求。eq都是等式,不是表示式。最好都打引號,不打引號也可以,但是一定要預先用sy...