Как свести к минимуму мою функцию для определенного параметра, и поддерживать другие постоянными - PullRequest
1 голос
/ 17 апреля 2019

Итак, я пытаюсь вычислить значение параметра, бета, путем минимизации функции хи-квадрат.Для этого я использую функцию scipy.optimize.minimize ().Я не могу заставить код делать то, что я хочу.Есть ли способ сделать это?Я открыт для других способов решения проблемы.

Для некоторого фона переменные vr, rms и delta являются одномерными кортежами одинаковой длины, а zeff, H и beta являются параметрами.Я пытаюсь рассчитать оптимизированное значение бета.

def chisq(beta,vr, delta,rvs,rms,zeff,H):
    c = -(H/(1+zeff))*(beta/3)
    model = c*np.multiply(rms,delta)
    q = (vr-model)**2
    p = model**-1
    ratio = np.multiply(p,q)
    chisq = np.sum(ratio)
    return chisq

initial_guess = 0.47663662075855323
res = opt.minimize(chisq,initial_guess,args =     (beta,delta,rvs,rms,zeff,H)) 

Обычно я получаю сообщение об ошибке, в котором говорится, что размеры функции не соответствуют синтаксису функции minimal ().

1 Ответ

0 голосов
/ 17 апреля 2019

В вашем случае бета-версия является переменной оптимизации, поэтому вам не нужно передавать ее в качестве дополнительного аргумента функции chisq:

res = opt.minimize(chisq, x0=initial_guess, args=(vr, delta, rvs, rms, zeff, H)) 
...