在Matlab中求解二阶ODE

时间:2016-05-23 19:43:32

标签: matlab ode differential-equations

我试图在Matlab中对方程y“+ 4y = 0,初始条件y(0)= 1和y'(0)= 0进行建模。下面的代码片段显示了位置的工作近似值作为上述ODE的时间函数:

clear      
syms y(t)

%Differential Equation Conversion
P = odeToVectorField(diff(y, 2) == -4*y);
M = matlabFunction(P,'vars',{'t','Y'});

%Position Approximation
pos_solution = ode45(M,[0 20],[1 0]);
x = linspace(0,20,1000);
y = deval(pos_solution,x,1);

%Plot of Position as a function of time
figure(3)
plot(x,y,'b');

我试图将这些数据生成并找到系统的速度作为时间的函数,但不知道如何这样做。任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

https://www.assetstore.unity3d.com/en/#!/content/56673的可选第三个参数指定要返回的解决方案的索引。索引对应于状态向量(和初始条件)以及ODE集成函数(M)的输出。在系统的特定情况下,索引1对应于速度的位置和索引2。如果你想要输出(和绘图)两者,你可以省略第三个参数:

...
y = deval(pos_solution,x);

% Plot of Position as a function of time
figure(3)
plot(x,y(1,:),'b',x,y(2,:),'r');
legend('Position','Velocity');