微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为特定输入猜测存储 mpmath.findroot 的错误/残差?

如何解决如何为特定输入猜测存储 mpmath.findroot 的错误/残差?

我们有一组特定的方程,其解高度依赖于输入猜测。如果我们使用verbose given in the docs,它会显示大量额外信息。我们只想要错误,或者准确地说是 RESIDUE。我们如何获得那个获得那个?

例如,考虑以下代码片段:

import mpmath as mp
def f(x):
  return [#some function of x]
y = mp.findroot(f,x0 = [1 + 1j])
print(y)

如果我们运行代码,我们会得到以下错误: 无法在给定容差内找到根。 (0.037331322115722662107 > 2.16840434497100886801e-19) 尝试另一个起点或调整参数。(与上述代码不同,实际代码有更多变量)

现在,我们可以通过设置参数 verify = False 来消除这个警告,如给定的 in the docs

在这种情况下,我们确实得到了输出值,但这不是准确的输出,并且有一些与之相关的错误/残留。

现在,如果我们要建立一个循环并输入各种起始猜测 x0,则可以得到相应 y 的数组作为输出。然而,我们是否也可以得到每个 y 对应的 mp.findroot 求解器中提交的错误/残差?

例如,如果有类似的东西就好了

z = mp.findroot.error(f,x0)

因此对于每个猜测 x0,我们可以得到相应的 y 和相应的 z,这将允许我们从所有初始猜测中挑选最好的一个(即产生最小残差的那个)

>

有没有办法找到这个残差的显式值,并将其存储在一个变量中?

解决方法

我认为在 python 中不可能做到这一点,但是如果你想要同样的,你可以尝试在 Matlab 中使用函数句柄来做到这一点。

fun = @(x) exp(-exp(-x)) - x; % function
x0 = [0 1]; % initial interval
options = optimset('Display','final'); % show final answer
[x fval exitflag output] = fzero(fun,x0,options)

这里 x 是值,fval 是值中的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。