我想知道当我使用scipy.optimize.fsolve
时,方程组中每个解的误差(或不确定性)。例如(来自文档):
import numpy as np
from scipy.optimize import fsolve
def func(x):
return [x[0] * np.cos(x[1]) - 4,
x[1] * x[0] - x[1] - 5]
root, infodict, ier, msg = fsolve(func, [1, 1], full_outupt=1)
我想知道root[0]
和root[1]
的精度,而不是方法有多好(即r
的值)。
1条答案
按热度按时间nwnhqdif1#
在这种情况下,根据您如何解释“精度”,您可能需要调整答案(平方而不是绝对值以获得均方误差等)
由计算的解和精确解之间的差异引起的绝对误差由下式定义:
因为你期望在最优情况下结果为0,
如果你想知道
x_true
和root
之间的区别:你通常不能期望知道这个,否则你已经知道答案了,不必使用迭代算法来近似解。您只能使用fsolve(xtol=...)
限制可接受的错误。这就是算法与代数求解方程的本质,或者我错过了这里的重点?
如果你想用代数方法求解,可以看看
SymPy
和它的solver。