今天有人问题一个数学问题,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 "
求得根:
";
print_r($root);
echo "
";
?>
程序运行的结果为:
一元二次方程为2x2+3x+0
求得根:
Array
(
[0] => 0
[1] => -1.5
)
回到最初的问题,经程序运算,结果为:
一元二次方程为4x2+-2x+1
求得根:
Array
(
[0] => no root
[1] => no root
)