我有這樣的二階微分方程在Matlab解決其自身的價值:解決二階微分方程,Matlab-方程中的加速需求,以包括其他不同期限
(a + f(t))·(dx/dt)·(d²x/dt²) + g(t) + ((h(t) + i(t)·(d²x/dt² > b·(c-x)))·(dx/dt) + j(t))·(dx/dt)² + k(t)·(t > d) = 0
其中
a
,b
,c
,d
是已知常數f(t)
,g(t)
,h(t)
,i(t)
,依賴t
x
j(t)
,k(t)
是已知的功能是位置dx/dt
是速度d²x/dt²
是加速度
並注意兩個條件
- 如果引入
k(t)
是在方程中引入如果(t > d)
所以,這個問題可以用類似的結構在Matlab解決如下例:
[T,Y] = ode45(@(t,y) [y(2); 'the expression of the acceleration'], tspan, [x0 v0]);
其中
T
是時間向量,Y
是位置向量(第1列爲y(1)
)和速度(第2欄爲y(2)
)。ode45
是ODE求解器,但可以使用另一個求解器。tspan
,x0
,v0
是已知的。the expression of the acceleration
用於d²x/dt²
的表達,但這裏來的問題,因爲它是用於i(t)
,並在同一時間「外部」乘以(a + f(t))·(dx/dt)
的條件內。因此,加速度不能在MATLAB寫爲d²x/dt² = something
的一些問題,可以幫助:
一次
(d²x/dt² > b·(c-x))
和/或(t > d)
滿足的條件下,各期限i(t)
和/或k(t)
會被引入到tspan
的確定時間的末尾。爲條件
(d²x/dt² > b·(c-x))
,術語d²x/dt²
可以寫成速度的差,像y(2) - y(2)'
,如果y(2)'
是前瞬間的速度,通過在tspan
限定的步進時間劃分。但我不知道如何在訪問速度的前值的ODE
謝謝你在先進的解決!
你可以嘗試隱式求解器,如['ode15i'(https://uk.mathworks.com/help/matlab/ref/ode15i.html) – Steve
@Steve:和那會解決什麼? – Wrzlprmft
@Wrzlprmft這解決了這是一個隱式ODE,其中'x_tt:= d^2x/dt^2 *有效*隱式參數爲'H(x_tt-b(c * x))',其中'如果t> = 0,則H(t)是Heaviside階躍函數,H(t)= 1,如果t <0,則爲0。解決方案是存在還是有意義是另一個需要注意的問題。 – Steve