怎麼用matlab 畫出微分方程組的數值解,類似曲線那種,任意給出t的範圍

時間 2021-05-30 22:38:08

1樓:梁維

個人不是很習慣使用dsolve,個人感覺沒有突出MATLAB的特點

個人的習慣是用ode45,即龍格庫塔方法求解,這個函式MATLAB庫裡面已經有了。

舉例如下:

假設方程為,

clear all

close all

Ts = 0.01; %每步取樣步長

kStep=500; %總步數

Tspan = kStep * Ts; %總時間

t=linspace(0,Tspan,kStep+1); %總點數其實是總步數+1,使用linspace是個人習慣

x0=[1,0初始條件

dog=@(t,x)EqOfMotion(t,x) %呼叫寫好的常微分方程函式

[t,x]=ode45(dog,t,x0); %R-K方法數值求解

plot(t,x(:,1),'k',t,x(:,2),'r') %畫圖

xlabel('Time ($s$)')

ylabel('$x(t)$ and $\dot(t)$')

legend('$x(t)$','$\dot(t)$')

以下為寫好的常微分方程函式,這樣寫是一種向量化表達,而且是一種全狀態表達,因為我們不僅能畫出x的曲線,也能畫出它的一階導數的曲線。

function dx=EqOfMotion(t,x)

dx=[x(2);

-x(1)^3-x(2)^3];

end關於t的範圍和步長,可以在呼叫函式和求解之前任意調整,甚至初始條件也可以調整。

2樓:Socks 3

x使用dsolve("方程1","方程2൪方程n","初始條件","自變數")

Notice: 在表達微分方程時,用字母D表示求微分,D2、D3等表示求高階微分.任何D後所跟的字母為因變數,自變數可以指定或由系統規則選定為預設.

ex.求微分方程的特解.

input:y=dsolve('D2y+4*Dy+29*y=0","y(0)=0,Dy(0)=15","t"

t=[0:0.1:100]; %設定t的範圍plot(t,y進行畫圖

怎麼用matlab把偏微分方程差分後用常微分方程解

Gong Cheng PDE本質上就是可以先做spatial discretization 變成system of ODEs,然後再用解ODE的方法求解。所謂的FEM,FDM和FVM都是對空間的離散化,這些方法的主旨也就是上面說的方式。時間的離散化主要可以採用One step method Eule...

matlab特殊微分方程組怎麼求解繪圖?

wsq function fx f t,y k 1.4 b 0.5 ka 10 ify 1 b G 1 elseG 1 y 1 b 1 b 2 0.5 endfx zeros 2 1 fx 1 k G ka 1 y 2 fx 2 y 2 y 1 k y 2 G ka 1 y 2 endclear c...

常微分方程怎麼學會?

Developer 抽象是因為你還不夠熟悉和明白。舉個例子來說,在初中時總覺得立體幾何很抽象,不易想像。但上了大學再看,在容易和簡單不過。那是經過了高中的,對大腦神經元反覆輸入訓練的結果。因此抽象往往代表大腦對於知識的訓練度不夠。所以如果真想弄懂,建議你反覆看,反覆訓練思考。要有做持久戰的心理準備。...