Unklarheit beim Ergebnis einer Berechnung
-
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?
-
-
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 identischNein 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
-
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.49430884was sagt WolframAlpha zu deinem Ergebnis:
https://www.wolframalpha.com/input/?i=1.4285e%2B05
Ergibt: 142850deine 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/6y3iq142845.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 EingangEs 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 machenTips bisher: möglicherweise mit komplexen Zahlen?
was sagt WolframAlpha:
https://www.wolframalpha.com/input/?i=acos%5B372.7128%5E2+%2B+(382.6950+-+320)%5E2%5Dsieht 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/9abs35Ergibt:
(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/5hqcErgebis: (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.4943088399887dein Eingangswert für acos ist
in C/C++ == WolframAlpha(Methematica) == Matlab absolut identischund 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 befassennur 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.4943088399887dieser 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
-
hat sich dein Problem denn jetzt gelöst oder gehört Feedback heute nicht mehr zum guten Ton?