Effiziente Berechnung einer Formel

#2774146
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
#2774152
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
Gast #2774255
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...
Gast #2774271
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.
#2774466
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 ??

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren