Matlab 符号计算和任意精度计算

                     

贡献者: addis

预备知识 Matlab 的程序调试及其他功能

   Matlab 的符号计算需要符号计算工具箱,取决于你的证书类型,可能需要额外购买。另外需要提醒的是,虽然 Matlab 和 Python 都有符号计算功能,但在符号计算领域 Mathemtica 才更为主流,其默认界面也更适合符号计算。

1. 符号变量和符号表达式

符号替换

2. 变精度计算

   注意变精度计算功能往往和符号计算一同使用,但这两个功能从实现来看是完全不同的。变精度计算和双精度一样本质上还是数值浮点计算,计算过程存在数值误差。只不过我们可以规定每个变量的有效数字为任意多,而不是统一使用双精度类型的 15-16 位有效数字。

   Matlab 的变精度计算并不自带误差追踪功能,例如两个十分相近的数相减,返回的小数位中可能大部分都是错的。而 Mathematica 的做法是返回更少小数位,但保证最后一位是对的。

3. 特殊函数

   由于一些特殊函数若用双精度计算,往往在一些区间产生较大误差。所以 Matlab 决定只使用任意精度来计算。以复数域的 $\Gamma$ 函数 为例,若直接输入 gamma(1+1i) 则会出错,因为 Matlab 中非符号计算版本的 gamma 函数只支持 double 类型的实数输入。所以要调用符号计算工具箱提供的 gamma(),就输入一个 sym 类型的变量即可。例如 gamma(vpa(1+1i)) 返回 0.49801... - 0.15494...i,又例如 gamma(sym(1+1i)) 返回表达式 gamma(1 + 1i)。这是因为 vpa(1+1i) 是变精度浮点数,可以显示为小数,而 sym(1+1i) 不存在误差,不能显示为小数。当然,我们也可以用例如 vpa(gamma(sym(1+1i)), 50) 来求任意位有效数字。


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利