我必须在MATLAB中求解一个包含2个未知数的非线性方程组。我曾经用vpasolve来解决系统问题,但是有人告诉我,这种方法不是很有效,我不应该在MATLAB中滥用符号编程,我应该使用fsolve。每次都是这样吗?使用fsolve和vpasolve在精度和性能方面有什么不同?
发布于 2015-10-17 16:51:58
基本上,这就是何时使用可变精度算法(vpa)和浮点算法的问题。浮点算法使用恒定的精度,最常见的类型是64位双倍,由cpu支持,因此可以快速执行。当您需要比double提供的更高的精度时,您可以切换到更高的位长,但这需要您知道所需的精度。vpa允许您以相反的方式执行此操作。使用digits,您可以指定结果的精度,符号工具箱将以足够的精度执行所有中间步骤。
一个fzero产生重大错误的例子:
f=@(x)log(log(log(exp(exp(exp(x+1))))))-exp(1)
vpasolve(f(sym('x')))
fsolve(f,0)https://stackoverflow.com/questions/33187917
复制相似问题