2017-01-11 154 views
0

我有如下方程組的MATLAB:解決非線性二階常微分方程的系統與MATLAB

enter image description here

是否有可能利用MATLAB的ODE45來解決這個問題?我知道我需要將二階方程轉換爲兩個一階方程,但是我的困惑來自這個術語,它是的衍生物的產物,theta

P.S.貝塔僅僅是一個恆定

我已定義的方程組作爲函數爲:

function dy = pend(t,y) 
beta = 1; 
dy(1) = y(2); 
dy(2) = -1/(1+y(3))*sin(y(1))-2/(1+y(3))*y(2)*y(4); 
dy(3) = y(4); 
dy(4) = (1+y(3))*y(2)*y(2)+cos(y(1))-1-beta^2*y(3); 
y=y'; 
end 

考慮Y(1)是THETA,Y(2)是衍生物theta的,Y(3)其中y(4)是其時間衍生物。

然後我解決它使用

[t,y] = ode45(@pend,[0 20],[pi/4 ; 0 ; 0 ; 0]); 

回答

1

是的,它應該可以使用ode45解決。

theta = x1 
s  = x2 
thetadot = x3 
sdot  = x4 

然後,你將有如下的方程組:

x1dot = x3 
x2dot = x4 
x3dot + sin(x1)/(1 + x2) + 2/(1+x2).x4.x3 = 0 
x4dot - (1 + x2).(x3)^2 = cos(x1)-1-beta^2*x2 

現在給這些方程組的ode45x1x2,和x4初始值。您需要適當地重寫3 rd和4 th等式。

EDIT1:

你已經寫方程組了。所以,現在使用

y0 = [pi/4; 0; 0; 0]; 
tspan = [0 20]; 
[t,y] = ode45(pend, tspan, y0); 

EDIT2:

function dy = pend(t,y) 

    beta = 1; 

    dy = [y(2); 
      -1/(1 + y(3))*sin(y(1)) - 2/(1 + y(3))*y(2)*y(4); 
      y(4); 
      (1 + y(3))*y(2)*y(2) + cos(y(1)) - 1 - beta^2*y(3)]; 
end 

這應該爲你工作。