Seite 1 von 1
emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 09:26
von telegraph
Hallo zusammen,
ich bin noch blutiger anfänger in Python und versuche eine emitterschaltung zu berechnung zu schreiben so weit kommen auch die richtigen ergebnisse aber sie werden na dem komma abgeschitten welchen befehl muss ich ihm geben das er mir das nach dem komma gibt
Code: Alles auswählen
#hallo das ist ein Program um einen Emitterschaltung zu berechnen
print ("Das ist ein Programm zur Berechnung einer Emitterschaltung")
Ic= float (input ("wie groß ist Ic" ))
B = float (input (" wie groß ist B"))
Ube = float (input ("Wie groß ist Ube in V"))
Ub = float (input (" wie groß ist Ub in V"))
Uce = Ube/2
Ib = Ic/B
Iq = Ib*10
Rc = (Ube-Uce)/Ic
R1 = (Ub-Ube)/(Iq+Ib)
R2 = Ub/Iq
Rvw = (Ub-Ube)/Ib
print ("Deine werte Ib", Ib)
print ("Deine werte iq",Iq)
print ("Deine werte Rc", Rc)
print ("Deine werte R1", R1)
print ("Deine werte R2", R2)
print ("Deine werte Rvw", Rvw)
Ergebniss
>>>
Das ist ein Programm zur Berechnung einer Emitterschaltung
wie groß ist B220
Wie groß ist Ube in V12
wie groß ist Ub in V0.6
Deine werte Ib 0.00909090909090909
Deine werte iq 0.09090909090909091
Deine werte Rc 3.0
Deine werte R1 -114.0 #warum - ???
Deine werte R2 6.6
Deine werte Rvw -1254.0 #warum - ???
>>>
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 09:56
von BlackJack
Schauen wir uns mal die ganzen Zwischenergebnisse an die zum Beispiel zu `R1` führen:
Code: Alles auswählen
In [13]: R1
Out[13]: -114.0
In [14]: Ub
Out[14]: 0.6
In [15]: Ube
Out[15]: 12.0
In [16]: Iq
Out[16]: 0.09090909090909091
In [17]: Ib
Out[17]: 0.00909090909090909
In [18]: Ub-Ube
Out[18]: -11.4
In [19]: Iq+Ib
Out[19]: 0.1
In [20]: (Ub-Ube)/(Iq+Ib)
Out[20]: -114.0
Ich denke anhand der Zahlen wird nun klar wie das Ergebnis zustande kommt und wo der „überraschende” Teil liegt. Nämlich bei `Iq` wo die Ziffer 1 am Ende dafür sorgt, dass ``Iq + Ib`` nicht 0.0999999… ist, sondern 0.1. Die Erklärung ist der endliche Speicherplatz der für Gleitkommazahlen zur Verfügung steht. Wenn also irgendetwas mit einer Perdiode bei einer Division heraus kommt, wird das Ergebnis irgendwann nach einer gewissen Anzahl von Stellen abgeschnitten und das verfälscht dann natürlich Ergebnisse die mit so einem Zwischenergebnis weiterrechnen. Allgemein zum Thema Gleitkommazahlen im Rechner und der Frage „Why don’t my numbers add up?”:
http://floating-point-gui.de/
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 15:02
von telegraph
soweit so gut
Code: Alles auswählen
#hallo das ist ein Program um einen Emitterschaltung zu berechnen
print ("Das ist ein Programm zur Berechnung einer Emitterschaltung")
Ic= float (input ("wie groß ist Ic" ))
B = float (input (" wie groß ist B"))
Ube = float (input ("Wie groß ist Ube in V"))
Ub = float (input (" wie groß ist Ub in V"))
Uce = Ube/2
Ib = round (Ic/B , 5)
Iq = round (Ib*10 , 5)
Rc = round ((Ube-Uce)/Ic , 5)
R1 = round ((Ub-Ube)/(Iq+Ib) , 5)
R2 = round (Ub/Iq , 5)
Rvw = round ( (Ub-Ube)/Ib ,5)
print ("Deine werte Ib", Ib)
print ("Deine werte iq",Iq)
print ("Deine werte Rc", Rc)
print ("Deine werte R1", R1)
print ("Deine werte R2", R2)
print ("Deine werte Rvw", Rvw)
ergebniss
>>>
Das ist ein Programm zur Berechnung einer Emitterschaltung
wie groß ist Ic2
wie groß ist B220
Wie groß ist Ube in V12
wie groß ist Ub in V0.6
Deine werte Ib 0.00909
Deine werte iq 0.0909
Deine werte Rc 3.0
Deine werte R1 -114.0114
Deine werte R2 6.60066
Deine werte Rvw -1254.12541
>>>
nur wie kommt er ins -??? die werte sind jetzt alle richtig
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 15:16
von EyDu
telegraph hat geschrieben:nur wie kommt er ins -??? die werte sind jetzt alle richtig
Weil bei deinen Eingaben Ube größer ist als Ub. Damit wird Ub-Ube negativ.
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 15:18
von BlackJack
@telegraph: Das was EyDu geschrieben hat + das hättest Du doch ganz einfach selber heraus finden können. Es steht sogar in meinem letzten Beitrag.
Edit: Du solltest das übrigens mal per Hand nachrechnen. Für R1 wäre -114.0 nämlich richtig gewesen. Du hast das Ergebnis nun also verschlechtert statt verbessert.
Edit2: Und auch die beiden anderen Ergebnisse waren ursprünglich richtig, also 6.6 und -1254.0.

Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 15:55
von telegraph
Danke ich habe es gesehen,
Code: Alles auswählen
print ("Das ist ein Programm zur Berechnung einer Emitterschaltung")
Ic= float (input ("wie groß ist Ic" ))
B = float (input ("wie groß ist B"))
Ube = float (input ("wie groß ist Ube in V"))
Ub = float (input ("wie groß ist Ub in V"))
Uce = round (Ube/2 , 5)
Ib = round (Ic/B , 5)
Iq = round (Ib*10 , 5)
Rc = round ((Ube-Uce)/Ic , 5)
R1 = round ((Ub-Ube)/(Iq+Ib) , 5)
R2 = round (Ub/Iq , 5)
Rvw = round ( (Ub-Ube)/Ib ,5)
print ("Deine werte Ib", Ib)
print ("Deine werte iq",Iq)
print ("Deine werte Rc", Rc)
print ("Deine werte R1", R1)
print ("Deine werte R2", R2)
print ("Deine werte Rvw", Rvw)
print ('Dein wert Uce', Uce)
ergebniss
>>>
Das ist ein Programm zur Berechnung einer Emitterschaltung
wie groß ist Ic2
wie groß ist B220
wie groß ist Ube in V0.6
wie groß ist Ub in V12
Deine werte Ib 0.00909
Deine werte iq 0.0909
Deine werte Rc 0.15
Deine werte R1 114.0114
Deine werte R2 132.0132
Deine werte Rvw 1254.12541
Dein wert Uce 0.3
>>>
ich musste 40 aufgaben mit dem taschen rechner rechnen und der will uns noch mehr geben

