- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: Rechenfehler

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Anzeige

    LiFePo4 Akku selber bauen - Video
    1. Soll das etwa heissen, dass mein ATMEL zu "dumm" ist um diverse Trigonometrische funktionen GENAU auszurechnen?
    Ich habe da so grundsätzlich meine Zweifel ob ein schlauer Controller dem binären Zahlensystem mehr oder andere Werte entlocken kann als ein dummer
    Mit einer Auflösung von x Bit lassen sich nunmal nur 2^x Werte darstellen, egal wie schlau man sich anstellt.

    Huiuiui.... Am Schluss muss ich das noch mit dem PC machen!
    Dann hoffe ich mal, dass du dich nicht irgendwann wundern musst, dass der dieselben Rechenfehler einfach nur etwas schneller macht

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    MUL
    MULS
    MULSU


    zumindest steht der beim Mega8 mit dabei.
    So ein Datenblatt macht schon was her
    Sag ich doch immer wieder
    Schon wieder was neues gelernt

    Gruß Sebastian

    EDIT: Scheint aber nur bei den Megas zu sein.

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.04.2005
    Ort
    Weilburg
    Beiträge
    676
    Zitat Zitat von surfer
    Oder liegt es nur an den Zahlentypen? Kann man da ein anderes Format benutzen?
    Wikipedia sagt: http://de.wikipedia.org/wiki/Gleitkommazahl
    ... bilden die Gleitkommazahlen eine endliche Arithmetik, die vor allem im Hinblick auf numerische Berechnungen mit Computern entwickelt wurde. Dort dienen die Gleitkommazahlen meist als rationale Näherungen für reelle Zahlen.
    Prostetnic Vogon Jeltz

    2B | ~2B, That is the Question?
    The Answer is FF!

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Zitat Zitat von izaseba
    Scheint aber nur bei den Megas zu sein.
    deshalb wird er wohl nicht so oft verwendet.

    Müsste man mal probieren, ob der GCC diesen verwendet, und ob man dazu die richtige C-Formel zusammenbringt.

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Hi all,
    Zitat Zitat von linux_80
    Zitat Zitat von izaseba
    Scheint aber nur bei den Megas zu sein.
    deshalb wird er wohl nicht so oft verwendet.

    Müsste man mal probieren, ob der GCC diesen verwendet, und ob man dazu die richtige C-Formel zusammenbringt.
    Das Problem mit den Rechenfehlern ist ein systematischer Fehler, der vom verwendeten binären Zahlensystem verursacht wird. Bei einer Umwandlung der Zahl 80 in eine Gleitkommazahl wird die 80 in 0.8 x 10e2 umgewandelt.

    Nach IEEE 754 ( http://de.wikipedia.org/wiki/Flie%C3%9Fkommazahl ) wird eine Gleitkommazahl im Singleformat mit 23Bit Mantisse und 8Bit Exponent dargestellt.
    Die 0.8 wird in 11001100110011001100110 00000010 umgewandelt (0.79999995231 -> 79.999995231).

    Binär gesehen ist 0.8 eine irrationale Zahl. Damit ist der Rechenfehler schon vorprogrammiert ohne Chance korrigiert werden zu können.

    Grüße Klaus
    Eine verrückte Idee ist besser als keine

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802

    Re: Rechenfehler

    Zitat Zitat von surfer
    ...auch wenn ich die zahl 6537.13700000 in die Variable schreibe, bringt er mir 6537.13711111111111 ????

    Ist für solche Zahlen float nicht geeignet?
    Habe auch schon folgendes versucht:
    sprintf(ausgabe,"%f",r);
    aber da gibt es eine warnung wegen double und ein ? wird ausgegeben...

    Irgendwelche Tipps?
    Bei Verwendung von float hast du bei den angegebenen Werten einen relativen Fehler von ca 1.7*10^{-8} \approx 2^{-25}. Bei 23 Bit Mantisse codiert das niederwertigste Bit für 2^{-24}, also besteht kein Anlass zur Sorge.

    avr-gcc unterstützt intern nur float (1 Sign, 23 Mant, 7 Expo). Auch Verwendung von double hilft nicht weiter, da die libgcc2 für avr-gcc nur für SFmode (float) generiert ist. Verwendung von double bringt lediglich Overhead beim Umwandeln und mehr Speicherverbrauch. Falls du höhere Genauigkeit benötigst, dann
    • Benötigst du überhaupt höhere Genauigkeit? Oder ist es ein ästhetisches Problem?
    • eigene Bibliothek implementieren: Unterstützung für
      -- double (1 Sign, 56 Mant, 11 Expo) oder
      -- long double (1 Sign, 64 Mant, 15 Expo)
      -- floats nach eingenem Gusto
      -- Fixpunkt-Arithmetik nach eigenem Gusto
      -- exakte Arithmetik nach eigenem Gusto (ganze Zahlen, rationale Zahlen oder Erweiterungskörper von Q)
    • eigene Version von avr-gcc generieren, die double bzw long double unterstützt. Die Quellen hast du
      Dazu müssen Anpassungen im GCC-Backend für AVR gemacht werden.
    • entsprechende Bibliothek besorgen (kaufen / in Auftrag geben), CA-System (Computer-Algebra)


    sprintf() ist ANSI-C, die %-Modifier müssen zu den Typen passen. Wenn du mit % einen 8-Byte-Wert angibst, lieferst aber nur 4 Bytes ab, dann sei froh, daß du einen Compilezeit-Fehler/Warnung bekommst, und nicht einen Laufzeitfehler wegen Stapel-Korruption!

    Zitat Zitat von surfer
    Soll das etwa heissen, dass mein ATMEL zu "dumm" ist um diverse Trigonometrische funktionen GENAU auszurechnen?
    Was bitte meinst du mit *GENAU*???
    Ein Rechner ist bestenfalls so schlau wie das Programm, das auf ihm läuft

    Wie sieht eine genaue Darstellung von sin(1) deiner Meinung nach aus?

    Bist du dir klar über die mathematischen/algorithmischen Grundlagen von dem, was du tun willst?
    Disclaimer: none. Sue me.

  7. #17
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von surfer
    1. Soll das etwa heissen, dass mein ATMEL zu "dumm" ist um diverse Trigonometrische funktionen GENAU auszurechnen?
    Wie groß ist den PI genau ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #18
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.075
    Wie groß ist den PI genau ?
    Naja, so ungefähr:
    akustische Darbietung der 100 Nachkommastellen der Zahl Pi!
    http://www.aip.de/~wasi/PI/AUDIO/pi100.ram

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zitat Zitat von PicNick
    Wie groß ist den PI genau ?
    Warum solche Umstände?

    PI ist 3,2.
    Disclaimer: none. Sue me.

  10. #20
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    @Sprinter:
    Räum den Link lieber weg, bevor das irgendein EU Abgeordneter sieht und auf blöde Gedanken kommt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen