我有来自我测量的两个点的数据,我有来自我计算的两个点的数据。我试图最小化这些数据之间的差异。例如
最小化点 1(测量)和点 1(计算)之间的差异。最小化点 2(测量)和点 2(计算)之间的差异。
点 1(计算)和点 2(计算)的值连接为二次分布的一部分:a*x^2+b*x+c。我只想更改“a”参数。
因此,我试图通过仅更改一个参数来最小化第 1 点和第 2 点的差异。
我将如何使用 python 做到这一点?我正在考虑使用 scipy,什么是合适的优化器?
我有来自我测量的两个点的数据,我有来自我计算的两个点的数据。我试图最小化这些数据之间的差异。例如
最小化点 1(测量)和点 1(计算)之间的差异。最小化点 2(测量)和点 2(计算)之间的差异。
点 1(计算)和点 2(计算)的值连接为二次分布的一部分:a*x^2+b*x+c。我只想更改“a”参数。
因此,我试图通过仅更改一个参数来最小化第 1 点和第 2 点的差异。
我将如何使用 python 做到这一点?我正在考虑使用 scipy,什么是合适的优化器?
scipy.optimize
有一些很好的方法,例如fsolve
,root
和minimize
. 阅读文档以了解它们是如何工作的,但这里有一个简短的示例来查找线性函数的根:
import scipy
from scipy.optimize import fsolve
def function_to_find_root_of(x, slope, yintercept):
''' x is a list of all the variables you need to minimize
the other variables will be passed in as constants '''
return slope*x + yintercept
m = 4
b = 7
print fsolve(function_to_find_root_of, x0=[10], args=(m, b), xtol=1e-10)
#prints [-1.75], which is the root of y=4x+7