fsolve和solve / vpasolve之间的差异

时间:2015-10-17 14:51:49

标签: matlab symbolic-math

我必须在MATLAB中用2个未知数求解2个方程的非线性系统。我曾经使用vpasolve来解决系统,但有人告诉我这种方法效率不高,我不应该滥用MATLAB中的符号编程,而应该使用fsolve代替。每次这都适用吗?在精度和性能方面使用fsolvevpasolve有什么区别?

1 个答案:

答案 0 :(得分:3)

基本上,这是使用变量精度算法(vpa)与浮点算术的问题。浮点运算使用常量精度,最常见的类型是cbit支持的64位双精度,因此可以快速执行。如果您需要比double提供更高的精度,则可以切换到更高的位长,但这需要您知道所需的精度。 vpa允许你反过来这样做。使用digits指定结果的精度,符号工具箱将以足够的精度执行所有中间步骤。

fzero产生重大错误的示例:

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