Unklarheit beim Ergebnis einer Berechnung



  • @mgaeckler

    du meinst das gleiche Ergebnis wie im Matlab???

    lg



  • buzz_lightzyear schrieb:

    danke für eure Hilfe. Das Problem liegt daran, dass Matlab mit seinen Ergebnissen eben nicht über bzw. unter 1/-1 kommt ...

    Du meinst 1.4285e+05 ist nicht über 1?



  • buzz_lightzyear schrieb:

    @mgaeckler

    du meinst das gleiche Ergebnis wie im Matlab???

    lg

    Ja



  • magst du mir auch noch sagen wie? 😉

    Danke 🙂



  • buzz_lightzyear schrieb:

    magst du mir auch noch sagen wie? 😉

    Danke 🙂

    #include <iostream>
    #include <cmath>
    
    int main()
    {
        std::cout << std::pow(372.7128, 2) + std::pow((382.6950 - 320), 2) << std::endl;
        return 0;
    }
    


  • da bekomme ich dieses ergebnis: 142845

    Das hab ich schon 🙂



  • buzz_lightzyear schrieb:

    da bekomme ich dieses ergebnis: 142845

    Das hab ich schon 🙂

    Und das ist verschieden von 1.4285e+05?



  • ja



  • buzz_lightzyear schrieb:

    ja

    Na dann



  • sei so nett und verschwende nicht meine Zeit



  • Fassen wir also zusammen:
    - alle hier im Forum bekommen dasselbe heraus, egal ob mit Matlab oder C++
    - in deinem Urspungspost ist sind Matlab- und C++-Ergebnis ebenfalls identisch
    - du behauptest, das Matlab-Ergebnis wäre was anderes

    => Wie sollen wir dir da helfen? Wo genau ist der Widerspruch?

    Edit: habe aus deinem letzten Post gelernt, dass es offenbar Zeitverschwendung ist, dir weiter zu helfen.



  • buzz_lightzyear schrieb:

    ja

    Mathlab hat halt auf 5 gültige Stellen gerundet. Lass es doch auf 6 Stellen runden, dann siehst Du, daß das selbe rauskommt.

    VG



  • wob schrieb:

    Fassen wir also zusammen:
    - in deinem Urspungspost ist sind Matlab- und C++-Ergebnis ebenfalls identisch

    Nein im OP steht:

    372.7128^2 + (382.6950 - 320)^2 = 1.4285e+05

    Meine Berechnung in C++ schaut so aus:

    pow(372.7128, 2) + pow((382.6950 - 320), 2)
    

    Als Ergebnis zeigt mir C++: 148383.

    1.4285e+05 != 148383

    Unterscheiden sich schon an der dritten gültigen Stelle.

    VG



  • mgaeckler schrieb:

    Nein im OP steht:

    372.7128^2 + (382.6950 - 320)^2 = 1.4285e+05

    Meine Berechnung in C++ schaut so aus:

    pow(372.7128, 2) + pow((382.6950 - 320), 2)
    

    Als Ergebnis zeigt mir C++: 148383.

    Was aber irgendwie im Widerspruch zu

    buzz_lightzyear schrieb:

    da bekomme ich dieses ergebnis: 142845

    Das hab ich schon 🙂

    zu stehen scheint.



  • manni66 schrieb:

    Was aber irgendwie im Widerspruch zu

    buzz_lightzyear schrieb:

    da bekomme ich dieses ergebnis: 142845

    Das hab ich schon 🙂

    zu stehen scheint.

    Nicht nur scheint.
    VG



  • @buzz_lightzyear

    du bist glaube ich ein wenig verwirrt:

    372.7128^2 + (382.6950 - 320)^2 = 1.4285e+05

    was berechnet WolframAlpha?:
    https://www.wolframalpha.com/input/?i=372.7128%5E2+%2B+(382.6950+-+320)%5E2
    Ergibt: 142845.49430884

    was sagt WolframAlpha zu deinem Ergebnis:
    https://www.wolframalpha.com/input/?i=1.4285e%2B05
    Ergibt: 142850

    deine Angabe von 1.4285e+05 ist einfach nur ein bisschen anders gerundet und in einer anderen Schreibweise

    #include <cmath>
    #include <cstdio>
    
    int main()
    {
      double value =pow(372.7128, 2.0) + pow((382.6950 - 320.0), 2.0);
      printf("%f\n", value);
      printf("%f\n", acos(value));
    }
    

    lass es dir von cpp.sh Online Ausgeben
    cpp.sh/6y3iq

    142845.494309 - nur anders gerundet genau das Ergebnis von WolframAlpha
    nan

    **Also: bis hier her sind deine acos-Eingangs-Werte in WolframAlpha(Matematica) und C/C++
    absolut identisch zu deinem Matlab acos Eingang

    Es ist nur der acos der sich anders verhält
    **

    dein Problem ist jetzt nur:

    dein Eingangswert von ~142850 ist absolut nicht in [-1,1]
    der acos ist eben nur für -1|1 definiert - ergibt also NaN - und dein Matlab-acos scheint da was anderes zu machen

    Tips bisher: möglicherweise mit komplexen Zahlen?

    was sagt WolframAlpha:
    https://www.wolframalpha.com/input/?i=acos%5B372.7128%5E2+%2B+(382.6950+-+320)%5E2%5D

    sieht so aus als würde da eine komplexe Zahl rauskommen

    was mit wobs Aussage übereinstimmt

    #include <complex>
    #include <cmath>
    #include <iostream>
    
    int main()
    {
      std::complex<double> z = pow(372.7128, 2.0) + pow((382.6950 - 320.0), 2.0); 
      std::cout << acos(z) << '\n';
    }
    

    lass es dir von cpp.sh Online Ausgeben
    cpp.sh/9abs35

    Ergibt:
    (0,-12.5627)

    Matlab wird definitiv mit einer komplexen Zahl weiter rechnen - und du denkst eben es sollte eine reelle sein - was sie nicht ist

    jetzt du



  • manni66 schrieb:

    buzz_lightzyear schrieb:

    da bekomme ich dieses ergebnis: 142845

    Das hab ich schon 🙂

    Und das ist verschieden von 1.4285e+05?

    Sag mal buzz_lightzyear, bist du wirklich so doof oder tust du nur so?

    Ich würde eher sagen DU verschwendest UNSERE Zeit und deine eigene übrigens auch...



  • Sag mal buzz_lightzyear, bist du wirklich so doof oder tust du nur so?

    ich denke er hat sich ein wenig verrannt - und sieht den Wald vor lauter Bäumen nicht mehr

    lass dich nicht von den Formatierungen verwirren - das ist und bleibt
    immer die selbe Zahl

    #include <cmath>
    #include <cstdio>
    
    int main()
    {
      double value =pow(372.7128, 2) + pow((382.6950 - 320), 2);
      printf("%f\n", value);
      printf("%e\n", value);
      printf("%.4e\n", value); // schau mal was hier rauskommt
      printf("%.1f\n", value);
      printf("%.10f\n", value);
      printf("%.13f\n", value);
      return 0;
    }
    

    Online kompilieren/ausführen
    cpp.sh/5hqc

    Ergebis: (wie gesagt ist der selbe Wert unterschiedlich formatiert)
    142845.494309
    1.428455e+05
    1.4285e+05 <-- exakt dein Ergebnis aus dem 1. Post
    142845.5
    142845.4943088400
    142845.4943088399887

    dein Eingangswert für acos ist
    in C/C++ == WolframAlpha(Methematica) == Matlab absolut identisch

    und wenn du nicht verstehst was die Exponentialschreibweise ist, oder warum
    beim Ausgeben der Werte verschiedenen Rundungs-Strategien angewendeten werden, und wie man diese beeinflusst solltest du dich da ein wenig mit befassen

    nur dein acos rechnet in C/C++ eben anders - ansonsten gibt es bis da hin keinen Unterschied



  • und nur damit du verstehst warum die anderen dich so anpflaumen:

    Ergebis: (wie gesagt ist der selbe Wert unterschiedlich formatiert)
    142845.494309
    1.428455e+05
    1.4285e+05 <-- exakt dein Ergebnis aus dem 1. Post
    142845.5
    142845.4943088400
    142845.4943088399887

    dieser Wert ist niemals nicht im Bereich von [-1,1] 🙂
    egal ob 142845, 142850 oder 1.4285e+05 - niemals



  • niemals nicht

    sorry nur NIEMALS - immer immer > 1


Anmelden zum Antworten