Jump to content


Photo

Baskara()


  • Faça o login para participar
1 reply to this topic

#1 Dookan

Dookan

    Turista

  • Usuários
  • 31 posts
  • Sexo:Masculino
  • Localidade:Montenegro - RS

Posted 31/01/2009, 18:12

Sintaxe: baskara(float $a, float $b, float $c);
Retorna: array;
Descrição: Faz a equação matemática Baskara, e retorna $x em um array numérico.
Bibliotecas: Nenhuma.
Limitações: PHP 4.2.0+

Função:
<?php
function baskara($a,$b,$c){
	if($a == 0){
		trigger_error('Division by zero',E_USER_ERROR);
	}
	
	$a = floatval($a);
	$b = floatval($b);
	$c = floatval($c);

	$op1 = sqrt(($b * $b) - 4 * $a * $c);
	$op2 = 2 * $a;

	$x = array();

	$x[0] = (-$b + $op1)/$op2;
	$x[1] = (-$b - $op1)/$op2;

	return $x;
}
?>

Uso:
<?php
var_dump(baskara(5,4,-3));

//Exibe:
// array(2) { [0]=>  float(0.471779788708) [1]=>  float(-1.27177978871) } 
?>

| Intel Core 2 Quad Q9300 2,5 GHz | HD 320 GB | VGA GeForce 8600GT 512 MB | RAM 2 GB DDR2 |

#2 ThalesWeb

ThalesWeb

    Veterano

  • Usuários
  • 1435 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 14/08/2009, 19:19

Amigo, a idéia tá legal, mas faltou alguns detalhes como o cálculo caso "a" seja igual a 0 (se tornaria uma função de primeir grau) ou para o caso de raízes complexas. Fiz umas modificações:
function baskara($a,$b,$c){

	$x = array();	
	
	if($a == 0){
		
		$x[0] = -1*$c/$b;
		
	} else {
	
		$a = floatval($a);
		$b = floatval($b);
		$c = floatval($c);
	
		$op1 = ($b * $b) - 4 * $a * $c;
		$op2 = 2 * $a;
		
		if($op1 >= 0){
			
			$op1 = sqrt($op1);
	   		$x[0] = (-$b + $op1)/$op2;
			$x[1] = (-$b - $op1)/$op2;
		
		} else {
		
		$op1 = sqrt(-1*$op1);
			$x[0] = -$b/$op2.'+'.$op1/$op2.'i';
			$x[1] = -$b/$op2.'-'.$op1/$op2.'i';
			
		}
	}
	
	return $x;
}

Thales Santos




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq