2015-02-05 20 views
5

È possibile? Ho un equazione di base:È possibile eseguire un'analisi della sensibilità dei parametri usando python?

Q = (pi*(Ta-Ts))/(((1/ha*Do))+(1/(2*k))*math.log(Do/Di)) * L 

where; 
ha = 8.14 
k = 0.0026 
Do = 0.2 
Di = 0.003175 
L = 0.25 
F = 0.0704 
Ta = 293 
Ts = 113 
pi = 3.14159265 

voglio vedere come alcune delle variabili influenzano il risultato finale (e costruire una tabella di sensibilità variabile). Ho già gestito questo in un formato grafico, ma vorrei alcune statistiche descrittive.

Ad esempio, desidero avere Do (diametro esterno) come intervallo np.arange (0,1,2,100) e mantenere costanti le altre variabili.

ho il seguente codice per la creazione di alcuni appezzamenti di questo:

def enthalpy_mod1(ambient_temp, LNG_temp, Flow): 

    ha = 8.14 
    k = 0.0026 
    Do = 0.2 
    Di = 0.003175 
    L = 0.25 
    F = Flow 
    Ta = ambient_temp 
    Ts = LNG_temp 
    pi = 3.14159265 
    Q = (pi*(Ta-Ts))/(((1/ha*Do))+(1/(2*k))*math.log(Do/Di)) * L 

    e = (Q*3600)/F 

    results.append(e) # append the result to the empty list 
    df['Enthalpy Result']= e 
    plt.plot(Flow, e) 
    plt.rcParams.update({'font.size': 12}) 
    plt.annotate('Flow rate effects', xy =(0.1,14000)) 
    plt.show() 
    print df 

print Flow_mod(df['Temp'], df['LNG'], df['Flow']) 

ambient_temp = [293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293] 
Flow = np.linspace(0.04, 0.2, 18) 
LNG_range = [113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113] 

results = [] 

e mettere i risultati in un dataframe .. e tracciando in questo modo.

InsulationThicknessEffects

risposta

8

L'analisi di sensitività è una metodologia di per sé e quindi dovrebbe essere indipendente dalla lingua (ovviamente si sa che, solo fare un punto) in modo si può solo implementare algoritmi di pitone da soli. MA come hai chiesto su Python, sì, la gente lo ha fatto. Dai un'occhiata a SALib, una libreria Python per l'esecuzione di analisi della sensibilità globale con una varietà di metodi diversi.

Il metodo da te descritto si sposta di un parametro alla volta. Questa è un'analisi di sensibilità locale e non ti darà informazioni sugli effetti di interazione tra le variabili, né sarai in grado di misurare gli effetti non lineari nel contesto. Dato che la tua equazione è abbastanza semplice, questo potrebbe non avere importanza, ma questo è molto importante in modelli più complessi.

Problemi correlati