Über oder Ungenauigkeit beim rechnen...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Über oder Ungenauigkeit beim rechnen...

    ... oder ist doch nur die Formel falsch?

    Hallo,
    Ich habe ein Problem mit der Berechnung einer Physikalischen Größe in meinem Programm.
    Ich nutze double Dateitypen um eine hohe Genauigkeit zu erzielen und mit den Math Funktionen ohne Typkonversation arbeiten zu können.
    Derzeit schreibe ich ein Programm zur Darstellung Physikalischer Sachverhalte.
    In dem jetzigen Abschnitt, dem schrägen Wurf treten nun aber Probleme in der berechnung auf.
    Die Wurfdauer T wird ungenau berechnet, bzw. ist zu groß.
    Nachgetestet mit dem Taschenrechner, bekomme ich bei meinen Testwerten den Wert: 7,168738029.
    Mein Programm wiederum errechnet mir: 7,61626297993661

    Hier die Formel, die ich benutze und die ich exakt so im Taschenrechner auch verwende:

    Quellcode

    1. double startGeschwindigkeit = 30;
    2. double startWinkel = Math.PI * 45 / 180.0; // Rad -> Deg Konversation des 45Grad Winkels
    3. double fallBeschleunigung = 9.81;
    4. double startHoehe = 100;
    5. double wurfDauer;
    6. wurfDauer = (startGeschwindigkeit * Math.Sin(startWinkel) + Math.Sqrt(Math.Pow(startGeschwindigkeit, 2d) + Math.Pow(Math.Sin(startWinkel), 2d) + 2 * fallBeschleunigung * startHoehe)) / fallBeschleunigung;


    Liegt der Fehler in der Umwandlung des Winkels in die richtige "Maßeinheit" oder was ist mein Problem...
    Wäre nett wenn jemand den Fehler findet ich suche schon seit einer Stunde+ und finde ihn einfach nicht...

    Danke.
    Blackskyliner
  • Ich glaub das ist ein Fehler der durch Rundung ensteht. Du benutzt in der Formel einmal den Wert 2, welcher als einziger kein double ist. Bei der Addition von double und int kann das ganze auf ein int gerundet werden (weiß nicht genau wie C# sich da verhält) und die gehen ein paar Nachkommastellen verloren. Benutze besser 2.0 oder 2d, also deinen double anstatt einen int. Am besten bei der Berechnung von Startwinkel und den Variableninitialisierungen auch, obwohl es da kein Problem geben sollte.Es ist guter Stil das trotzdem klar als double-Wert zu kennzeichnen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Trotz dieser Änderung immer noch der selbe Fehler :(
    Werds mir aber merken, immer noch ein d dran zu hängen ;)


    Edit: Jetzt hat es sich doch erledigt... bin jeden einzelnen Schritt nochmal einzeln durchgegangen, von innen nach aussen... und da ist mir aufgefallen das ich die Ergebnisse der Quadrate Addiert statt Multipliziert hab...
    Danke für die Hilfe ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Blackskyliner ()