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

这些是我想绘制的微分方程。如何绘制matlab中的非线性微分方程

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

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

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

现在我被困:(

你怎么能画出这个系统,无需解方程

+0

确定X,Y,T,并通过绘制相图Xÿ apomene

回答

3

首先定义要解决它需要一个函数,有两个参数的微分方程? - 当前时间t和当前位置x,并返回一个列向量。相反,x和y的,我们将使用x(1)x(2)

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

防守INE要解决在时间跨度和初始条件:

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

现在求解方程数值使用ode45

ode45(f, tspan, xinit) 

,导致该地块:

enter image description here

如果您想在时间点获取解决方案的值,那么只需要输入一些参数:

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

您可以通过执行

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

导致以下情节

enter image description here

+0

Yoy谢谢。但是现在,我怎样才能得到x(1)与x(2)的图?不过,非常感谢帮助我。 –

+0

@ShawnSihyunJeon我编辑,告诉你如何绘制。 –

+0

很酷。非常感谢! –