我有这个问题需要解决:
考虑具有
给出的动态的系统xdot=x^3-7x^2+7x+15
其中x是位置,xdot
是速度。
如何生成MATLAB代码以绘制该系统的流程图xdot
与x
,并确定三个平衡点。我的解决方案应该是一个名为“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的新手,任何帮助都会很棒。
答案 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]
结果如下所示:
编辑:替代
您还可以使用匿名函数按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