Timpfeiffer/Komplexe Leistung
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
=Eigenschaften und graphische Darstellung quadratischer Funktionen=
==Herausfinden der Parameter==
<code id="5c950c31a1103">
function getabc(gleichung) {
gleichung = gleichung.replace(/(?:y=|f\(x\)=)/,'');
if(gleichung.startsWith('+')) gleichung = gleichung.replace('+','');
var parameter = {
'a': '',
'b': '',
'c': ''
}
let check = false,
digits = 0,
posa = gleichung.indexOf('x²') - 1;
if(posa == -2) return;
else switch(gleichung[posa]){
case undefined: parameter.a = 1; gleichung = gleichung.replace(`x²`,''); break;
case '+': parameter.a = 1; gleichung = gleichung.replace(`+x²`,''); break;
case '-': parameter.a = -1; gleichung = gleichung.replace(`-x²`,''); break;
default: while(!check){
if(gleichung[posa - digits] * 1 || gleichung[posa - digits] == '0' || gleichung[posa - digits] == '.'){
parameter.a += gleichung[posa - digits];
digits++;
}
else{
if(gleichung[posa - digits] == '-') parameter.a += '-';
check = true;
parameter.a = parameter.a.split('').reverse().join('') * 1;
gleichung = gleichung.replace(`${parameter.a}x²`,'');
}
}
}
if(gleichung.startsWith('+')) gleichung = gleichung.replace('+','');
check = false;
digits = 0;
let posb = gleichung.indexOf('x') - 1;
if(posb == -2) parameter.b = 0;
else switch(gleichung[posb]){
case undefined: parameter.b = 1;gleichung = gleichung.replace(`x`,'');break;
case '+': parameter.b = 1;gleichung = gleichung.replace(`+x`,'');break;
case '-': parameter.b = -1;gleichung = gleichung.replace(`-x`,'');break;
default: while(!check){
if(gleichung[posb - digits] * 1 || gleichung[posb - digits] == '0' || gleichung[posb - digits] == '.'){
parameter.b += gleichung[posb - digits];
digits++;
}
else{
if(gleichung[posb - digits] == '-') parameter.b += '-';
check = true;
parameter.b = parameter.b.split('').reverse().join('') * 1;
gleichung = gleichung.replace(`${parameter.b}x`,'');
}
}
}
if(gleichung.startsWith('+')) gleichung = gleichung.replace('+','');
if(gleichung.endsWith('+')) gleichung = gleichung.substring(0, gleichung.length - 1);
parameter.c = gleichung * 1;
return(parameter);
}
</code>
==Ausgabe der Nullstellen und des Scheitelpunktes==
<code id="5cdbb5849b632">
function infos(parameter){
if(parameter.a == 0){
//mn-Form:
let m = parameter.b,
n = parameter.c;
//Nullstelle:
var x0 = 0;
if(m==0)
if(n==0)
x0 = 'unendlich viele NST';
else
x0 = 'keine NST';
else
x0 = Number(- n / m);
//Ausgabe:
console.log(`<i>Nullstelle:</i> <b>${x0}</b>`);
}
else{
//pq-Form:
let p = parameter.b / parameter.a,
q = parameter.c / parameter.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));
}
//Scheitelpunkt:
var x = Number((- (p / 2)).toFixed(3)),
y = Number((parameter.a * (- (p * p / 4) + q)).toFixed(3));
//Ausgabe:
console.log(`<i>Nullstelle 1:</i> <b>${x1}</b><br> <i>Nullstelle 2:</i> <b>${x2}</b><br> <i>Scheitelpunkt:</i> <b>S(${x}|${y})</b>`);
}
}
</code>
==Grafische Darstellung==
<code id="5c950c31a11e2">
function grafik(canvas, turtle, parameter){
canvas.clear();
turtle.hide();
turtle.move(0, xAchse);
turtle.right(90);
turtle.forward(400);
turtle.move(yAchse, 0);
console.log('<font color="#ffffff"> Hier könnte Ihre Werbung stehen!</font>')
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);
}
for(var x = -10; x <= 10; x += 0.0025){
posx = 20 * x + yAchse;
posy = -20 * (parameter.a * x * x + parameter.b * x + parameter.c) + xAchse;
turtle.move(posx, posy);
turtle.forward(0.01);
}
}
</code>
==Ergebnis am "Front-End"==
<canvas w="400" h="400"></canvas>
<run id="5cdbb5849b6bd" htmloutput>
const gl = '0.5x²+2x-3';
let pm = getabc(gl);
if(!pm) console.log('<i>Die angegebene Funktion ist keine quadratische Funktion!</i>');
else {
infos(pm);
var xAchse = 400 / 2, yAchse = 400 / 2;
grafik(canvas1, turtle1, pm);
}
</run>