我查看过Matlab R2015a更改日志,但似乎无法找到任何信息。 repeatiside()函数是否已更改,此类积分会导致以下答案:
>> int(heaviside(t),t)
ans =
(t*(sign(t) + 1))/2
这与您在R2014a中得到的答案不同。这也影响使用重质()的ODE的答案。我不怀疑答案是否正确;它在我的脑海中比R2014a的结果更复杂:
>> int(heaviside(t),t)
ans =
t*heaviside(t)
谢谢!
答案 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功能的用户之间来回转换为符号数学。