Diferencia entre revisiones de «Factorial»
m Revertidos los cambios de 190.233.72.164 (disc.) a la última edición de 200.72.139.239 |
|||
Línea 80: | Línea 80: | ||
El factorial de ''n'' es generalizado para cualquier número real ''n'' por la [[Función gamma]] de manera que |
El factorial de ''n'' es generalizado para cualquier número real ''n'' por la [[Función gamma]] de manera que |
||
:<math>n!=\int^\infty_0t^ne^{-t}dt=\Gamma(n+1)</math> |
:<math>n!=\int^\infty_0t^ne^{-t}dt=\Gamma(n+1)</math> |
||
== Productos similares == |
|||
=== Primorial === |
|||
El [[primorial]] {{OEIS|A002110}} se define de forma similar al factorial, pero sólo se toma el producto de los [[número primo|números primos]] menores o iguales que ''n''. |
|||
=== Doble factorial === |
|||
Se define el doble factorial de ''n'' como: |
|||
:<math>n!! = \begin{cases} |
|||
1 & \mbox{si } n=0\mbox{ o }n=1 |
|||
\\ |
|||
2 \times 4 \times 6 \times ... \times (n-2) \times n \ & \mathrm{si}\ n\ \mathrm{es}\ \mathrm{par} |
|||
\\ |
|||
1 \times 3 \times 5 \times ... \times (n-2) \times n \ & \mathrm{si}\ n\ \mathrm{es}\ \mathrm{impar} \\\end{cases}</math> |
|||
Por ejemplo, 8!! = 2 · 4 · 6 · 8 = 384 y 9!! = 1 · 3 · 5 · 7 · 9 = 945. La sucesión de dobles factoriales {{OEIS|id=A006882}} para <math>n = 0, 1, 2, \dots</math> empieza así: |
|||
: 1, 1, 2, 3, 8, 15, 48, 105, 384, 945, 3840, ... |
|||
La definición anterior puede extenderse para definir el doble factorial de números negativos: |
|||
:<math>(n-2)!!=\frac{n!!}{n}.</math> |
|||
Y esta es la sucesión de dobles factoriales para <math>n= -1, -3, -5, -7, \dots\,</math>: |
|||
: <math>1, -1, \tfrac{1}{3}, -\tfrac{1}{15}, \dots</math> |
|||
El doble factorial de un número negativo [[número par|par]] no está definido. |
|||
Algunas identidades de los dobles factoriales: |
|||
# <math>n!=n!!(n-1)!! \,</math> |
|||
# <math>(2n)!!=2^nn! \,</math> |
|||
# <math>(2n+1)!!={(2n+1)!\over(2n)!!}={(2n+1)!\over2^nn!}</math> |
|||
# <math>(2n-1)!!={(2n-1)!\over(2n-2)!!}={(2n)!\over2^nn!}</math> |
|||
# <math>\Gamma\left(n+{1\over2}\right)=\sqrt{\pi}\,\,{(2n-1)!!\over2^n}</math> |
|||
# <math>\Gamma\left({n\over2}+1\right)=\sqrt{\pi}\,\,{n!!\over2^{(n+1)/2}}</math> |
|||
== Implementación en lenguajes de programación == |
== Implementación en lenguajes de programación == |
Revisión del 00:29 17 jun 2010
0 | 1 |
1 | 1 |
2 | 2 |
3 | 6 |
4 | 24 |
5 | 120 |
6 | 720 |
7 | 5.040 |
8 | 40.320 |
9 | 362.880 |
10 | 3.628.800 |
15 | 1.307.674.368.000 |
20 | 2.432.902.008.176.640.000 |
25 | 15.511.210.043.330.985.984.000.000 |
50 | 30.414.093.201.713.378.043 × 1045 |
70 | 1,19785717... × 10100 |
450 | 1,73336873... × 101.000 |
3.249 | 6,41233768... × 1010.000 |
25.206 | 1,205703438... × 10100.000 |
100.000 | 2,8242294079... × 10456.573 |
Para todo número natural n, se llama n factorial o factorial de n al producto de todos los naturales desde 1 hasta n:
Que de un modo resumido, se puede expresar como:
Se define 0! = 1, para que la relación n! = n × (n − 1)! sea también válida para n = 1. Esta relación permite definir los factoriales por recursividad. La notación n! fue popularizada por el matemático francés Christian Kramp.
Los factoriales se usan mucho en la rama de la matemática llamada combinatoria, a través del binomio de Newton, que da los coeficientes de la forma desarrollada de (a + b)n:
- (a + b)n = an + n × an − 1 × b + Cn, 2 × an − 2 × b2 + ... + n × a × bn − 1 + bn
con:
Por medio de la combinatoria, los factoriales intervienen en el cálculo de las probabilidades. Intervienen también en el ámbito del análisis, en particular a través del desarrollo polinomial de las funciones (fórmula de Tynril). Se generalizan a los reales con la función gamma, de gran importancia en el campo de la aritmética.
Para valores grandes de n, existe una expresión aproximada para el factorial de n, dado por la fórmula de Stirling:
La ventaja de esta fórmula es que no precisa inducción y, por lo tanto, permite evaluar n! más rápidamente cuando mayor sea n.
El factorial de n es generalizado para cualquier número real n por la Función gamma de manera que
Productos similares
Primorial
El primorial (sucesión A002110 en OEIS) se define de forma similar al factorial, pero sólo se toma el producto de los números primos menores o iguales que n.
Doble factorial
Se define el doble factorial de n como:
Por ejemplo, 8!! = 2 · 4 · 6 · 8 = 384 y 9!! = 1 · 3 · 5 · 7 · 9 = 945. La sucesión de dobles factoriales (sucesión A006882 en OEIS) para empieza así:
- 1, 1, 2, 3, 8, 15, 48, 105, 384, 945, 3840, ...
La definición anterior puede extenderse para definir el doble factorial de números negativos:
Y esta es la sucesión de dobles factoriales para :
El doble factorial de un número negativo par no está definido.
Algunas identidades de los dobles factoriales:
Implementación en lenguajes de programación
A continuación se presentan dos implementaciones de la función factorial en distintos lenguajes de programación. La primera, en Fortran, es iterativa, es decir, realiza un bucle en el que se multiplica una variable temporal por cada número natural entre 1 y n, mientras que la otra (en C) es recursiva, por lo que la función factorial se llama a sí misma con un argumento cada vez menor hasta llegar al caso base 0!=1.
Ejemplos
En lenguaje de programación Visual Basic .NET:
Dim N As Integer ' Valor dado
Dim C As Integer 'Contador
Dim R As Double ' Resultado
Console.WriteLine("Introduzca un número entero")
N = CInt(Console.ReadLine())
C = 0
R = 1
Do While C < N
C += 1
R = C * R
Loop
Console.WriteLine(R)
En lenguaje de programación Pascal:
! Factorial en Pascal por medio de una función.
Program factoriales;
Var
j,m:integer;
function factorial(n:integer):integer;
Var
i,a:integer;
Begin
a:=1;
for i:=1 to (n) do
begin
a:=a*i;
end;
factorial:=a;
end;
Begin
writeln('Ingrese el numero maximo');
readln(m);
for j:=1 to m do
writeln(j,' y su factorial es: ',factorial(j));
readln(m);
end.
En lenguaje de programación Fortan:
! Factorial en Fortran 90 - implementación iterativa
function factorial(n)
integer, intent(in) :: n
integer :: factorial
integer :: i
factorial = 1
do i = 2, n
factorial = factorial * i
end do
end function
! Uso
write (*,*) factorial(5)
! 120
En lenguaje de programación C
// Factorial en C99 - implementación recursiva
unsigned int factorial(unsigned int n) {
if (n > 0)
return n * factorial(n-1);
else return 1;
}
// Uso
printf("%u", factorial(5));
// 120
En lenguaje de programación Python:
# Factorial en python como implementación recursiva.
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# Uso
print factorial(5)
# 120
En lenguaje de programación Java
import java.applet.*;
import java.awt.event.*;
import java.awt.*;
public class Factorial extends Applet implements ActionListener{
Label l1,l2;
TextField t1,t2;
Button b;
public Factorial(){//Funcion constructora
l1 = new Label("Numero");
t1 = new TextField(2);
l2 = new Label("Factorial");
t2 = new TextField(2);
b = new Button("Calcular!");
add(l1);
add(t1);
add(b);
add(l2);
add(t2);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
int n = Integer.parseInt(t1.getText());
if (n > 1){
for(int i=n-1; i!= 0;){//inicio del ciclo
n = n * i;
i--;
} //fin del ciclo for
t2.setText(""+n);
}
else{
t2.setText("1");
}
}
}
En lenguaje de programación Javascript
var numero = prompt ("insertar numero");
var resultado = numero;
for (var i=1 ; i < numero; i++)
{resultado *= i}
alert (resultado)
Véase también
Enlaces externos
- Algoritmos interesantes(en inglés)
- http://factorielle.free.fr
- Calculadora de factoriales - Hasta 200.000!