Timpfeiffer/Komplexe Leistung

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
<code id="5c89571c8a184">
function infos(gleichung){
    var ae = gleichung.indexOf('x²'), //Ende von a
        be = gleichung.indexOf('x', ae + 2); //Ende von b
    //a,b,c herausfinden:
    var a = gleichung.substring(gleichung.indexOf('=') + 1, ae) * 1,
        b = gleichung.substring(ae + 2, be) * 1,
        c = gleichung.substring(be + 1) * 1,
        p = b / a, 
        q = c / a;

    //Nullstelle:
    var x1 = 0,
        x2 = 0;
    if((p * p / 4) - q < 0){
        x1 = 'nicht definiert';
        x2 = 'nicht definiert';
    }
    else if((p * p / 4) - q == 0){
        x1 = Number((- (p / 2)).toFixed(3));
        x2 = 'nicht definiert';
    }
    else if((p * p / 4) - q > 0){
        x1 = Number((- (p / 2) + Math.sqrt((p * p / 4) - q)).toFixed(3));
        x2 = Number((- (p / 2) - Math.sqrt((p * p / 4) - q)).toFixed(3));
    }
    else return console.error('Die angegebene Funktion konnte nicht verarbeitet werden!');

    //Scheitelpunkt:
    var x = Number((- (p / 2)).toFixed(3)),
        y = Number((a * (- (p * p / 4) + q)).toFixed(3));

    //Ausgabe:
    console.log(`Nullstelle 1: ${x1}`);
    console.log(`Nullstelle 2: ${x2}`);
    console.log(`Scheitelpunkt: S(${x}|${y})`);
}

var xAchse = 400 / 2, yAchse = 400 / 2;

function koordinatensystem(canvas, turtle){
    canvas.clear();
    turtle.hide();
    turtle.move(0, xAchse);
    turtle.right(90);
    turtle.forward(400);
    turtle.move(yAchse, 0);
    turtle.right(90);
    turtle.forward(400);
    for(var i = 1; i <= 19; i++){
        turtle.move(20 * i, xAchse - 5);
        turtle.forward(10);
        turtle.left(90);
        turtle.move(yAchse - 5, 20 * i);
        turtle.forward(10);
        turtle.right(90);
    }
}

function parabel(turtle, gleichung){
    var ae = gleichung.indexOf('x²'), //Ende von a
        be = gleichung.indexOf('x', ae + 2); //Ende von b
    //a,b,c herausfinden:
    var a = gleichung.substring(gleichung.indexOf('=') + 1, ae) * 1,
        b = gleichung.substring(ae + 2, be) * 1,
        c = gleichung.substring(be + 1) * 1;

    for(var x = -10; x <= 10; x += 0.0025){
        posx = 20 * x + yAchse;
        posy = -20 * (a * x * x + b * x + c) + xAchse;
        turtle.move(posx, posy);
        turtle.forward(0.01)
    }
    turtle.hide();
}
</code>

<canvas w="400" h="400"></canvas>

<run id="5c8fd13de85cd" id=5c89571c8a184>
const gleichung = "y=4x²+1x-2";
let parameter = parameter(gleichung);
if(!parameter) return console.log('Die angegebene Funktion ist keine quadratische Funktion!');
infos(parameter);
koordinatensystem(canvas1, turtle1);
parabel(turtle1, parameter);
</run>