符号表达式的最大数值化简
Maximal numerical simplification of a symbolic expression
当我在 Mathematica 中输入这段代码时
t^3 + 6898033663572324079/6917529027641081856 // N
将表达式简化为0.997182 + t^3
。
如何在 MATLAB 中实现相同的行为?请注意,t
是一个符号变量。
使用vpa
:
syms t
outExact = t^3 + 6898033663572324079/6917529027641081856
outFloat = vpa(outExact)
outExact =
t^3 + 8981814666109797/9007199254740992
outFloat =
t^3 + 0.99718174452310093247575650821091
可选,您可以设置位数,例如digits(5)
得到:
outFloat =
t^3 + 0.99718
或outFloat = vpa(outExact,5)
效果相同
科学计数法并不简单,这里有一个非通用解决方案作为起点:
f(t) = t^3 + 6898033663572324079/6917529027641081856
remain = f(0)
f(t) = f(t) - remain
sprintf('%s + %1.3e',char(f(t)),double(remain))
当我在 Mathematica 中输入这段代码时
t^3 + 6898033663572324079/6917529027641081856 // N
将表达式简化为0.997182 + t^3
。
如何在 MATLAB 中实现相同的行为?请注意,t
是一个符号变量。
使用vpa
:
syms t
outExact = t^3 + 6898033663572324079/6917529027641081856
outFloat = vpa(outExact)
outExact =
t^3 + 8981814666109797/9007199254740992
outFloat =
t^3 + 0.99718174452310093247575650821091
可选,您可以设置位数,例如digits(5)
得到:
outFloat =
t^3 + 0.99718
或outFloat = vpa(outExact,5)
效果相同
科学计数法并不简单,这里有一个非通用解决方案作为起点:
f(t) = t^3 + 6898033663572324079/6917529027641081856
remain = f(0)
f(t) = f(t) - remain
sprintf('%s + %1.3e',char(f(t)),double(remain))