0

我必须解决以下系统:

X'(t) = -D(t)x(t)+μ(s(t), p(t))x(t);
S'(t) = D(t)(s(t)^in - s(t)) - Yxsμ(s(t), p(t))x(t)
p'(t) = -D(t)p(t)+(aμ(s(t), p(t))+b)x(t)

在哪里

μ(s(t), p(t)) = Μmax ((1 - (p(t)/pm))s(t)) / (km+s(t)+(s(t) ^ 2)/ki)

其中 Yxs、a、b、Mmax、Pm、km、ki 是常数变量,那么我必须对系统进行线性化并找到该系统的平衡点。有什么建议如何用 Matlab 或 Mathematica 来做吗?

4

1 回答 1

0

Matlab 可以帮助您完成一些步骤,但您可能需要自己写下一些方程式。从一个简单的旁注开始:Matlabs ODE45 函数允许模拟 dx/dt = f(x,u) 形式的任何函数,无论它们可能变成多么非线性或时间变量。

要对这样的系统进行线性化,您需要导出一个雅可比矩阵并替换该矩阵中的线性化点。这个线性化点是所有状态导数都等于 0 的任何点,它不需要是平衡点。然而,希望有一个平衡点,因为这意味着线性化点是一个稳定的平衡点。所以在 MATLAB 中:

  1. 为所有状态和输入创建符号变量(所以 x(t)、s(t) 和 p(t))
  2. 创建符号状态方程 dx/dt = f(x,u) 和输出方程 y = g(x,u)
  3. 使用“jacobian”函数导出符号状态空间矩阵 A、B、C、D
  4. 使用“subs”替换这些符号状态空间矩阵中的线性化点
  5. 使用 eval(symbolic matrix) 检索数值矩阵。

根据非线性复杂性和选择的线性化点,线性化系统可能仅在一个非常紧凑的区域的实际系统可接受的范围内,因此请注意这一点。

于 2020-07-20T14:09:52.800 回答