具有平衡点的Matlab非线性动力学。

时间:2014-10-15 05:47:39

标签: matlab

我有这个问题需要解决:

考虑具有

给出的动态的系统
xdot=x^3-7x^2+7x+15

其中x是位置,xdot是速度。

如何生成MATLAB代码以绘制该系统的流程图xdotx,并确定三个平衡点。我的解决方案应该是一个名为“eq_points”的向量,其中x=eq_points(i)是一个平衡点。

x=?
xdot=?
eq_points=?

我试过这个:

xdot=@(x)(x^3-7*x^2+7*x+15)

然后

fplot(xdot,[-1000 1000])

我看到了情节,但我怎么能回答这三个问题:

x=?
xdot=?
eq_points=?

请问我是Matlab的新手,任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

这是一个简单的多项式。在这种情况下,平衡点是多项式的根。 Matlab中的多项式表示是通过创建系数的向量来完成的。

% xdot=x^3-7*x^2+7*x+15;
p = [1, -7, 7, 15]; % polynomial representation in Matlab

x = [-2:0.1:6]; % good xrange for visualization
figure
plot(x, polyval(p, x)) % evaluate polynomial p at x and plot
r = roots(p); % roots of polynomial (5, 3 and -1)

hold on;
plot(r, polyval(p, r), 'ro') % polyval(p, r) should be very close to [0, 0, 0]

结果如下所示:enter image description here

编辑:替代

您还可以使用匿名函数按fzero(xdot, x0)一次查找一个根目录,其中x0是迭代的起点。根据起点,您可以找到不同的根。作为例子

xdot=@(x)(x^3-7*x^2+7*x+15);

fzero(xdot, 0)

ans =

    -1

fzero(xdot, 2)

ans =

     3

fzero(xdot, 10)

ans =

    5.0000