elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Libreria math.php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Libreria math.php  (Leído 10,094 veces)
Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Libreria math.php
« en: 24 Julio 2009, 21:34 pm »

Bueno, os dejo un tipo de libreria de matematicas con diversas funciones utiles, raiz cuadrada y raiz cubica dadas por SnakeDrak :P (Thx)

Código
  1. <?php
  2. function mcd($x, $y){ // saber el mcd de dos cifras
  3. $aux = $x;
  4.      if($x<$y){
  5.        $x=$y;
  6.        $y=$aux;
  7.      }
  8.      while(($r=$x%$y)!=0){
  9.        $x=$y;
  10.        $y=$r;
  11.     }
  12.     return $y;
  13. }
  14.  
  15. function mcm($x, $y){ // se requiere mcd() - Saber el mcm de dos cifras
  16. return (($x*$y)/(mcd($x,$y)));
  17. }
  18.  
  19. function nPrimo($n){ // saber si un numero es primo
  20. $ret=1;
  21.      for($i=2; $i<$n && $ret==1;$i++){
  22.        if(($n%$i)==0) $ret=0;
  23.      }
  24.      return $ret;
  25. }
  26.  
  27. function nxPrimo($i){ // saber el primo que va detras de otro
  28. $ret=$i+1;
  29.      while(nPrimo($ret)==0)
  30.        $ret++;
  31.      return $ret;
  32.  }
  33.  
  34. function cateto($h, $c){ // saber el cateto de una hipotenusa
  35. $c1 = $c * $c;
  36. $h1 = $h * $h;
  37. $a = $c1 - $h1;
  38. return raiz_q($a);
  39. }
  40. function hipotenusa($c1, $c2){
  41. $cc1 = $c1*$c1;
  42. $cc2 = $c2*$c2;
  43. $a = $cc1+$cc2;
  44. return raiz_q($a);
  45. }
  46.  
  47.  
  48. function elevar($n, $c){ // elevar un numero a otro
  49. $ret = 1;
  50. for($i = 0; $i < $c; $i++){
  51. $ret = $ret*$n;
  52. }
  53. return $ret;
  54. }
  55.  
  56. function raiz_q($n,$c=2){ // raices
  57. return pow($n,1/$c);
  58. }
  59.  
  60. ?>


« Última modificación: 25 Julio 2009, 18:33 pm por Erik# » En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Libreria math.php
« Respuesta #1 en: 24 Julio 2009, 22:15 pm »

http://www.php.net/manual/en/book.math.php

sqrt()


En línea

Ojo por ojo, y el mundo acabará ciego.
Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Re: Libreria math.php
« Respuesta #2 en: 24 Julio 2009, 22:22 pm »


No quiero una función ya hecha, ya se que existe, pero quiero crear mi propia función, igual que las potencias, existe pow, pero yo cree la de elevar();
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Libreria math.php
« Respuesta #3 en: 24 Julio 2009, 22:42 pm »

como ejercicio de programación y lógica es factible, pero realmente es útil para PHP?
En línea

Ojo por ojo, y el mundo acabará ciego.
Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Re: Libreria math.php
« Respuesta #4 en: 24 Julio 2009, 22:53 pm »

No, pero es util para mi aprendizaje y tener una optativa a las funciones standard de PHP que en casos remotos puede saltar error :P
En línea

SnakeDrak

Desconectado Desconectado

Mensajes: 243


[GPG: 0x9680A09E]


Ver Perfil
Re: Libreria math.php
« Respuesta #5 en: 24 Julio 2009, 23:19 pm »

Hola,

Pues muy fácil, la raíz cuadrada es igual a:

Número de la raíz elevado a 1/2.

Es decir, que te quedaría:

Código
  1. function raiz_q($n){
  2.      return elevar($n,0.5);
  3. }
  4.  

La podrías adaptar para raízes cúbicas y tal:

Código
  1. function raiz_q($n,$c){ // $n raíz a calcular, $c tipo (cuadrada sería 2)
  2.      return elevar($n,1/$c);
  3. }
  4.  

Saludos!
« Última modificación: 24 Julio 2009, 23:22 pm por SnakeDrak » En línea

Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Re: Libreria math.php
« Respuesta #6 en: 24 Julio 2009, 23:27 pm »

Hola,

Pues muy fácil, la raíz cuadrada es igual a:

Número de la raíz elevado a 1/2.

Es decir, que te quedaría:

Código
  1. function raiz_q($n){
  2.      return elevar($n,0.5);
  3. }
  4.  

La podrías adaptar para raízes cúbicas y tal:

Código
  1. function raiz_q($n,$c){ // $n raíz a calcular, $c tipo (cuadrada sería 2)
  2.      return elevar($n,1/$c);
  3. }
  4.  

Saludos!

Resultado total:

