나는 재미를 위해 내 자신의 사인 기능 구현을 프로그래밍하기 위해 노력하고있어하지만 난 점점 계속 : PHP "최대 실행 시간"
Fatal error: Maximum execution time of 30 seconds exceeded
나는 당신의 "X"값을 입력 할 수있는 작은 HTML 양식을 가지고 죄 (x)를 찾고 당신이 계산하고자하는 "반복"의 수 (귀하의 가치의 정확성), 나머지는 PhP입니다. 수학은 위키 백과에 사인의 "시리즈의 정의"의 기반으로합니다 ->
http://en.wikipedia.org/wiki/Sine#Series_definition 다음은 내 코드입니다 :
<?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;
}
?>
내 실수 아마이 라인에서 무한 루프에서 유래
:
$result = $result+(((pow($x, $k))/(factorial($k)))*$operator);
하지만 문제를 해결하는 방법을 모르겠습니다. 는 내가이 라인에서 할 트링하고있어 계산하는 것입니다 :
((pow($x, $k))/(factorial($k)) + (((pow($x, $k))/(factorial($k)) * ($operator)
반복하는 :
+ (((pow($x, $k))/(factorial($k)) * $operator)
"$ I"의와 "$ k를 가진 시간의"$ 반복 "양 "그에 따라 값이 변합니다.
나는 정말 여기에 붙어 있습니다! 약간의 도움이 필요할 것입니다. 미리 감사드립니다.
Btw : 계승 함수가 내 것이 아닙니다. 나는 PhP.net 주석에서 그것을 발견했으며 그것은 분명히 최적의 계승 함수이다.
[docs] (http://php.net/global) 전역을 읽을 수 있습니다. 당신은 모든 변수를 전역 변수로 선언 할 필요가 없습니다. 그리고 당신이하고있는 방식이 어쨌든 도움이되지 않을 것입니다. –