Мне нужно создать функцию, которая оптимизирует параметр beta, сводя к минимуму ошибку хи-квадрат.
Моим уравнением будет ошибка = vg (r) + (бета / 3) * H / (1 + z) r дельта (r)
У меня есть данные для vg (r), delta (r) и самого r. H и z - известные параметры, и я могу предположить, что это бета, но я точно не знаю, как реализовать это в python.
Я новичок в Python и могу использовать некоторую помощь
Я пытался использовать функцию scipy.optimize.minimize, но не могу заставить ее работать.
import numpy as np
from scipy import optimize as opt
import math
#parameters
z = 1.05352
bias = 1.85
h = 0.676
Om = 0.31
Ol = 1.-Om
pi = math.pi
H = 1.1
#beta = 0.47663662075855323
# ^this is a guess, I need this parameter optimized
def veldif(vr, delta):
model = -beta/3*H/(1+z)**delta
d = np.power((vr-model),2)
quotient = np.divide(d ,model)
chisquare = np.sum(quotient)
return chisquare
result = opt.minimize(veldif,beta)
Ожидаемые результаты: оптимизированное бета-значение (скалярное значение)
фактические результаты: ошибка (похоже, ошибка при передаче значений через функцию «veldif», а также синтаксис функции «veldif».