Matlab 2015a和heavyiside()

时间:2015-03-27 11:56:16

标签: matlab symbolic-math

我查看过Matlab R2015a更改日志,但似乎无法找到任何信息。 repeatiside()函数是否已更改,此类积分会导致以下答案:

>> int(heaviside(t),t)

ans =

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

这与您在R2014a中得到的答案不同。这也影响使用重质()的ODE的答案。我不怀疑答案是否正确;它在我的脑海中比R2014a的结果更复杂:

>> int(heaviside(t),t)

ans =

t*heaviside(t)

谢谢!

1 个答案:

答案 0 :(得分:2)

对于复值输入,两种形式是不同的。此外,sym/sign功能是对MuPAD的sign的直接调用,而sym/heaviside并非直接基于MuPAD的heaviside,而是操作并调用较低级别的未记录HeavisideAtOrigin函数(在命令窗口中键入edit heaviside以查看代码)。

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

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

返回预期的t*heaviside(t)

我不知道为什么会发生此更改,但我猜这可能是因为heaviside没有数字浮点版本,而{{1} }。这可能有助于在内部和不熟悉Heaviside功能的用户之间来回转换为符号数学。