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 函数的用户来回转换为符号数学。
我查看了 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 函数的用户来回转换为符号数学。