# Mathias Magdowski # eMail: magdowski@t-online.de # Optimierung des Nabendynamo-Modells # 21.03.2007 # SciPy laden from scipy import * # Testfrequenzen fuer die Leerlaufspannung f_u=array([7.8, 11.5, 14.1, 17.5, 19.7, 24.6, 29.2, 36.4, 43.4, 49.3, 55.3, 59.7, 64.9, 72.2, 76.4, 91.7]) # gemessene Leerlaufspannung u_exact=array([4.50, 6.33, 7.71, 9.45, 10.51, 12.87, 15.00, 18.20, 21.29, 23.75, 26.24, 28.00, 30.20, 33.08, 34.70, 40.50]) # Testfrequenzen fuer den Kurzschlussstrom f_i=array([6.8056, 8.7500, 11.6667, 14.5833, 22.3611, 29.1667, 78.7500]) # gemessener Kurzschlussstrom i_exact=array([0.40, 0.48, 0.58, 0.62, 0.67, 0.68, 0.71]) # Spannungsquelle #U_q=lambda f : k_U*2*pi*f # berechnete Leerlaufspannung #u_modell=lambda k_U,L_i,R_Fe : k_U*2*pi*f_u/sqrt(1+(2*pi*f_u*L_i/R_Fe)**2); # berechneter Kurzschlussstrom #i_modell=lambda k_U,L_i,R_Fe,R_i : k_U*2*pi*f_i/sqrt((2*pi*f_i*L_i)**2+(R_i*R_Fe/(R_i+R_Fe))**2)*R_Fe/(R_i+R_Fe); # Fehler #f_u=lambda k_U,L_i,R_Fe : ((u_exact-u_modell(k_U,L_i,R_Fe))/u_exact)**2; #f_i=lambda k_U,L_i,R_Fe,R_i : ((i_exact-i_modell(k_U,L_i,R_Fe,R_i))/i_exact)**2; # Fehlersumme Spannung #summe_u=lambda k_U,L_i,R_Fe : sum(((u_exact-k_U*2*pi*f_u/sqrt(1+(2*pi*f_u*L_i/R_Fe)**2))/u_exact)**2); #summe_u=lambda x : sum(((u_exact-x[0]*2*pi*f_u/sqrt(1+(2*pi*f_u*x[1]/x[2])**2))/u_exact)**2); # Fehlersumme Strom #summe_i=lambda k_U,L_i,R_Fe,R_i : sum(((i_exact-(k_U*2*pi*f_i/sqrt((2*pi*f_i*L_i)**2+(R_i*R_Fe/(R_i+R_Fe))**2)*R_Fe/(R_i+R_Fe)))/i_exact)**2); #summe_i=lambda x : sum(((i_exact-(x[0]*2*pi*f_i/sqrt((2*pi*f_i*x[1])**2+(x[3]*x[2]/(x[3]+x[2]))**2)*x[2]/(x[3]+x[2])))/i_exact)**2); # gesamte Summe summe_ges=lambda x : sum(((u_exact-x[0]*2*pi*f_u/sqrt(1+(2*pi*f_u*x[1]/x[2])**2))/u_exact)**2) + sum(((i_exact-(x[0]*2*pi*f_i/sqrt((2*pi*f_i*x[1])**2+(x[3]*x[2]/(x[3]+x[2]))**2)*x[2]/(x[3]+x[2])))/i_exact)**2); # Startwerte fuer Modellparamter # Spannungsfaktor k_U k_U=0.075; # innere Induktivitaet; L_i=0.05; # Ersatzwiderstand fuer Ummagnetisierungsverluste R_Fe=30; # Innenwiderstand R_i=6; # Optimierung [k_U,L_i,R_Fe,R_i] = optimize.fmin(summe_ges,array([k_U,L_i,R_Fe,R_i])) #print U_q(f_u) #print u_modell(k_U,L_i,R_Fe) #print i_modell(k_U,L_i,R_Fe,R_i) #print f_u(k_U,L_i,R_Fe) #print f_i(k_U,L_i,R_Fe,R_i) #print summe_u(k_U,L_i,R_Fe) #print summe_u(array([k_U,L_i,R_Fe])) #print summe_i(k_U,L_i,R_Fe,R_i) #print summe_i(array([k_U,L_i,R_Fe,R_i])) #print summe_ges(array([k_U,L_i,R_Fe,R_i])) print "k_U=",k_U print "L_i=",L_i print "R_Fe=",R_Fe print "R_i=",R_i