如何使用第一个订单代码解决二阶订单?

时间:2017-04-11 00:32:29

标签: matlab

我使用matlab解决了ODE一阶方程。等式是$$ y'= t ^ 2 $$。现在我想用相同的代码解决二阶微分方程。 y''(x)= -y,其中$ y(0)= 1 $和$ y'(x = 0)= 0 $。

如何更改以下代码,以便找到y的值?我试过的是,我把它变成了一阶微分方程,但我很困惑如何改变代码。

clc;                                               % Clears the screen
clear all;

h=0.2;                                             % step size
x = 0:h:1;                                         % Calculates upto y(3)
y = zeros(1,length(x)); 
y(1) = 1;                                          % initial condition
F_x = @(t) t.^2;                    % change the function as you desire

for i=1:(length(x)-1)                              % calculation loop
    k_1 = F_x(x(i));
    k_2 = F_x(x(i)+0.5*h);
    k_3 = F_x((x(i)+0.5*h));
    k_4 = F_x((x(i)+h));

    y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h;  % main equation
end

1 个答案:

答案 0 :(得分:0)

因此,您希望将第二个订单ODE拆分为2个第一个订单ODE。所以你的方程组是

y'= u

你'= -y

,其中

Y(0)= 1

U(0)= 0

因此,我们可以修改您的程序

Runga-Kutta

myclass myobject();
//and
myclass myobject;