Matlab 2015a 和 heavside()

Matlab 2015a and heavside()

我查看了 Matlab R2015a 更改日志,但似乎找不到任何信息。 heaviside() 函数是否在以下答案中更改了此类积分结果:

>> int(heaviside(t),t)

ans =

(t*(sign(t) + 1))/2

这与您在 R2014a 中得到的答案不同。这也会影响使用 heaviside() 的 ODE 的答案。我不怀疑答案是正确的;在我看来,它比 returns:

的 R2014a 结果更复杂
>> int(heaviside(t),t)

ans =

t*heaviside(t)

谢谢!

对于复值输入,这两种形式是不同的。此外,sym/sign function is a direct call to MuPAD's sign, while sym/heaviside is not directly based on MuPAD's heaviside,但进行了一些操作并调用了较低级别的未记录的 HeavisideAtOrigin 函数(在您的命令 Window 中键入 edit heaviside 以查看代码)。

您的实际问题似乎是为什么带有 sign 的新版本在您未显示的其他代码中不起作用。一种解决方法是使用 rewrite 函数将 int 的输出转换回 Heaviside 函数的表达式:

syms t
H = int(heaviside(t),t)
rewrite(H, 'heaviside')

哪个 returns 是预期的 t*heaviside(t)

我不知道为什么要进行此更改,但我猜可能是因为 heaviside 没有数字浮点版本,而 sign 有。这可能有助于在内部和不熟悉 Heaviside 函数的用户来回转换为符号数学。