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)
然而,像这样,这个系统没有明确的解决方案。
现在我被困住了:(
你怎么能在不解方程的情况下绘制这个系统?
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)
然而,像这样,这个系统没有明确的解决方案。
现在我被困住了:(
你怎么能在不解方程的情况下绘制这个系统?
首先定义要求解的微分方程。它需要是一个接受两个参数的函数——当前时间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);
您可以通过执行绘制相图x对y
plot(y(:,1), y(:,2)), xlabel('x'), ylabel('y'), grid
结果如下图