欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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
)