PHP如何求一元二次方程的根?
程序员文章站
2022-04-15 08:11:46
...
今天有人问题一个数学问题,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 )