我是 MATLAB 的新手,我正在尝试使用 Runge-Kutta 算法来解决弗里德曼方程。
如果你不知道,弗里德曼方程有以下形式:
,其中曲率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)
?因为我象征性地需要那个结果,但我想要整个结果的数字。
对不起,如果我的问题是基本的,但我不知道该怎么做,我需要一些建议或帮助。
非常感谢 :)