rechenungs problem atmega32

Gast #365597
Lesenswert?

Hallo,

Was ist loss mit diese program progn.c ?

Excakt.txt sind die correcte resultaten. Aber in progn.txt sind
resultaten
bekommen mit progn.c. Warum bleibt EL so lang constant um dan eine
sprung so machen ?

Ich compileer mit WinAVR 20040404 !! Brauche eine atmega32 - 8 Mhz.
Terminal 9600 baud,8 bits,parity none, flow control none, stopbit 1.

gr,

Rob
Angehängte Dateien:
#365598
Lesenswert?

Auf welchem Rechner wurden die Werte für 'excakt.txt'
berechnet?

Das Problem duerfte sein: Du betreibst da ziemlich
heftige Gleitkomma-arithmtik. Die ist an sich schon
problematisch durch die Rundungefehler die sich im Laufe
der Berechnung einschleichen. Erschwerend kommt auf einem
AVR hinzu, dass die Gleitkomma-Arithmetik lediglich eine
4-Byte Arithmetik ist, selbst wenn du den Datentyp 'double'
anforderst. 4-Byte ist nicht viel und die Rundungsfehler in
der Arithmetik schaukeln sich relativ schnell in Bereiche
hoch, die unsinnige Ergebnisse liefern.
Ich fürchte, dass du nur 3 Alternativen hast:
* Entweder einen Compiler besorgen, der 8-Byte double Typen
  besitzt
* Eine sehr sorgfältige Analyse des Codes und Umstrukturierung
  um die Rundungsfehler möglichst klein zu kriegen. Bei dem
  massiven Einsatz von Winkelfunktionen und deren Umkehrfunktionen,
  ist das aber ein in der Praxis sinnloses Unterfangen. Zumindest
  dann, wenn du so eine Analyse nicht schon mindestens einmal
  gemacht hast.
* Komplette Neuentwicklung, bei der vor allem auf eine wesentlich
  einfachere Berechnung Wert gelegt wird.

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