私は 1 月に同様の質問をし、@Miłosz Wieczór が親切にも答えてくれました。現在、2 つのデータセット (および) に 2 つのパラメーター (fc
およびalpha
) を同時に適合させる必要があるため、似ているが異なる課題に直面しています。基本的に、データとの両方に最適なとの値を見つける必要があります。e_exp
iq_exp
fc
alpha
e_exp
iq_exp
import numpy as np
import math
from scipy.optimize import curve_fit, least_squares, minimize
f_exp = np.array([1, 1.6, 2.7, 4.4, 7.3, 12, 20, 32, 56, 88, 144, 250000])
e_exp = np.array([7.15, 7.30, 7.20, 7.25, 7.26, 7.28, 7.32, 7.25, 7.35, 7.34, 7.37, 11.55])
iq_exp = np.array([0.010, 0.009, 0.011, 0.011, 0.010, 0.012, 0.019, 0.027, 0.038, 0.044, 0.052, 0.005])
ezero = np.min(e_exp)
einf = np.max(e_exp)
ig_fc = 500
ig_alpha = 0.35
def CCRI(f_exp, fc, alpha):
x = np.log(f_exp/fc)
R = ezero + 1/2 * (einf - ezero) * (1 + np.sinh((1 - alpha) * x) / (np.cosh((1 - alpha) * x) + np.sin(1/2 * alpha * math.pi)))
I = 1/2 * (einf - ezero) * np.cos(alpha * math.pi / 2) / (np.cosh((1 - alpha) * x) + np.sin(alpha * math.pi / 2))
RI = np.sqrt(R ** 2 + I ** 2)
return RI
def CCiQ(f_exp, fc, alpha):
x = np.log(f_exp/fc)
R = ezero + 1/2 * (einf - ezero) * (1 + np.sinh((1 - alpha) * x) / (np.cosh((1 - alpha) * x) + np.sin(1/2 * alpha * math.pi)))
I = 1/2 * (einf - ezero) * np.cos(alpha * math.pi / 2) / (np.cosh((1 - alpha) * x) + np.sin(alpha * math.pi / 2))
iQ = I / R
return iQ
poptRI, pcovRI = curve_fit(CCRI, f_exp, e_exp, p0=(ig_fc, ig_alpha))
poptiQ, pcoviQ = curve_fit(CCiQ, f_exp, iq_exp, p0=(ig_fc, ig_alpha))
einf
、ezero
、およびf_exp
はすべて定数であり、最適化する必要がある変数はig_fc
およびig_alpha
であり、これig
は初期推測を表します。上記のコードでは、2 つの異なるfc
andalpha
値が得られます。これは、それらを個別に解決するためです。fc
ただし、とalpha
が普遍的であるように、それらを同時に解決する必要があります。
- と の普遍的なソリューションを提供するために、2 つの異なる関数を解決する方法はあり
fc
ますalpha
か?