fsolve 和 solve/vpasolve 之间的区别

Differences between fsolve and solve/vpasolve

我必须在 MATLAB 中求解一个包含 2 个方程和 2 个未知数的非线性方程组。我曾经使用 vpasolve 来求解系统,但有人告诉我这种方法不是很有效,我不应该滥用 MATLAB 中的符号编程,我应该改用 fsolve。这是否每次都成立?使用 fsolvevpasolve 在精度和性能方面有什么区别?

基本上这就是何时使用可变精度算术 (vpa) 与浮点算术的问题。浮点运算使用常量精度,最常见的类型是 64bit double,你的 cpu 支持它,因此可以快速执行。当您需要比 double 更高的精度时,您可以切换到更高的位长度,但这需要您知道您需要哪种精度。 vpa 允许您以相反的方式执行此操作。使用 digits 指定结果的精度,符号工具箱将以足够的精度执行所有中间步骤。

fzero 产生重大错误的示例:

f=@(x)log(log(log(exp(exp(exp(x+1))))))-exp(1)
vpasolve(f(sym('x')))
fsolve(f,0)