0

我是 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

,但我有三个问题:

  1. 我不知道如何将密度象征性地\rho放在我的功能上。
  2. 我不知道定义第二个函数g=@(t,x,y),因为我有一个关于时间的导数。
  3. 最后一个,会发生什么k=sqrt(-1)?因为我象征性地需要那个结果,但我想要整个结果的数字。

对不起,如果我的问题是基本的,但我不知道该怎么做,我需要一些建议或帮助。

非常感谢 :)

4

0 回答 0