今天有人問題一個數學問題,4x+1/x=2,求x是多少。把方程轉化一下,4x2 + 1 = 2x,然後4x2 - 2x + 1 =0,其實就是個一元二次方程的問題。好久沒弄這些東西了,數學都還高中老師了。還好會寫程序,下面用程序求出這個方程的根。
<?
//ax*x bx c=0; 一元二次方程一般形式
//系數設定
$a = 2;
$b = 3;
$c = 0;
echo '一元二次方程為';
echo $a.'x2'.'+'.$b.'x'.'+'.$c;
//求根的函數
function get_root($a,$b,$c)
{
//放根的數組
$x=0;
$x=array();
if($a==0)
{
if($b==0)
if($c==0)
{
$x[0]=0;
$x[1]="no root";
}
else
{
$x[0]="no root";
$x[1]="no root";
}
else if($b!=0)
{
$x[0]=(0-$c)/$b;
$x[1]="no root";
}
}
else
{
//標志
$flg=$b*$b-4*$a*$c;
//△ >0 兩個不同的根
if($flg >0)
{
$x[0]=((0-$b)+sqrt($flg))/2/$a;
$x[1]=((0-$b)-sqrt($flg))/2/$a;
}
else if($flg==0)//△=0 兩個相同的根
{
$x[0]=(0-$b)/2/$a;
$x[1]=(0-$b)/2/$a;
}
else // 無根
{
$x[0]="no root";
$x[1]="no root";
}
}
return $x;
}
//驗證代碼 參數為頂部設置的a b c 的值,可自行修改測試
$root=array();
$root=get_root($a,$b,$c);
echo " <pre>求得根: <br>";
print_r($root);
echo " <pre>";
?>
程序運行的結果為:
一元二次方程為2x2+3x+0
求得根:
Array
(
[0] => 0
[1] => -1.5
)
回到最初的問題,經程序運算,結果為:
一元二次方程為4x2+-2x+1
求得根:
Array
(
[0] => no root
[1] => no root
)