我试图在matlab上解决以下微分方程。 (它们是从yang-mills-higgs lagrangian获得的关于蹄状polyakov单极子ansatz的方程式)。这是我的函数文件。我有两个变量h和k及其衍生物w.r.t到变量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。
我的错误是什么?
答案 0 :(得分:0)
当发生这种情况时,您应该做的第一件事就是查看t和s向量中的值。在这种情况下,s(1,1)包含0,s(:,2:end)都是NaN。因此,情节中没有任何内容。
至于为什么会这样,一些想法
monopole
的定义是否正确?最后,为了确保你真正理解如何使用ODE求解器,为什么不从一个非常简单的ODE开始,你知道确切的答案(即谐振子)。