在Matlab中类似于Vpasolve的R数值方法

在Matlab中类似于Vpasolve的R数值方法,r,matlab,R,Matlab,我试图在R中求解一个数值方程,但希望得到一种与Matlab中的vpasolve类似的方法。我有一个非线性方程(涉及许多对数函数),当用uniroot在R中求解时,与在matlab中vpasolve给出的答案相比,它给出了完全不同的答案。首先,要注意一点:学习有一种比你习惯的方法做某事更好的方法通常会更有成效 编辑 我回到MATLAB,意识到“vpa”集合使用的是扩展精度。这对你来说是绝对必要的吗?如果没有,那么我下面的建议就足够了。 如果您确实需要扩展精度,那么也许Rmpfr::unirootR

我试图在R中求解一个数值方程,但希望得到一种与Matlab中的vpasolve类似的方法。我有一个非线性方程(涉及许多对数函数),当用uniroot在R中求解时,与在matlab中vpasolve给出的答案相比,它给出了完全不同的答案。

首先,要注意一点:学习有一种比你习惯的方法做某事更好的方法通常会更有成效

编辑 我回到MATLAB,意识到“vpa”集合使用的是扩展精度。这对你来说是绝对必要的吗?如果没有,那么我下面的建议就足够了。 如果您确实需要扩展精度,那么也许
Rmpfr::unirootR
函数就足够了。我想指出,由于所有这些解算器都在生成近似解(与解析解相反),因此使用扩展精度运算似乎有点毫无意义

接下来,您需要确定是
MATLAB::vpasolve
还是
uniroot
得到了正确的答案。或者,您可能只是收敛到一个根,而这个根不是您想要的根,在这种情况下,您需要阅读关于设置起始条件或搜索区域限制的内容

最后,除了
uniroot
,我建议您学习使用R软件包
BBsolve
nleqslv
rootsolve
,以及
ktsolve
(免责声明:我是
ktsolve
的所有者和维护者)。这些软件包非常灵活,可以为您的原始问题提供更好的解决方案。

这有帮助吗?或