$maxf) { echo 'abs(f) > '.$maxf; echo "
"; $itest=0; } return $itest; } function df(&$fx, $x, $p) { global $ipreci,$eps,$maxf,$maxfx,$maxk; $itest=1; $coef="4"; $fx=bcmul($coef,$x,$ipreci); if(abs($fx)>$maxfx) { echo 'abs(fx) > '.$maxfx; echo "
"; $itest=0; } return $itest; } function newton(&$xn,$x,$p,$n) { global $ipreci,$eps,$maxf,$maxfx,$maxk; $itest=1; $x0=$x; for($i=1; $i<=$n; $i++) { if($i>$maxk) { echo 'trop d\'itérations dans Newton maxk='.$maxk; $itest=0; return $itest; } $itest=f($xn,$x0,$p); if($itest==1) $itest=df($fxn,$x0,$p); else { echo 'dérivée trop grande'; return $itest; } if($itest==0) { echo 'fin de la méthode de Newton à l\'itération '.$i; echo "
"; return $itest; } if($fxn==0) { echo 'dérivée nulle dans l\'itération de Newton'; echo "
"; $itest=0; return $itest; } $dxn=bcdiv($xn,$fxn,$ipreci); $xn=bcsub($x0,$dxn,$ipreci); if(bccomp($xn,$x0,$ipreci)==0) { echo 'l\'itération de Newton converge en '.$i.' itérations'."
"; return 1; } $x0=$xn; echo 'x'.$i.'='.$xn."
"; } echo 'fin de l\'itération de Newton'."
"; return $itest; } $x=$_POST['inivar']; $p=$_POST['inipara']; $k=$_POST['inik']; $ipreci=$_POST['inipreci']; $itest=bcscale($ipreci); if($itest==1) echo 'la précision est '.$ipreci.' décimales'; else echo 'erreur : pas de précision avec '.$ipreci.' décimales'; echo "
"; newton($xk,$x,$p,$k); ?>