fläche einer hysteresekurve mit python integrieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
carstello84
User
Beiträge: 4
Registriert: Mittwoch 5. Dezember 2012, 20:17

moin, ich habe eine spannungs-dehnungskurve mit dem folgenden text in phyton dargestellt. jetzt möchte ich die fläche der hystereseschleife integrieren, kann mir da jemand helfen, ich weiss nicht, wie ich die befehle für die integration formulieren soll!
die formel für die integration lautet:

Integral(von Dmin nach Dmax)S(t)dD

Code: Alles auswählen

#---------------------------------------------------
from scipy import *
from scipy import integrate
import numpy
import math
from scipy.integrate import odeint
from scipy.integrate import quad
from scipy.interpolate import interp1d as interp
Temp_t=[0.0,27.125*60,37.125*60,57.125*60,67.125*60,87.125*60]
Temp=[490.15,273.15,273.15,353.15,353.15,273.15]
T=interp(Temp_t,Temp,bounds_error=False)
alfa=24.5E-6
T_ref=292.15
C=[3.2E4,0.037,5.1,6524.7]
E=52600
def dSdt(S,t):
    dTdt=(T(t+1.0E-2)-T(t))/1.0E-2
    dEpsThdt=alfa*dTdt
    dEpsKrdt=sign(S)*C[0]*sinh(C[1]*abs(S))**C[2]*exp(-C[3]/T(t))
    return -E*dEpsKrdt-E*dEpsThdt
S0,t=0.0,arange(0.0,87.125*60,1.0)

S=odeint(dSdt,S0,t)  #S=Spannung

"""def dDdt(D,t):
    dTdt=(T(t+1.0E-2)-T(t))/1.0E-2
    dEpsThdt=alfa*dTdt
    return -dEpsThdt
D0=0.0
D=odeint(dDdt,D0,t)
"""

D = -alfa*(T(t)-T_ref)   #D=Dehnung


import pylab
pylab.plot(D,S,'r-')
#pylab.ylim([-30.,30.])
pylab.xlabel('Dehnung')
pylab.ylabel('Spannung[MPa]')
pylab.savefig('ode.pdf')
pylab.show()
#-----------------------------------------------Ende
vielen dank im vorraus
Zuletzt geändert von Anonymous am Samstag 8. Dezember 2012, 20:27, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
schaeffkoch
User
Beiträge: 38
Registriert: Dienstag 21. August 2012, 10:59

hallo,

das scheint eher ein math. problem zu sein. vielleicht ist das kurvenintegral die lösung? parametrierung mit t.
carstello84
User
Beiträge: 4
Registriert: Mittwoch 5. Dezember 2012, 20:17

na ich kriege nicht das integral formuliert, bekomme immer fehlermeldungen
ich habe es mit dem befehl quad probiert, da man damit ja die fläche unter einer kurve berechnen kann , aber ich habs nicht hinbekommen!
schaeffkoch
User
Beiträge: 38
Registriert: Dienstag 21. August 2012, 10:59

nun denn, ich zweifel ob es math. so sinn macht

Code: Alles auswählen

d1=D.argmin()
d2=D.argmax()
integrate.trapz(S[d1:d2,0],t[d1:d2])
damit ist das integral angenähert. um die fläche zu brechnen muss zuerst noch der betrag von S gebildet werden.
Antworten