Código
  1. <?php
  2. function mcd($x, $y){ // saber el mcd de dos cifras
  3. $aux = $x;
  4.      if($x<$y){
  5.        $x=$y;
  6.        $y=$aux;
  7.      }
  8.      while(($r=$x%$y)!=0){
  9.        $x=$y;
  10.        $y=$r;
  11.     }
  12.     return $y;
  13. }
  14.  
  15. function mcm($x, $y){ // se requiere mcd() - Saber el mcm de dos cifras
  16. return (($x*$y)/(mcd($x,$y)));
  17. }
  18.  
  19. function nPrimo($n){ // saber si un numero es primo
  20. $ret=1;
  21.      for($i=2; $i<$n && $ret==1;$i++){
  22.        if(($n%$i)==0) $ret=0;
  23.      }
  24.      return $ret;
  25. }
  26.  
  27. function nxPrimo($i){ // saber el primo que va detras de otro
  28. $ret=$i+1;
  29.      while(nPrimo($ret)==0)
  30.        $ret++;
  31.      return $ret;
  32.  }
  33.  
  34. function cateto($h, $c){ // saber el cateto de una hipotenusa
  35. $c1 = $c * $c;
  36. $h1 = $h * $h;
  37. $a = $c1 - $h1;
  38. return raiz_q($a);
  39. }
  40. function hipotenusa($c1, $c2){
  41. $cc1 = $c1*$c1;
  42. $cc2 = $c2*$c2;
  43. $a = $cc1+$cc2;
  44. return raiz_q($a);
  45.  
  46.  
  47. function elevar($n, $c){ // elevar un numero a otro
  48. $ret = 1;
  49. for($i = 0; $i < $c; $i++){
  50. $ret = $ret*$n;
  51. }
  52. return $ret;
  53. }
  54.  
  55. function raiz_q($n){ // raiz cuadrada, (por SnakeDrak)
  56. return elevar($n,0.5);
  57. }
  58.  
  59. function raiz_q2($n,$c){ // raices cubicas (por SnakeDrak)
  60.      return elevar($n,1/$c);
  61. }
  62. ?>

Muchas gracias, porfin puedo finalizar las otras funciones que necesitaba este recurso :P
Actualizo el primer post.
« Última modificación: 24 Julio 2009, 23:29 pm por Erik# » En línea

Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Re: Libreria math.php
« Respuesta #7 en: 24 Julio 2009, 23:38 pm »

No funciona con decimales mi función elevar :S
En línea

SnakeDrak

Desconectado Desconectado

Mensajes: 243


[GPG: 0x9680A09E]


Ver Perfil
Re: Libreria math.php
« Respuesta #8 en: 25 Julio 2009, 00:48 am »

Hola,

Habría que hacer el algoritmo y ya, porque elevar a un decimal es igual que elevar a una fracción y elevar a una fracción es igual a una raíz xDDD así que habría que hacer el algoritmo (no encontré ninguno hecho en google), que de el resultado de la raíz, el algoritmo está en Wikipedia (ese que se da en la ESO) y ya desde eso podrías hacerlo, pero vamos que es mucho mejor que uses POW obviamente ya que tus funciones consumen más que las librerías de PHP que irán en ASM supongo.

Si te haces el algoritmo ponlo por aquí que vendría bien.

Por cierto recuerda poner (float) a las variables que tendrán decimales, también puedes usar double, ejemplo:

Código
  1. return (float)$var;
  2.  
  3. $var = (float) (5*(1/2));
  4.  
  5. // etc..
  6.  

Saludos!
« Última modificación: 25 Julio 2009, 00:52 am por SnakeDrak » En línea

Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Re: Libreria math.php
« Respuesta #9 en: 25 Julio 2009, 00:55 am »

Bueno, tenedremos que usar en las funciones de raiz cuadrada un sistema pre-fabricado como es pow, a mi aun no me han explicado nada sobre algoritmos, ahora empezare 3º ESO.
Espero que me empiecen a explicar algebra avanzada y algoritmos y logaritmos de cifrado y creación de ordenes matematicas :P
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Libreria math.h
Programación C/C++
juancaa 3 4,110 Último mensaje 17 Marzo 2012, 21:39 pm
por theluigy13etv
Logaritmo sin librería Math.t « 1 2 »
Programación C/C++
norris 14 10,529 Último mensaje 3 Abril 2013, 11:13 am
por do-while
[Ruby]¿Que hacen las siguientes funciones del modulo Math?
Scripting
Segadorfelix 2 2,681 Último mensaje 20 Febrero 2013, 03:59 am
por Segadorfelix
Libreria Math de C fuera del Dev-C++ « 1 2 »
Programación C/C++
Saikilito 11 9,282 Último mensaje 2 Julio 2017, 01:29 am
por engel lex
raiz cubica sin libreria math
Java
ericklopez 3 3,755 Último mensaje 30 Marzo 2020, 04:07 am
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines