1
Dx=y
Dy=-k*y-x^3+9.8*cos(t)
inits=('x(0)=0,y(0)=0')

这些是我想要绘制的微分方程。

首先,我尝试求解微分方程,然后绘制图形。

Dsolve('Dx=y','Dy=-k*y-x^3+9.8*cos(t)', inits)

然而,像这样,这个系统没有明确的解决方案。

现在我被困住了:(

你怎么能在不解方程的情况下绘制这个系统?

4

1 回答 1

3

首先定义要求解的微分方程。它需要是一个接受两个参数的函数——当前时间t和当前位置x,并返回一个列向量。x(1)我们将使用and而不是 x 和 y x(2)

k = 1;
f = @(t,x) [x(2); -k * x(2) - x(1)^3 + 9.8 * cos(t)];

定义要解决的时间跨度和初始条件:

tspan = [0, 10];
xinit = [0, 0];

现在使用 数值求解方程ode45

ode45(f, tspan, xinit)

这导致了这个情节:

在此处输入图像描述

如果您想在某个时间点获取解决方案的值,则只需询问一些输出参数:

[t, y] = ode45(f, tspan, xinit);

您可以通过执行绘制相图xy

plot(y(:,1), y(:,2)), xlabel('x'), ylabel('y'), grid

结果如下图

在此处输入图像描述

于 2013-04-15T23:01:07.670 回答