Frage von akin2000, 30

JavaScript wieso kommt beim Ergebnis NaN raus?

Hey,

rl.question('X eingeben default ist 1 $>', function (x) {




rl.question('P eingeben $>', function (p) {


    rl.question('Q eingeben $>', function (q) {

console.log(x, p,q);
            var x1, x2;
                log(x + 'x²+' + p + 'x+' + q); // Beispiel  
                log('p/x :   ' + test2 + '    q/x: ' + test + '\n'); // kommt richtig raus
                log(x + 'x²+' + p + 'x+' + q + '= 0' + '         |normieren... /' + x + '\n'); // 5x²+4x+3=0
                p = test2;
                q = test;
                x = x / x;
                log(x + 'x²+' + p + 'x+' + q +'= 0 '+'\n'); //  1x²+0.8+0.6

                log(-p/2); // kleiner Test...Ergebnis richtig
            x1 = -p / 2.0 + Math.sqrt(Math.pow( p / 2.0, 2) - q); // nur hier werden p und q anscheinend falsch angewendet
            x2 = -p / 2.0 - Math.sqrt(Math.pow( p / 2.0, 2) - q);

            log('X1 : '+x1+'         X2 : '+x2 +'\n'); //Ergebnis NaN

Wieso kommt bei x1 x2 NaN raus ? :c

Danke im Voraus !!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von TheErdnuss, 11

In diesem Schritt, errechnest du eine Quadratwurzel:

Math.sqrt(Math.pow(p/2.0, 2) - q)

Angenommen, p = 6 und q = 10.

Dann

  Math.sqrt(Math.pow(6/2.0, 2) - 10)
= Math.sqrt(9 - 10)
= Math.sqrt(-1)

Da die Wurzel aus -1 nicht möglich ist, erhälst du NaN.

Also ist die Gleichung wahrscheinlich schlichtweg nicht lösbar.
Auf jeden Fall wirst du immer NaN erhalten, wenn q > (p/2)² .

MfG, TheErdnuss

Antwort
von Suboptimierer, 21

Vielleicht waren die Eingabeparameter so gewählt, dass die Gleichung nicht lösbar wurde.

Du schreibst, dass du normieren willst, normierst aber nicht. Du gibst p/x und q/x aus, weist den neuen Wert aber nicht zu.

Du solltest x=0 abfangen.

Antwort
von RakonDark, 15

das liegt an den werten ,

var x = 2;
var p = 4;
var q = 2;


var x1 = -p / 2.0 + Math.sqrt(Math.pow( p / 2.0, 2) - q);
var x2 = -p / 2.0 - Math.sqrt(Math.pow( p / 2.0, 2) - q);

document.writeln('X1 : '+x1+' X2 : '+x2 +'\n');

funktioniert

bei
p = 2 , kommt NAN

ergo geh ich davon aus das sqrt aus negativen  nicht funktioniert

Kommentar von RakonDark ,

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten