$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);
?>