Funktionsgraph-Generator - Problem

the snake II

Erfahrenes Mitglied
Hallo zusammen,

Ich schreibe gerade an einem Script, das einen Funktionsgraphen, dessen Funktionsvorschrift in ein Formular eingegeben wird.

Zu den Eingaben:

Einfacher mathematischer aufbau einer Funktionsvorschrift:
Code:
m * x + b
In einem Formular kann in das erste Textfeld ("term") der Term für 'm*x', sowie in ein zweites ("term2") '+ b' eingegeben werden.

Bei Linearen Funktionen (hier liegen alle Punkte auf einer Geraden) funktioniert das auch gut. Bei einer Eingabe wie z.B. 'x*x' ( Fachbegriff ) in "term", sollte theoretisch eine Kurve, die im negativen 'y' und im positiven 'x' Bereich anfängt (man kann zwar nicht vom 'Anfang' sprechen, aber ich denke ihr wisst was ich meine), den Ursprung schneidet, und im positiven Bereich von 'x' und 'y' endet (s.o.).

Hier tritt der Fehler auf:

Die Kurve macht eine Schlangen-Linie:

attachment.php


Das kommt mir komisch vor, denn ich weiß nicht wie es sein kann, dass Lineare Funktionen funktionieren, die oben beschriebenen jedoch nicht.

Hat jemand eine Ahnung wie ich das Lösen könnte?

Anbei der Quellcode:
PHP:
<?php
$size = 600 + 41;
$color1 = 255;
$color2 = 255;
$color3 = 255;
$image = imagecreate($size,$size);
$farbe_body = imagecolorallocate($image,$color1,$color2,$color3);
$schwarz = imagecolorallocate($image,0,0,0);
$rot = imagecolorallocate($image,255,0,0);

$scala1 = 151;

$scala2 = 0;

//Achsen

imageline($image,20,321,621,321,$schwarz); //horizontal
imageline($image,321,20,321,621,$schwarz); //vertikal

//Pfeile

imageline($image,621,321,611,315,$schwarz); //rechts o
imageline($image,621,321,611,327,$schwarz); //rechts u

imageline($image,321,20,315,30,$schwarz); //oben l
imageline($image,321,20,327,30,$schwarz); //oben r

//Scala

for($i = 41;$i<=601;$i=$i+20){
	imageline($image,$i,318,$i,324,$schwarz); //horizontal
	imageline($image,318,$i,324,$i,$schwarz); //vertikal
}

//Beschriftung

$font = 1;

//Horizontal

$n = 14;
for($i = 35;$i<=301;$i=$i+20){
	imagestring($image,$font,$i,326,"-".$n,$schwarz); //horizontal r
	$n--;
}

$n = 1;
for($i = 339;$i<=601;$i=$i+20){
	imagestring($image,$font,$i,326,$n,$schwarz); //horizontal r
	$n++;
}

//Vertikal

$n = 1;
for($i = 338;$i<=601;$i=$i+20){
	imagestring($image,$font,302,$i,"-".$n,$schwarz); //horizontal r
	$n++;
}

$n = 14;
for($i = 37;$i<=301;$i=$i+20){
	imagestring($image,$font,307,$i,$n,$schwarz); //horizontal r
	$n--;
}

//Punkte einlesen

$pos = 14;
$pos2 = 0 - $pos;
$term1 = $_POST["term"];
$term1 = str_replace('x','$x',$term1);
$term1 = str_replace(',','.',$term1);
$term1 = str_replace('$x','$m',$term1);
$term2 = $_POST["term2"];

$m = 0;
$o = 300;
$u = 319;
$y = 317;

for($i=0;$i <= 1;$i++){
	while($m < 15){
		$x = 319+$m*20;
		if($_POST["term2"])
		eval("\$y = 317-((".$term2.")*20)-20*(".$term1.");");
		else
		eval("\$y = 317-20*(".$term1.");");
		imagestring($image,$font,$x,$y,"o",$rot);
		$m++;
		$u - 20;
		$o + 20;
	}
}

$m = 0;
$y = 17;

for($i=0;$i <= 15;$i++){
		$x = 319-$m*20;
		if($_POST["term2"])
		eval("\$y = 317-((".$term2.")*20)+20*(".$term1.");");
		else
		eval("\$y = 317+20*(".$term1.");");
		//if($y>36)
		imagestring($image,$font,$x,$y,"o",$rot);
		$m++;
		//$u - 20;
		$o + 20;
}

header("Content-Type: image/jpeg");
imagejpeg($image,"",9999);
imagedestroy($image);
?>
 

Anhänge

  • func.jpg
    func.jpg
    8,4 KB · Aufrufe: 57
sieht aus wie eine Kubikfunktion also irgendwas mit x³
kannst ja mal schauen, ob deine code das an einer stelle erzeugen könnte
flooo
 
Zurück