Я пытаюсь преобразовать свою функцию, чтобы она зависела от независимой переменной, чтобы подогнать к ней кривую, чтобы определить наиболее подходящие параметры - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь подогнать кривую к своим данным, чтобы получить наиболее подходящие параметры. У меня есть функция, которая умножает определенные значения вместе, чтобы получить набор «значений y», но я не уверен, как превратить это в функцию, основанную на зависимой переменной, такой как x или λ.

import matplotlib.pyplot as plt
import numpy as np
import statistics as st

λ=np.linspace(0.4,2.280,37)
R=3

def ExtinctionMW(λ,E): #Equation 20, table 4 from Pei Paper
    #E=0.7 #E(B-V)
    Ext=(165/((((λ/0.047)**2)+((0.047/λ)**2))+90))+(14/((((λ/0.08)**6.5)+((0.08/λ)**6.5))+4))+ 
    (0.045/((((λ/0.22)**2)+((0.22/λ)**2))-1.95))+(0.002/((((λ/9.7)**2)+((9.7/λ)**2))-1.95))+ 
    (0.002/((((λ/18)**2)+((18/λ)**2))-1.8))+(0.012/(((λ/25)**2)+((25/λ)**2)))
    ζ1=10**(-0.4*E*Ext)
    return ζ1

def Flux(λ,a,β):
    #β=0.5
    Fem=(λ**β)
    return Fem

def fluxmodelMW(a,b,e):

    wl=[0.4,0.4685,0.510,0.552,
        0.552,0.580,0.622,0.650,0.691,
        0.691,0.720,0.755,0.780,0.818,
        0.818,0.850,0.889,0.922,
        0.960,1.000,1.040,1.090,1.120,
        1.150,1.200,1.250,1.300,1.350,
        1.500,1.550,1.630,1.700,1.760,
        2.000,2.100,2.175,2.280]

    noADC=[0.291,0.403,0.447,0.474,
           0.475,0.492,0.498,0.492,0.478,
           0.541,0.555,0.556,0.554,0.528,
           0.520,0.475,0.391,0.309,
           0.538,0.540,0.542,0.544,0.545,
           0.535,0.536,0.535,0.535,0.533,
           0.531,0.530,0.528,0.523,0.519,
           0.511,0.476,0.452,0.440]

    transmission=[]

    for n in range(len(noADC)):
        transmission.append(((Flux(wl[n]/R,a,b))*(ExtinctionMW(wl[n]/R,e))/R)*noADC[n])

    return np.array(transmission)
...