0

関数を定義するためのこのコードがあります

def f(Frequency,Omegahot,Beta,Omegacold,Thot,Tcold):
    C=300000000
    k=1.38E-23
    h=6.062E-34
    return(Omegahot*numpy.power(Frequency,Beta))*((2*h*numpy.power(Frequency,3)/(C**2)))*(1/(numpy.exp(h*Frequency/(k*Thot))-1)) + (Omegacold*numpy.power(Frequency,Beta)*((2*h*numpy.power(Frequency,3)/(C**2)))*(1/(numpy.exp(h*Frequency/(k*Tcold))-1))

xdata=[1,2,3,4,5]   
popt, pcov = curve_fit(f,xdata,fluxs,p0=None,)
print popt

しかし、行 xdata=[1,2,3,4,5] で構文エラーが発生します。

4

2 に答える 2

0

読みやすさが重要です。関数をより読みやすく書き直す方法の 1 つを次に示します。複数回出現する式を事前に計算することにより、必要な括弧のレベルが少なくなり、計算が少し速く完了します。

import numpy as np
def f(Frequency, Omegahot, Beta, Omegacold, Thot, Tcold, exp=np.exp, power=np.power):
    C = 300000000
    k = 1.38E-23
    h = 6.062E-34
    fb = power(Frequency, Beta)
    f3 = power(Frequency, 3)
    C2 = C ** 2
    C3 = fb * 2 * h * f3 / C2
    hF = h * Frequency
    return ((Omegahot * C3 / (exp(hF / (k * Thot)) - 1))
            + (Omegacold * C3 / (exp(hF / (k * Tcold)) - 1))))
于 2013-03-19T17:59:50.863 に答える