符号表达式的最大数值化简

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))