Wolfram mathematica 当“方法”是默认的牛顿时,Mathematica的FindRoot的算法细节是什么?

Wolfram mathematica 当“方法”是默认的牛顿时,Mathematica的FindRoot的算法细节是什么?,wolfram-mathematica,arbitrary-precision,numerical-analysis,newtons-method,Wolfram Mathematica,Arbitrary Precision,Numerical Analysis,Newtons Method,在解决三变量非线性系统时,我尝试了不同的实现: 1 Mathematica;FindRoot,默认方法 2用中心差分法逼近雅可比矩阵的Matlab编程 <P>3 C++,利用中心有限差分近似雅可比 我发现Mathematica的求解精度最好,即使工作精度只是机器精度,而没有提供符号雅可比矩阵 然而,Mathematica在三者中工作最慢 < >我的问题在精度/精度和效率上都非常苛刻,在MATLAB或C+++< /P>中如何复制默认牛顿方法? 谢谢这个问题已经在这里得到了回答: 但是,它们的多精度

在解决三变量非线性系统时,我尝试了不同的实现:

1 Mathematica;FindRoot,默认方法

2用中心差分法逼近雅可比矩阵的Matlab编程

<P>3 C++,利用中心有限差分近似雅可比</P> 我发现Mathematica的求解精度最好,即使工作精度只是机器精度,而没有提供符号雅可比矩阵

然而,Mathematica在三者中工作最慢

< >我的问题在精度/精度和效率上都非常苛刻,在MATLAB或C+++< /P>中如何复制默认牛顿方法?
谢谢

这个问题已经在这里得到了回答:


但是,它们的多精度实现之间没有显著差异。

我怀疑您将难以编写一个性能优于Mathematica并在精度和准确性方面与Mathematica相匹配的代码。请记住,Mathematica的许多功能已经用C语言或C++语言编译了。您不会试图编写一个优于解释语言的编译代码(这是查看Mathematica的一种方式),而是尝试编写一个优于专家编写的编译代码的代码。我不是说你不能,只是说这对你来说很难;我是C++新手;虽然Mathematica和Matlab/C++产生的差异非常小,但对于我的问题来说,这种差异意味着完全不同的结论:对还是错。为了获得高精度的解决方案,我尝试了GMP/MPIR/MPFR/MPFR C++包装器/特征,我怀疑这种组合的多个精确库之间的接口是错误的,因为它们来自不同的开发人员。但是,除非我可以通过C++/Matlab实现复制Mathematica结果,否则我无法证明这一点……首先要注意,Mathematica将采用符号导数,如果可以的话,因此为了公平比较,请确保提供纯数值函数。接下来,您可以添加代码来监视函数求值,以尝试了解发生了什么。你应该把这个带到mathematica.stackexchange.com,但是如果没有一些示例代码,不要期望有太多帮助。我怀疑这是因为处理浮点数的不同方法,或者是舍入方法,或者是浮点数的表示;然而,我对Mathematica或多精度Matlab/C++一无所知。