Autor Tema: Función raíz cuadrada sin sqrt() y para números imaginarios  (Leído 4253 veces)

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Función raíz cuadrada sin sqrt() y para números imaginarios
« en: 20 de Junio de 2010, 00:38:21 am »
Bueno, justo hace poco estuve comentando en otro tema sobre una curiosidad que yo tenía al calcular la raíz cuadrada de un número sin la función sqrt()... Luego de buscar y buscar por internet y consultar con unos amigos, este ha sido el código que resultó de ello:

function raiz($num){
	
if(
$num != 0){
	
	
if(
$num 0)
	
{
	
	
	
$num $num*(-1);
	
	
	
$ima "i";
	
	
	

	
	
}
	
else {
	
	
	
	
$num $num;
	
	
	
	
$ima "";
	
	
	
}
	
	

	
	
$aprox 0;
	
	

	
	
while(
$aprox*$aprox $num){
	
	
	
$aprox $aprox 0.1;
	
	
	
$val1 $aprox;
	
	
}
	
	

	
	
for(
$i 0$i 10$i++){
	
	
	
$val2 $num;
	
	
	
$val2 $val2 $val1;
	
	
	
$val2 $val2 $val1;
	
	
	
$val2 $val2 2;
	
	
	
$val1 $val2;
	
	
}

	
	
$res $val2;
	
	

	
}
	
else {
	
	
	
$res 0;
	
	
	
$ima "";
	
	
}
	

	
return 
$res.$ima;
}


Obviamente, en casos como: "$val2 = $val2 + $val1" se puede usar los operadores con asignación "$val2 += $val1", pero preferí hacerlo así para el que no entendiera esos operadores... Esta función permite reconocer si un número es 0 (para mostrar de respuesta 0) y si es negativo, calcular su raíz positiva y colocarle una letra i al lado, que vendría siendo la i de imaginario :P

Comunidad PHPeros

Función raíz cuadrada sin sqrt() y para números imaginarios
« en: 20 de Junio de 2010, 00:38:21 am »

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Función raíz cuadrada sin sqrt() y para números imaginarios
« Respuesta #1 en: 20 de Junio de 2010, 19:39:40 pm »
xD, ¿así lo hacen os credores del PHP?, con la formula de piedra... XD,.

Saludos, buen aporte
« Última modificación: 20 de Junio de 2010, 20:16:56 pm por javipilo »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Función raíz cuadrada sin sqrt() y para números imaginarios
« Respuesta #2 en: 20 de Junio de 2010, 21:21:43 pm »
xD, ¿así lo hacen os credores del PHP?, con la formula de piedra... XD,.

Saludos, buen aporte
imagino que vendrá con C, y C lo hace con fórmula de piedra xD

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:Función raíz cuadrada sin sqrt() y para números imaginarios
« Respuesta #3 en: 20 de Junio de 2010, 21:29:20 pm »
imagino que vendrá con C, y C lo hace con fórmula de piedra xD

Supongo que sí viene con C, puesto que en C++ también está esta función y la de pow() ;)
Saludos ^^
- Moderador de PHP


Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re:Función raíz cuadrada sin sqrt() y para números imaginarios
« Respuesta #4 en: 21 de Junio de 2010, 00:16:25 am »
Ver este tema me ha recordado a los inicios de programación en la universidad, donde nos enseñaban a programar algoritmos para hacer raices cuadradas, la sucesion de fibonacci, etc...
Por favor, leete las Normas


Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:Función raíz cuadrada sin sqrt() y para números imaginarios
« Respuesta #5 en: 21 de Junio de 2010, 03:47:47 am »
Ver este tema me ha recordado a los inicios de programación en la universidad, donde nos enseñaban a programar algoritmos para hacer raices cuadradas, la sucesion de fibonacci, etc...
Como dije, acá no nos permiten usar ninguna función definida, ya que no nos orientamos a ningún lenguaje de programación... Así que todo lo que necesitemos hacer para llevar a cabo un programa, debe ser manualmente... Gracias a Dios nunca nos pidieron raíz cuadrada xD!!!! Pero lo consulté por curiosidad =)... Se me hace muy interesante conocer estas cosas, ya que muchos solo se basan en dichas funciones pero no saben exactamente como fueron creadas...