我是MATLAB的新手,我正在尝试使用Runge-Kutta算法解决Friedmann方程式。
如果你不知道,弗里德曼方程有以下形式:
,其中曲率k
由值-1, 0 or 1
给出。
此外,压力p
的状态方程式由下式给出:
压力的状态方程
所以,我有Runge-Kutta算法:
function [t,x,y] =rk_2_1(f,g,t0,tf,x0,y0,n)
h=(tf-t0)/n;
t=t0:h:tf;
x=zeros(n+1,1); %reserva memoria para n+1 element(i)os del vect(i)or x(i)
y=zeros(n+1,1);
x(1)=x0; y(1)=y0;
for i=1:n
k1=h*f(t(i),x(i),y(i));
l1=h*g(t(i),x(i),y(i));
k2=h*f(t(i)+h/2,x(i)+k1/2,y(i)+l1/2);
l2=h*g(t(i)+h/2,x(i)+k1/2,y(i)+l1/2);
k3=h*f(t(i)+h/2,x(i)+k2/2,y(i)+l2/2);
l3=h*g(t(i)+h/2,x(i)+k2/2,y(i)+l2/2);
k4=h*f(t(i)+h,x(i)+k3,y(i)+l3);
l4=h*g(t(i)+h,x(i)+k3,y(i)+l3);
x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6;
y(i+1)=y(i)+(l1+2*l2+2*l3+l4)/6;
end
end
,但我有三个问题:
\rho
。g=@(t,x,y)
,因为我有一个关于时间的衍生物。k=sqrt(-1)
会发生什么?因为我需要这个结果符号,但我想要数字的整个结果。 很抱歉,如果我的问题是基本的,但我不知道该怎么做,我需要一些建议或帮助。
非常感谢你:)