【问题标题】:MATLAB: symbolic integral of symfunMATLAB:symfun 的符号积分
【发布时间】:2025-12-13 18:10:01
【问题描述】:

我希望随着时间的推移执行符号整合;代码如下。

syms x1 u1 t
x1 = symfun(sym('x1(t)'), [t]);
x1dot = p1 + p4*p8 - p13*x1;
int(x1dot,t)

答案应该是:

e^(-p13*t)*x1(0)+(p1 + p4*p8)/(-p13)*[1-e^(-p13*t)]

我得到的是:

Warning: Explicit integral could not be found. 

ans(t) =

int(p1 - p13*x1(t) + p4*p8*u1(t), t)

在我看来,它不承认x1dotx1 的派生词。我该如何解决这个问题?

【问题讨论】:

  • p1p4p8p13 是什么?编辑您的问题并定义这些。根据您的错误,看起来u1 也是symfun。显示您的实际代码和实际的完整错误消息。此外,您的前两行代码可以简单地写成syms x1(t) u1(没有理由显式调用symfun)。

标签: matlab symbolic-math integral


【解决方案1】:

您要做的不是严格意义上的集成,即从已知函数 f(t) 推导出函数 F(t) 使得 F 的导数是 f。原始函数并不为人所知,因为它依赖于自身(无论这种关系在人类看来多么微不足道,您都需要将其反转)。

它更像是求解一个微分方程for which dsolve is probably the way to go。 MATLAB 无法猜测x1dotx1 的导数。我想你可以声明x1dot=diff(x1),但为什么不在需要的地方直接使用diff(x1)

【讨论】:

  • 是的。我认为问题在于x(t),例如,Matlab 将其称为任意或抽象符号函数(没有特定定义的函数)。由于上述原因,即使像int(x(t),t) 这样简单的问题也无法“解决”,而必须以整数形式保留。 Matlab 无法猜测 x(t) 如何依赖于 t