da dachte ich schreib mal was zum rechnen
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 16:10
von BlackJack
@telegraph: Könntest Du Deinen Quelltext demnächst bitte selbst hier im Forum in Python-Code-Tags setzen. Spätestens wenn Einrückung drin vorkommt muss man das machen, damit die in der Anzeige erhalten bleibt.
Und wie gesagt: Deine *ersten* Ergebnisse waren, bis auf die Sache mit dem Vorzeichen, *richtig* und *jetzt* sind sie *falsch*! Der grundsätzliche Rechenfehler kommt ja dadurch zustande, dass wenn der Speicher für eine Gleitkommazahl ausgeschöpft ist, eine Periode einfach abgeschnitten wird. Wenn Du das jetzt schon nach 5 Stellen und bei jedem Rechnenschritt machst, kann das Ergebnis doch nur noch ungenauer werden, weil Du potentiell jedes mal beim Runden Informationen verwirfst.
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 16:12
von Sirius3
@telegraph: es ist normalerweise eine schlechte Idee, Zwischenergebnisse zu runden, weil mit jedem Zwischenschritt die Genauigkeit abnimmt, also weniger als die 5 beabsichtigten Nachkommastellen. Das nennt sich Fehlerfortpflanzung, falls Du unter Wikipedia nachlesen willst. Um gerundete Ergebnisse
auszugeben bietet sich die Stringformatierung über
an.
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 21:13
von telegraph
danke ich bin so froh das mir "geholfen" wurde und nicht um meine fehler um 07:00 geschipft wurde danke
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 21:26
von telegraph
Code: Alles auswählen
print ("Das ist ein Programm zur Berechnung einer Emitterschaltung")
Ic= float (input ("wie groß ist Ic" ))
B = float (input ("wie groß ist B"))
Ube = float (input ("wie groß ist Ube in V"))
Ub = float (input ("wie groß ist Ub in V"))
Uce = round( Ub/2 , 22)
Ib = round (Ic/B ,22)
Iq = round (Ib*10, 22)
Rc = round ((Ub-Uce)/Ic , 22)
R1 = round ((Ub-Ube)/(Iq+Ib) , 22)
R2 = round (Ub/Iq , 22)
Rvw = round ((Ub-Ube)/Ib , 22)
print('Ib={:.5f}'.format(Ib))
print('Iq={:.5f}'.format(Iq))
print('Rc={:.5f}'.format(Rc))
print('R1={:.5f}'.format(R1))
print('R2={:.5f}'.format(R2))
print('Rvw={:.5f}'.format(Rvw))
print('Uce={:.5f}'.format(Uce))
print ("Deine werte iq",Iq)
print ("Deine werte Rc", Rc)
print ("Deine werte R1", R1)
print ("Deine werte R2", R2)
print ("Deine werte Rvw", Rvw)
print ('Dein wert Uce', Uce)
Re: emitterschaltung Berechnug Bitte um Hilfe
Verfasst: Donnerstag 7. November 2013, 21:42
von EyDu
Jetzt musst du nur noch die ganzen unnötigen round-Anweisungen entfernen.