Autor
|
Tema: Libreria math.php (Leído 10,599 veces)
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Bueno, os dejo un tipo de libreria de matematicas con diversas funciones utiles, raiz cuadrada y raiz cubica dadas por SnakeDrak (Thx) <?php function mcd($x, $y){ // saber el mcd de dos cifras $aux = $x; if($x<$y){ $x=$y; $y=$aux; } while(($r=$x%$y)!=0){ $x=$y; $y=$r; } return $y; } function mcm($x, $y){ // se requiere mcd() - Saber el mcm de dos cifras return (($x*$y)/(mcd($x,$y))); } function nPrimo($n){ // saber si un numero es primo $ret=1; for($i=2; $i<$n && $ret==1;$i++){ if(($n%$i)==0) $ret=0; } return $ret; } function nxPrimo($i){ // saber el primo que va detras de otro $ret=$i+1; while(nPrimo($ret)==0) $ret++; return $ret; } function cateto($h, $c){ // saber el cateto de una hipotenusa $c1 = $c * $c; $h1 = $h * $h; $a = $c1 - $h1; return raiz_q($a); } function hipotenusa($c1, $c2){ $cc1 = $c1*$c1; $cc2 = $c2*$c2; $a = $cc1+$cc2; return raiz_q($a); } function elevar($n, $c){ // elevar un numero a otro $ret = 1; for($i = 0; $i < $c; $i++){ $ret = $ret*$n; } return $ret; } function raiz_q($n,$c=2){ // raices } ?>
|
|
« Última modificación: 25 Julio 2009, 18:33 pm por Erik# »
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
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
Mensajes: 6.336
he vuelto :)
|
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
Mensajes: 1.138
Gundam
|
No, pero es util para mi aprendizaje y tener una optativa a las funciones standard de PHP que en casos remotos puede saltar error
|
|
|
En línea
|
|
|
|
SnakeDrak
Desconectado
Mensajes: 243
[GPG: 0x9680A09E]
|
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: function raiz_q($n){ return elevar($n,0.5); }
La podrías adaptar para raízes cúbicas y tal: function raiz_q($n,$c){ // $n raíz a calcular, $c tipo (cuadrada sería 2) return elevar($n,1/$c); }
Saludos!
|
|
« Última modificación: 24 Julio 2009, 23:22 pm por SnakeDrak »
|
En línea
|
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
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: function raiz_q($n){ return elevar($n,0.5); }
La podrías adaptar para raízes cúbicas y tal: function raiz_q($n,$c){ // $n raíz a calcular, $c tipo (cuadrada sería 2) return elevar($n,1/$c); }
Saludos! Resultado total: <?php function mcd($x, $y){ // saber el mcd de dos cifras $aux = $x; if($x<$y){ $x=$y; $y=$aux; } while(($r=$x%$y)!=0){ $x=$y; $y=$r; } return $y; } function mcm($x, $y){ // se requiere mcd() - Saber el mcm de dos cifras return (($x*$y)/(mcd($x,$y))); } function nPrimo($n){ // saber si un numero es primo $ret=1; for($i=2; $i<$n && $ret==1;$i++){ if(($n%$i)==0) $ret=0; } return $ret; } function nxPrimo($i){ // saber el primo que va detras de otro $ret=$i+1; while(nPrimo($ret)==0) $ret++; return $ret; } function cateto($h, $c){ // saber el cateto de una hipotenusa $c1 = $c * $c; $h1 = $h * $h; $a = $c1 - $h1; return raiz_q($a); } function hipotenusa($c1, $c2){ $cc1 = $c1*$c1; $cc2 = $c2*$c2; $a = $cc1+$cc2; return raiz_q($a); function elevar($n, $c){ // elevar un numero a otro $ret = 1; for($i = 0; $i < $c; $i++){ $ret = $ret*$n; } return $ret; } function raiz_q($n){ // raiz cuadrada, (por SnakeDrak) return elevar($n,0.5); } function raiz_q2($n,$c){ // raices cubicas (por SnakeDrak) return elevar($n,1/$c); } ?>
Muchas gracias, porfin puedo finalizar las otras funciones que necesitaba este recurso Actualizo el primer post.
|
|
« Última modificación: 24 Julio 2009, 23:29 pm por Erik# »
|
En línea
|
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
No funciona con decimales mi función elevar :S
|
|
|
En línea
|
|
|
|
SnakeDrak
Desconectado
Mensajes: 243
[GPG: 0x9680A09E]
|
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: return (float)$var; $var = (float) (5*(1/2)); // etc..
Saludos!
|
|
« Última modificación: 25 Julio 2009, 00:52 am por SnakeDrak »
|
En línea
|
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
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
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Libreria math.h
Programación C/C++
|
juancaa
|
3
|
4,318
|
17 Marzo 2012, 21:39 pm
por theluigy13etv
|
|
|
Logaritmo sin librería Math.t
« 1 2 »
Programación C/C++
|
norris
|
14
|
11,103
|
3 Abril 2013, 11:13 am
por do-while
|
|
|
[Ruby]¿Que hacen las siguientes funciones del modulo Math?
Scripting
|
Segadorfelix
|
2
|
2,883
|
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,872
|
2 Julio 2017, 01:29 am
por engel lex
|
|
|
raiz cubica sin libreria math
Java
|
ericklopez
|
3
|
4,109
|
30 Marzo 2020, 04:07 am
por CalgaryCorpus
|
|