Я использую scipy.odr
для анализа трех наборов данных, и я совершенно не знаю, как отладить эту конкретную проблему. Когда я запускаю это, он говорит мне, что моя функция *thin_lens1()*
принимает один позиционный аргумент, но эти два были заданы. Я перепробовал несколько перестановок, и до сих пор не понимаю, что сделал неправильно, поскольку единственный аргумент, который принимает *thin_lens1()*
, это p1
. Буду очень признателен за любую помощь, которую кто-то сможет оказать, так как я полностью застрял здесь.
import numpy as np
import matplotlib.pyplot as plt
import scipy
import scipy.odr, scipy.special, scipy.stats
#importing data & defining focus length constants
p1,q1,up1,uq1,p2,q2,up2,uq2,p3,q3,up3,uq3 =
np.loadtxt('lenses_data_processed.txt',
comments='#', unpack=True,
usecols = range(0,12))
f1 = 158.695
#defining thin lens equation
def thin_lens1(p1):
return (p1-f1)/(p1*f1)
#parameter guesses
p_guess = [1, 2]
#applying ODR
fit = scipy.odr.Model(thin_lens1)
mydata= odr.RealData(p1, q1, sx=up1, sy=uq1)
myodr = odr.ODR(mydata, fit, beta0 = p_guess, maxit=500)
myoutput = myodr.run()
myoutput.pprint()