簡體   English   中英

在MATLAB中求解兩個耦合的二階微分方程的誤差

[英]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。 因此,情節上沒有任何內容。

關於為什么發生這種情況,有幾點想法

  1. 您確定monopole的定義正確嗎?
  2. 為什么要顯示一個圖,其中k(0)= 1,但將k = 0的初始條件傳遞給它?
  3. 為什么要使用h ^ prime(0)= 0的初始條件,但在圖中看起來h ^ prime(0)的斜率非零?
  4. 肯定帶有1./t^2的術語看起來很可疑; 試想一下,在第一步中,您將用0除以0,即NaN。 也許ode求解器對此很費勁,而另一個求解器會更好(請注意:我對ODE求解器的經驗很少,因此請帶大量鹽)。

最后,為確保您真正了解如何使用ODE求解器,為什么不從一個非常簡單的ODE開始,在此您可以知道確切的答案(即諧波振盪器)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM