我正在做一个关于通过几个模型拟合星系中观测到的旋转速度(基于距离而变化)的项目
在我的代码中,我正在绘制一些观察到的数据与模型。该模型由一个公式组成,可通过2个固定参数进行操作:p0
和((v_obs - v_model)/error)^2
。基本上,我需要找到这两个固定参数的值,以最小化观察图和模型图之间的空间。我的目标是最小化Chi-Squared,即am
,然后绘制我的模型图。
我根据距离(r,也是一个数组)创建了一个积分数组和v_model(在我的代码中它的名字"函数")。所以通过这段代码,我得到了每个距离的v_model数组。 from scipy.optimize import minimize as opt
import numpy as np
def integrand(r,p0,r0):
return (p0 * r0**3)/((r+r0)*((r**2)+(r0**2)))*4*3.1415926535*r**2
integrals = []
for i in r:
integrals.append(quad(integrand, 0 ,i,args=(p0,r0)))
#function --> v_model
functions = []
for x in range (0,am):
k = integrals[x][0]
i = r[x]
functions.append(np.sqrt((4.302*10**(-6)*k)/i))
是测量量(在本例中为21)
def chisqfunc(p02,r02):
model = np.sqrt((4.302*10**(-6)*((p02 * r02**3)/((r+r02)*((r**2)+(r02**2)))*4*3.1415926535*r**2))/r)
chisq = numpy.sum(((v_obs-model)/errors)**2)
return chisq
x0 = np.array([p0,r0])
result = opt.minimize(chisqfunc,x0)
print (result)
assert result.success == True
由于每个数据点的错误都发生了变化,我也将其作为一个数组。 我有点迷失在哪里开始,但到目前为止我已经创建了这个,以最大限度地减少在线或在stackoverflow上的示例。我选择p0和r0的初始猜测。
'function' object has no attribute 'minimize'
执行此操作后,我收到错误:
tableView.indexPathForSelectedRow
我有两个主要问题:如何修复此错误以及如何最小化数据在数组中的时间?