Ich versuche, meine eigene Sinus-Funktion Implementierung für Spaß zu programmieren, aber ich bekomme immer wieder:PHP „Maximale Ausführungszeit“
Fatal error: Maximum execution time of 30 seconds exceeded
Ich habe ein kleines HTML-Formular in dem Sie die „x“ Wert eingeben können Sin (x) suchen Sie und die Anzahl der "Iterationen", die Sie berechnen möchten (Genauigkeit Ihres Wertes), der Rest ist PhP. Die Mathematik basiert die "Baureihe Definition" von Sine auf Wikipedia: ->http://en.wikipedia.org/wiki/Sine#Series_definition Hier ist mein Code:
<?php
function factorial($int) {
if($int<2)return 1;
for($f=2;$int-1>1;$f*=$int--);
return $f;
};
if(isset($_POST["x"]) && isset($_POST["iterations"])) {
$x = $_POST["x"];
$iterations = $_POST["iterations"];
}
else {
$error = "You forgot to enter the 'x' or the number of iterations you want.";
global $error;
}
if(isset($x) && is_numeric($x) && isset($iterations) && is_numeric($iterations)) {
$x = floatval($x);
$iterations = floatval($iterations);
for($i = 0; $i <= ($iterations-1); $i++) {
if($i%2 == 0) {
$operator = 1;
global $operator;
}
else {
$operator = -1;
global $operator;
}
}
for($k = 1; $k <= (($iterations-(1/2))*2); $k+2) {
$k = $k;
global $k;
}
function sinus($x, $iterations) {
if($x == 0 OR ($x%180) == 0) {
return 0;
}
else {
while($iterations != 0) {
$result = $result+(((pow($x, $k))/(factorial($k)))*$operator);
$iterations = $iterations-1;
return $result;
}
}
}
$result = sinus($x, $iterations);
global $result;
}
else if(!isset($x) OR !isset($iterations)) {
$error = "You forgot to enter the 'x' or the number of iterations you want.";
global $error;
}
else if(isset($x) && !is_numeric($x)&& isset($iterations) && is_numeric($iterations)) {
$error = "Not a valid number.";
global $error;
}
?>
Mein Fehler wahrscheinlich an dieser Linie aus einer Endlosschleife kommt:
$result = $result+(((pow($x, $k))/(factorial($k)))*$operator);
aber ich weiß nicht, wie man das Problem löst. Was ich Tring an dieser Linie zu tun ist, zu berechnen:
((pow($x, $k))/(factorial($k)) + (((pow($x, $k))/(factorial($k)) * ($operator)
Iterieren:
+ (((pow($x, $k))/(factorial($k)) * $operator)
eine "$ Iterationen" Höhe der Zeit mit "$ i" 's und „$ k "Die Werte ändern sich entsprechend.
Ich bin wirklich hier stecken! Ein bisschen Hilfe wäre nötig. Vielen Dank im Voraus !
Btw: Die Fakultät Funktion ist nicht meins. Ich habe es in einem Kommentar von PhP.net gefunden und anscheinend ist es die optimale faktorielle Funktion.
Vielleicht möchten Sie die [Docs] (http://php.net/global) auf global lesen. Sie müssen nicht jede Variable global deklarieren, und die Art, wie Sie es tun, würde sowieso nicht helfen. –