[英]error solving two coupled second order differential equations in matlab
我正在嘗試在matlab上解決以下微分方程。 (它們是從楊-米爾斯-希格斯·拉格朗日算式獲得的,用於霍夫多利科夫單極安薩茲方程)。 這是我的功能文件。 我有兩個變量h和k以及它們的導數wrt到變量t。 我的x(1)= h,x(2)= k,x(3)= dh \\ dt,x(4)= dk \\ dt。 所有功能的初始值均為0。
function xprime = monopole( t,x )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
xprime(1)=x(3);
xprime(2)=x(4);
xprime(4)=(1/(t.^2)).*((x(2).^2)-1).*x(2) + 4.*(x(1).^2).*x(2);
xprime(3)=(2/(t.^2)).*(x(2).^2).*x(1)-(1-(x(1)).^2).*x(1)-(2/t).*x(3);
xprime=xprime(:);
end
現在,當我運行以下代碼>
> t0=0;
>> tf=10;
>> x0=[0 0 0 0];
>> [t,s]=ode45(@monopole,[t0,tf],x0);
>> plot(t,s(:,1));
我什么都沒收到。 出現圖形窗口,但不包含任何內容。 該方程應該具有解。 虛線是從1開始是k,從0開始是h所得到的曲線。
我怎么了
發生這種情況時,您應該做的第一件事就是查看t和s向量中的值。 在這種情況下,s(1,1)包含0,而s(:,2:end)均為NaN。 因此,情節上沒有任何內容。
關於為什么發生這種情況,有幾點想法
monopole
的定義正確嗎? 最后,為確保您真正了解如何使用ODE求解器,為什么不從一個非常簡單的ODE開始,在此您可以知道確切的答案(即諧波振盪器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.