Documente Academic
Documente Profesional
Documente Cultură
28
INDICE
1.1 Aplicacin al modelado de problemas
.. 3 1.2 Nmeros de Fibonacci ..4 1.3 Nmeros de Cataln ..7 1.4 Torre de Hani .10 1.5 Particiones de nmeros conjuntos13 1.6 Nmeros de Stirling primera clase.18 y y
segunda
28
28
Paso 3: Se expresan todas las condiciones implcitamente establecidas por la naturaleza de las variables: que no puedan ser negativas, que sean enteras, que solo puedan tomar determinados valores,... son nmeros enteros, o son booleanos,...
CONCLUSIONES: El modelado de problemas nos ayuda mucho para tener en prctica como resolver problemas y saber qu hacer en un problema cotidiano. Saber este proceso nos facilita desde saber que podemos hacer cuando nos enfrentamos algn problema y as saber qu hacer cuando estamos en l, o simplemente saber algn proceso o generar algn proceso.
SUCESION FIBONACCI La sucesin de Fibonacci es una secuencia de nmeros enteros descubierta por matemticos hindes hacia el ao 1135 y descrita por primera vez en europa gracias a Fibonacci (Leonardo de Pisa). La sucesin se describe de la forma sigueinte: F(0)=0; F(1)=1; F(n)=F(n-1)+F(n-2) Lo..que..da..la..recurrenciasiguiente: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 Aparte de que esta sucesin tiene varias propiedades interesantes, como que se puede formar cualquier nmero natural mediante la suma
28
de trminos de la sucesin, sin que ninguno se repita, lo ms curioso de esta sucesin es su presencia en la naturaleza. La sucesin de Fibonacci est muy ligado a la vida y estos hechos lo demuestran: Los machos de una colmena de abejas tienen un rbol genealgico que cumple con esta sucesin. El hecho es que los znganos, el macho de la abeja, no tiene padre (1), pero s que tiene una madre (1, 1), dos abuelos, que son los padres de la reina (1, 1, 2), tres bisabuelos, ya que el padre de la reina no tiene padre (1, 1, 2, 3), cinco tatarabuelos (1, 1, 2, 3, 5), ocho tataratatarabuelos (1, 1, 2, 3, 5, 8) y as sucesivamente, cumpliendo con la sucesindeFibonacci. En la mano humana tambin se encuentra esta recurrencia, la longitud del metacarpo es la suma de las dos falanges proximales y la longitud de la primera falange es la suma de las dos..falanges..distales. El nmero de ptalos de una flor es generalmente un trmino de Fibonacci. Hay flores con 2 ptalos, 3, 5, 8, 13, 21, 34, pero muy rara vez es un nmero que no est en esta sucesin.
28
#include <iostream.h> #include <stdio.h> #include <conio.h> /* Programa para calcular la serie del fibonacci por medio de un ciclo */ void FibonacciNormal(int Num) { long i,b1=1,b2=0,Aux; for (i=1;i<=Num;i++) { Aux=b2; printf("%ld + %ld = %ld\n\r",b1,b2,b1+b2); b2= b1 + b2; b1= Aux; } }
void main() { int Numero; int Fib; clrscr(); printf("\n\n*** PROGRAMA PARA CALCULAR E IMPRIMIR LA SERIE DEL FI BONACCI *** \n\n "); printf("Cuantos dgitos deseas calcular: "); cin >> Numero; FibonacciNormal(Numero); printf("\n\n\rPresiona una tecla..."); getch(); } EJECUCI ON
28
Fig.1 Esquema donde se representan las pruebas obtenidas aplicando el cdigo en c++ correctamente.
CONCLUSION Las extraas apariciones de las series de fibonacci han dado lugar a interminables especulaciones y anlisis, tenemos muchas aplicaciones para esta serie como en los caparazones de caracoles, manifestaciones en artes plsticas, obras poticas entre muchas ms.
NUMEROS DE CATALAN En combinatoria, los nmeros de cataln forman una secuencia de nmeros naturales que aparece en varios problemas de conteo que habitualmente son recursivos. Obtienen su nombre del matemtico belga Eugne Charles Cataln (18141894). El n-simo nmero de cataln se obtiene, binomiales, a partir de la siguiente frmula: aplicando coeficientes
28
Esta otra expresin muestra que Cn es un nmero natural, lo cual no resulta obvio a priori mirando la primera frmula dada. Los nmeros de cataln satisfacen la siguiente relacin de recurrencia:
Y tambin satisfacen:
Que puede ser una forma ms eficiente de calcularlos. La expresin en forma de recursin, seria:
Considerando que el cociente entre el n-simo nmero de Cataln y la expresin de la derecha tiende hacia 1 cuando n (esto puede probarse usando la frmula de Stirling).
PROGRAMA DE NUMERO CATALAN EN C++ #include <stdio.h> int Catalan(int n) { if(n<=0) return 1;
28
else return (2*(2*n-1)*Catalan(n-1))/(n+1); } void main( ) { int n; printf(Que numero Cataln quieres calcular?); scanf(%d,&n); printf(Cataln(%d) = %d,n,Catalan(n)); printf(\n); } EJECUCION
Fig.2 En esta figura se muestra la prueba realizada con el nmero cataln CONCLUSION Con este tipo de nmeros tengo presente que se utilizan para reducir problemas numricos de distintos tipos.
TORRE DE HANOI Las Torres de Hani es un rompecabezas o juego matemtico inventado en 1883 por el matemtico francs duard Lucas.1 Este solitario se trata
28
de un juego de ocho discos de radio creciente que se apilan insertndose en una de las tres estacas de un tablero. El objetivo del juego es crear la pila en otra de las estacas siguiendo unas ciertas reglas. El problema es muy conocido en laciencia de la computacin y aparece en muchos libros de texto como introduccin a la teora de algoritmos. El juego, en su forma ms tradicional, consiste en tres varillas verticales. En una de las varillas se apila un nmero indeterminado de discos (elaborados de madera) que determinar la complejidad de la solucin, por regla general se consideran ocho discos. Los discos se apilan sobre una varilla en tamao decreciente. No hay dos discos iguales, y todos ellos estn apilados de mayor a menor radio en una de las varillas, quedando las otras dos varillas vacantes. El juego consiste en pasar todos los discos de la varilla ocupada (es decir la que posee la torre) a una de las otras varillas vacantes. Para realizar este objetivo, es necesario seguir tres simples reglas: 1. Slo se puede mover un disco cada vez.
2. Un disco de mayor tamao no puede descansar sobre uno ms pequeo que l mismo. 3. Slo puedes desplazar el disco que se encuentre arriba en cada varilla. Existen diversas formas de realizar la solucin final, todas ellas siguiendo estrategias diversas. Se cuenta que un templo de Benars (Uttar Pradesh, India), se encontraba una cpula que sealaba el centro del mundo. All estaba una bandeja sobre la cual existan tres agujas de diamante. En una maana lluviosa, un rey mand a poner 64 discos deoro, siendo ordenados por tamao: el mayor en la base de la bandeja y el menor arriba de todos los discos.Tras la colocacin, los sacerdotes del templo intentaron mover los discos entre las agujas, segn las leyes que se les haban entregado: "El sacerdote de turno no debe mover ms de un disco a la vez, y no puede situar un disco de mayor dimetro encima de otro de menor dimetro". Hoy no existe tal templo, pero el juego an perdur en el tiempo...
28
Otra leyenda cuenta que Dios al crear el mundo, coloc tres varillas de diamante con 64 discos en la primera. Tambin cre un monasterio con monjes, los cuales tienen la tarea de resolver esta Torre de Hani divina. El da que estos monjes consigan terminar el juego, el mundo acabar. No obstante, esta leyenda result ser un invento publicitario del creador del juego, el matemtico duard Lucas. En aquella poca, era muy comn encontrar matemticos ganndose la vida de forma itinerante conjuegos de su invencin, de la misma forma que los juglares hacan con su msica. No obstante, la falacia result ser tan efectista y tan bonita, que ha perdurado hasta nuestros das. Adems, invita a realizarse la pregunta: "si la leyenda fuera cierta, cundo ser el fin del mundo?". El mnimo nmero de movimientos que se necesita para resolver este problema es de 264-1. Si los monjes hicieran un movimiento por segundo, los 64 discos estaran en la tercera varilla en algo menos de 585 mil millones de aos. Como comparacin para ver la magnitud de esta cifra, la Tierra tiene como 5 mil millones de aos, y el Universo entre 15 y 20 mil millones de aos de antigedad, slo una pequea fraccin de esa cifra. == Origen == problema El problema matemtico de las torres de Hanoi fue inventada por Edward Lucas. Se publica en el volumen 3 de hisMathematical Recreationspublished pstumamente en 1892. Anunci que este problema se debe a uno de sus amigos, N. Claus de Siam, allegedlyProfessor en el Colegio deLi-Sou-Stian (doble anagrama ofLucasAmiens, su lugar de nacimiento, y San Luis de la escuela secundaria, donde ense , Lucas). Bajo el ttulo "LaBrahminsfall, Lucas dice que" N. Claus de Siam ha visto en sus viajes a los escritos del famoso hierro-hierro-Tam-Tam, en el gran templo de Benars, por debajo de la cpula que marca el centro del mundo, tres agujas de diamante, plantado en una losa de bronce, de un codo de altura y tan grueso como el cuerpo de una abeja. En una de estas agujas, Dios puso en el principio de los tiempos, 64 discos de oro puro, el metal de base ms amplia, y otras ms estrechas a la litera de arriba. Es la torre sagrada Brahma. Noche y da, los sacerdotes se siguen en los pasos del altar, dedicada al transporte de la vuelta de la primera
28
aguja en la tercera, sin apartarse de las reglas fijas que acabamos de indicar, que fueron impuestas por Brahma . Cuando todo est terminado, la torre se caer y los brahmanes, y esto ser el fin del mundo! ". Como se seala ms adelante, un juego de 64 unidades requiere un mnimo de 2 exp {{| 64}} -1 desplazamientos. Si se asume que la culpa de 1 segundo para mover un disco, que es 86.400 viajes por da, al final del juego se llevara a cabo despus de 213.000 millones de das, equivalentes a 584.5 mil millones de aos, o 43 veces la edad estimada del Universo (13.7 mil millones aos segn algunas fuentes)
PROGRAMA DE LA TORRE DE HANOI EN C++ #include <stdio.h> #include <stdlib.h> void hanoi(char inicial, char central, char final, int n){ printf(\"\\n =================================\\n\\n\"); printf(\"ini= %c cent= %c fin= %c n= %d \\n\",inicial,central, final,n); if(n==1) { printf(\" mover %d desde %c hasta %c\\n\",n,inicial,final); } else{
28
hanoi(inicial,final,central, n-1); printf(\" mover %d desde %c hasta %c\\n\",n,inicial,final); hanoi(inicial,final,central, n-1); } } main(){ hanoi(\'A\',\'B\',\'C\',3); printf(\"\\n\\n fin prog\\n\"); system(\"PAUSE\"); return 0; } EJECUCION
CONCLUSION
28
En conclusin tenemos que la torre de Hani consiste en pasar por todos los discos de una extremidad a otra sin que un disco mayor que encima de uno mas pequeo. Esta torre posee varias formas para resolverse, una d ellas es la recursiva la cual podemos decir que es la ms limitada en cuanto al tiempo de realizacin ya que su ejecucin depender de algunos factores para hacerla ms fcil y eficaz.
En matemticas discretas, una particin de un entero positivo n es una forma de descomponer n como suma de enteros positivos. Dos sumas se considerarn iguales si solo difieren en el orden de los sumandos. De modo ms riguroso, una particin de un nmero entero positivo n es una secuencia de enteros positivos (1,2,...,m) tal que . Las posibles particiones de un entero n pueden visualizarse con los diagramas conocidos como diagramas de Ferrers o diagramas de Young.
EJEMPLO: Las cinco particiones de 4 seran: 4=3+1=2+2=2+1+1=1+1+1+1 Y las once particiones de 6 son: 6 = 5 + 1 = 4 +2 = 4 + 1 + 1 = 3 + 3 = 3 + 2 + 1 = =3+1+1+1=2+2+2=2+2+1+1=2+1+1+1+1=1+ 1 + 1 + 1 + 1 +1 FUNCION DE PARTICION: a funcin de particin p(n) representa el nmero p de posibles particiones de un nmero entero positivo n; as, p(4) = 5 y p(6) = 11. Por
28
convenio, se define p(0) = 1, p(n) = 0 para n negativo. Los valores de esta funcin forman la (sucesin A000041 enOEIS). Los valores de p(n) crecen muy rpidamente con el valor de n. De hecho
10
void main() { C = 0; While (c <= 15) { clrscr(); cout<<"------------------------------------\n"; cout<<"*----- Particion de un numero -----*\n"; cout<<"------------------------------------\n\n\n";
28
cout<<"Ingrese el numero qe desee para calcular su nmero de particiones : "; cin >>n; if (n == 0) cout<<"\n El numero de particiones es 0"; else cout<< "\n EL numero de particiones de ese nmero es: "<< np(n); c++; getch(); } abort(); } double np(double x) { Double r r = fmod(x, 2); if (r == 0) if (x == 2) return 2; else - 1); else if (x == 1) return 1; else return 2 * np (x - 1) - np(x - 2); } EJECUCION return ((2 * np (x-1)) - np(x-2)) + ((x/2)
28
Fig. 4. En esta figura se muestra la prueba realizada con el numero 10 para la particin de nmeros. PARTICIONES DE CONJUNTOS // este programa mostrara el resultado de un conjunto de a cuerdo al nmero que se quiera calcular// #include <iostream.h> #include <conio.h>
long int num; long int h = 1; long double p(long int n,long int k); long double f(long int n); void main() { cout<<"\n\n\n\n\n\t*** PROGRAMA PARA CALCULAR EL CONJUNTO DE UN NUMERO *** \n\n"; getch(); while ( h < 10) {
28
clrscr(); cout<<"\t\n\n INTRODUZCA UN NUMERO: "; cin>>num; cout<<"\n\t\t EL CONJUNTO DE "<<num<<" ES "<<p(num 1,num - 1); cout<<"\n\t\t-----------------------"; getch(); h ++; }
} long double p(long int n,long int k) { if ((n) <= 1) return 1; else { return((n - 1) * p (n - 1, k)) + p( n - 1, k - 1);
} } EJECUCION
28
Fig. 5. En esta imagen se muestra la prueba realizada con el nmero 10 de particiones de conjuntos.
CONCLUSION Concluimos que las funciones recursivas son una clase de funciones de los nmeros naturales que son computables en un sentido intuitivo. De hecho en teora de la contabilidad se demuestra que las funciones recursivas son precisamente las funciones que puede ser calculadas con el formalismo de computo mas general conocido como lo son las maquinas de touring.
NUMEROS DE STIRLING PRIMERA Y SEGUNDA CLASE Los nmeros de Stirling se basan en la descomposicin de potencias. Si tenemos una potencia factorial de una variable, esta puede descomponerse en una combinacin lineal de potencias ordinarias de la variable x es decir: un polinomio de grado n sin trmino independiente.
28
Los coeficientes asociados a la potencia n se denominan nmeros de Stirling de primera clase. De forma semejante una potencia entera -n- de una variable puede descomponerse en combinacin lineal de potencias factoriales cuyo mximo grado es n. y los coeficientes asociados se denominan nmeros de Stirling de segunda clase. Nmeros de..Stirling..de..primera..clase. Ejemplo Las permutaciones de 1,2 y 3 descompuestas en ciclos disjuntos son (1, 2, 3), (1, 3, 2), (1)(2,3), (2)(1,3), (3)(1,2) y (1)(2)(3). Por lo tanto: [(3@1)]=2, [(3@2)]=3, [(3@3)]=1 Propiedadeselementales: [(n@1)]=(n-1)! [(n@n)]=1 [(n@n-1)]=((n@2)) Relacinderecurrencia: [(n@k)]= [(n-1@k-1)]+(n-1)[(n-1@k)] Los Nmeros de Stirling de segunda especie, junto con los Nmeros de Stirling de primera especie, son uno de los dos tipos de Nmeros de Stirling. Comnmente aparecen en el estudio de la combinatoria, en la que se cuenta el nmero de permutaciones posibles. Los Nmeros de Stirling de segunda especie S(n,k) se definen como la cantidad de maneras que existen de hacer una particin de un conjunto de n elementos en k subconjuntos. La suma
28
(en particular, (x)0 = 1 porque se trata de un producto vaco), podemos caracterizar los nmeros de Stirling de segundo tipo mediante
A continuacin se muestra una tabla de valores para los Nmeros de Stirling de segunda especie: n\k 0 1 2 3 4 5 6 7 8 9 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 3 7 15 31 1 6 25 90 1 10 65 1 15 1 21 1 28 1 36 1 1 2 3 4 5 6 7 8 9
// este programa calcula el numero de Stirling de primera clase de acuerdo al nmero de particiones y el intervalo deseado// #include <iostream.h> #include <conio.h>
28
void main() { clrscr(); cout<<" \n\n Introduzca el numero de particiones que desea: "; cin>>n; cout<< " \n\n El intervalos de: " ; cin>>j; cout<< " \n\n STIRLING DE PRIMERA CLASE DE " << n << "\n\n es: " <<s1((n),(j)); getch(); }
return 1; else
28
} EJECUCION
Fig. 6. En esta figura se muestra la prueba realizada con el numero 5, intervalo 2 para Stirling de primera clase
SEGUNDA CLASE // este programa calcula el numero de Stirling de segunda clase de acuerdo al nmero de particiones y el intervalo deseado// #include <iostream.h> #include <conio.h>
void main() { clrscr(); cout<<" \n\n Introduzca el numero de particiones que desea: ";
cin>>n; cout<< " \n\n El intervalos de: " ; cin>>j; cout<< " \n\n STIRLING: " << n << "\n\n es: " <<s2((n),(j)); getch(); }
else if (k == 0) return 0;
28
} EJECUCION
Fig. 7. En esta figura se presenta la prueba realizada con el numero 5, intervalo de 2 para Stirling segunda clase.
CONCLUSION
Los nmeros de Stirling nos sirven para saber si dado el grupo de permutacin sobre un conjunto de n elementos identificar cuantas permutaciones se pueden componer exactamente en k ciclos.
PROBLEMA DE JOSEPHUS Cuenta una leyenda sobre el historiador Josephus Flavius que, durante las guerras judeo-romanas, l y otros 40 soldados judos quedaron atrapados en una cueva rodeados por los romanos.
28
Visto que tenan pocas posibilidades de salir con vida, decidieron suicidarse. Josephus y un amigo suyo no estaban muy felices con esa idea. As pues, propusieron que si haba que hacerlo, se hiciera con cierto orden: se colocaran en crculo y se iran suicidando por turno cada tres empezando a contar por uno determinado. Josephus y su amigo se colocaron de tal forma que fueron los dos ltimos y as, como ya nadie les poda llevar la contraria, decidieron seguir viviendo. La escena que sigue servir para simular esta historia, olvidndonos del amigo. Se trata de colocar a Josephus (punto amarillo) en la posicin adecuada para que sea el nico superviviente. Una vez se haya colocado a Josephus, pulsando sobre <Animar> se irn "suicidando" los puntos verdes (pasarn a rojo). Se empieza a contar desde el punto superior de la escena, ste ser el nmero uno, siguiendo el sentido de las agujas del reloj. El primero en caer ser el nmero 3, luego el nmero 6, ... El control "mseg" permite acelerar o no la animacin. Este problema se puede generalizar fcilmente a un nmero distinto de 41 y a un paso distinto de 3. El nmero mnimo de soldados judos que se permite en esta simulacin es 4 y el mximo, 80; y para el "paso", cualquier valor entero comprendido entre 1 y 99999. Al pulsar sobre el botn "Nuevo" estar listo nuestro nuevo problema. En Internet se puede encontrar mucha literatura sobre este problema, tanto en ingls como en espaol. En espaol tambin se le conoce con el nombre de "El problema de Jos".
PROGRAMA DE EL PROBLEMA DE JOSEPHUS EN C++ // este programa resolver el problema de Josephus de acuerdo con el nmero de personas que se introduzca y el numero de intervalos// #include <stdio.h> #include <conio.h>
#include <math.h>
28
#include <iostream.h> void main() { int max_total[200], num, intervalo, baja = 0, ultimo, cont = 0, muert1, muert, muert2, aux = 0; cout<<"NUMERO DE PERSONAS: "; cin>>num; cout<<"\nINTERVALO DE BAJA: "; cin>>intervalo; for( muert = 0; muert < num; muert ++) max_total [muert]= muert + 1; cout<<"\n\n ORDEN DE BAJA:"; while (baja! = num -1) { For (muert1 = 0; muert1 < num; muert1 ++) { If (max_total [muert1]! = 0) { Cont = cont + 1; If (cont == intervalo) { 0; aux + 1; \n"<<aux<<".\t"<<max_total[muert1]; al [muert1] = 0; max_tot
28
= baja + 1; }
baja
} } } for(muert2 = 0; muert2 < num; muert2 ++) { If (max_total [muert2]! = 0) Ultimo = max_total [muert2]; } cout<<"\n\n LA PERSONA NUMERO "<< ultimo<<" ES LA ULTIMA";; getch (); } EJECUCION
28
Fig. 8 En esta figura se muestra la prueba realizada con un numero de 8 personas y un interval de baja de 2.
CONCLUSIONES Concluimos que el problema de josephus es una clase de problema de sucesin y serie. De hecho, se llega a la conclusin de que es un problema terico que se encuentra en matemticas y ciencias de la computacin.
28