Forum: PC-Programmierung Effiziente Berechnung einer Formel


von Martin (Gast)


Lesenswert?

Hallo habe eine Frage,kann man folgende Formel
effizienter berechnen? da es aufm Mikrocontroller schon sehr 
ineffiziente Berechnung ist

Danke für eure Hilfe

von ich (Gast)


Lesenswert?

z.B.

(U1 - U0) / (U1 * U0)

Damit hast du eine Division durch eine Multiplikation ersetzt.

von Vlad T. (vlad_tepesch)


Lesenswert?


edit: mist zu langsam

von Andreas B. (andreasb)


Lesenswert?

ich schrieb:
> z.B.
>
> (U1 - U0) / (U1 * U0)
>
> Damit hast du eine Division durch eine Multiplikation ersetzt.

Ich stimme "ich" zu, ist aber nicht zwangsweise die Lösung für Martin.

Wichtig ist immer noch der Wertebereich! Vor allem bei einem 8 Bit CPU, 
und für die Lösung von "ich" muss dieser grundsätzlich grösser sein => 
Also aufpassen!



mfg Andreas

von Vlad T. (vlad_tepesch)


Lesenswert?

Andreas B. schrieb:
> Wichtig ist immer noch der Wertebereich! Vor allem bei einem 8 Bit CPU,
> und für die Lösung von "ich" muss dieser grundsätzlich grösser sein =>
> Also aufpassen!

das ist trotzdem nix im Vergleih zu einer SW-Division

von Andreas B. (andreasb)


Lesenswert?

Vlad Tepesch schrieb:
> Andreas B. schrieb:
>> Wichtig ist immer noch der Wertebereich! Vor allem bei einem 8 Bit CPU,
>> und für die Lösung von "ich" muss dieser grundsätzlich grösser sein =>
>> Also aufpassen!
>
> das ist trotzdem nix im Vergleih zu einer SW-Division

Dies war ein Hinweis auf eine mögliche Fehlerquelle und hat nur 
zweitranging mit der Effizienz zu tun, da Martin ja nicht genannt hat 
was für eine CPU er verwenden wird...



mfg Andreas

von Jz26 (Gast)


Lesenswert?

Ist der Wertebereich einschränkbar? Dann würde ich eine Lookuptable 
anlegen (ergebnisse am PC berechnen und im Flash abspeichern).

Ansonsten kannst du auch einen CORDIC-Algorithmus für die Division 
implementieren, der dürfte schnell genug sein...

von klaus-klaas (Gast)


Lesenswert?

Martin schrieb:
> effizienter berechnen? da es aufm Mikrocontroller schon sehr
> ineffiziente Berechnung ist

Einerseits, wie bereits gesagt, durch Umstellen der Gleichung. 
Andererseits aber auch durch effiziente Implementationstechniken. Das 
hängt aber sehr von diversen Faktoren Wertebereich und Auflösung von 
Input und Output, geforderte Genauigkeit, geforderte Geschwindigkeit, 
Möglichkeit für Näherungslösungen, usw.

von Robert L. (lrlr)


Lesenswert?

am effizientesten wäre es vermutlich, sich eine CPU zu suchen, bei der 
man sich nicht schon bei einer lächerlichen Division um Geschwindigkeit 
sorgen machen muss

im Zeitalter von GHZ octocore cpus, kann das ja nicht so schwer sein


ps. geht es hier eigentlich um INT oder Fließkomma ??

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Robert L. schrieb:

> ps. geht es hier eigentlich um INT oder Fließkomma ??

Ich tipp auf boolean ;-)

von Robert L. (lrlr)


Lesenswert?

>Ich tipp auf boolean ;-)

da würde dann auch die, weiter oben angesprochene, lookup-tabelle Sinn 
machen ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.