Sinusfunktion und anschließende Subtraktion

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
IamError
User
Beiträge: 2
Registriert: Sonntag 7. April 2013, 17:45

Mahlzeit an alle Schlangenbeschwörer,

meine Python verwundert mich ein wenig. Ich habe zwar eine Lösung gefunden, dennoch würde ich gern das eigentliche Problem verstehen wollen.
Ich führe folgende Rechnung aus:

Code: Alles auswählen

 te = (math.sin(winkel * math.pi / 180) * pulsperiode * spannung) - flanke 
Ich erhalte ein Ergebnis, bei dem die Subtraktion der flanke nicht durchgeführt wurde.
Berechne ich den Wert hingegen auf folgende Weise:

Code: Alles auswählen

 te = math.sin(winkel * math.pi / 180) * pulsperiode * spannung
te = te - flanke 

erhalte ich das richtige Ergebnis?!

Da Excel genau das selbe Verhalten zeigt, vermute ich, dass es an der Verwendung der Sinusfunktion selbst liegt. Dennoch will sich mir der Grund dafür nicht so recht erschließen. Für ein Schubser in die richtige Richtung wäre ich sehr dankbar.

mfg Stevie
BlackJack

@IamError: Das kann nicht sein. Zeig mal bitte den *tatsächlichen* Code oder ein Beispiel welches ausführbar ist und *tatsächlich* ein Problem enthält. Denn ob Du das in einem Ausdruck ausrechnest oder die Subtraktion in eine zweite Rechnung auslagerst *darf* keinen Unterschied machen.
IamError
User
Beiträge: 2
Registriert: Sonntag 7. April 2013, 17:45

Hallo nochmal,

Blackjack, erstmal danke für die extrem schnelle Antwort! Bin ich gar nicht gewohnt. Bei Mikrocontroller.net dauerts wenigstens 12h, bis da Bewegung zu erkennen ist.^^
Ich muss mich direkt mal entschuldigen. Es war ein Schnellschuss meinerseits. Beim erstellen des Minimalbeispiels bin ich über meinen Fehler gestolpert. Die Rechnung funktioniert natürlich so. Der Fehler hat sich in einer späteren Rechnung eingeschlichen, undzwar weil ich einen Faktor unterschlagen hab. Da sich der Fehler beim 2. Rechenweg offenbar wieder rausrechnet, ist mir anfangs mein Fehler nicht aufgefallen.
Und für den Fall, dass jemanden der konkrete Fehler interessiert:

Es geht um die Berechnung eines Impulsmuster in der Form "t0 te ta t0", wobei ich zu jedem Abschnitt noch die Zeit für die Signalflanke festlegen muss. Das Muster wurde wie folgt berechnet:

Code: Alles auswählen

te = (math.sin(winkel*math.pi/180)*pulsperiode*spannung)-flanke
ta = (math.sin((60-winkel)*math.pi/180)*pulsperiode*spannung)-flanke
t0 = ((pulsperiode-(te+ta))*0.5)-flanke ##hier ist der Fehler, es muss -2*flanke sein
Da ich 2*t0 hab, muss ich auch 2 Flanken berücksichtigen...
Ist natürlich ein äußerst dummer Fehler, aber manchmal muss man offenbar ein paar Schritte zurück gehen, um einen Überblick zu kriegen. :roll:

mfg Stevie
Zuletzt geändert von Anonymous am Montag 8. April 2013, 11:11, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Antworten