1
我想模擬三個微分方程的系統。這是一個液滴模型,參數化爲弧長,s。ODE系統,具有微分初始條件的IVP
的公式爲:
DX/DS = COS(THETA)
DZ/DS = SIN(THETA)
(THETA)/ DS = 2 * B + C * Z-SIN(THETA)/ X
初始條件是x,z和theta在s = 0時都是0。爲了避免d(θ)/ ds上的奇異性,我還有條件:在s = 0,dθ/ ds = b。我已經寫了這個代碼:
[s,x]=ode23(@(s,x)drpivp(s,x,p),sspan,x0);
%where p contains two parameters and x0 contains initial angle theta, x, z values.
%droplet ODE function:
function drpivp = drpivp(s,x,p);
%x(1)=theta
%x(2)=x
%x(3)=z
%b is curvature at apex
%c is capillarity constant
b=p(1);
c=p(2);
drpivp=[2/p(1)+p(2)*x(3)-sin(x(1))/x(2); cos(x(1)); sin(x(1))];
這產生了一個螺旋出來的解決方案。它創造了許多,而不是創建一個液滴配置文件。當然,在這裏我沒有正確初始化方程,因爲我不確定如何在s = 0時使用θ的不同方程。
所以問題是:我如何包含d(theta)/ ds = b的初始條件,而不是在s = 0時通常的?這可能使用matlab中的內置解算器嗎?
謝謝。
一種簡單,有效的解決方案!沒有想到頌歌解答者會接受 - 不知道爲什麼我認爲這是開始。謝謝! (你能簡單地描述一下其他方法嗎?) – Rstallard
@Kud解決這個問題的另一種方法是將系統表達爲d2Theta/dt2,這意味着你將不得不擴大你的差分。 – Rasman