首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有平衡点的Matlab非线性动力学。

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

Stack Overflow用户
提问于 2014-10-15 05:47:38
回答 1查看 2.3K关注 0票数 0

我有一个问题要解决:

考虑一个系统的动力学给出。

代码语言:javascript
复制
xdot=x^3-7x^2+7x+15

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

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

代码语言:javascript
复制
x=?
xdot=?
eq_points=?

我试过这个:

代码语言:javascript
复制
xdot=@(x)(x^3-7*x^2+7*x+15)

然后

代码语言:javascript
复制
fplot(xdot,[-1000 1000])

我看到了情节,但我如何回答这三个问题:

代码语言:javascript
复制
x=?
xdot=?
eq_points=?

请让我在Matlab新手,任何帮助都将是伟大的。

EN

回答 1

Stack Overflow用户

发布于 2014-10-15 06:45:12

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

代码语言:javascript
复制
% 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]

结果如下:

编辑:备选方案

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26375306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档