CONGRUENCIAL function [ x] = congruencial2( a,b,c,n,m ) %El metodo congruencial mixto genera una secuencia de numeros aleatorios %en la cual el proximo numero aleatorio es determinado a partir del numero %generado. %Se parte de una semilla a >0,b la constante multiplicativa, % c la contstante aditiva y m el modulo. %vector(1)=mod(b*a+c,m); vector(1)=mod(b*a+c,m);; for k=2:n vector(k)=mod(b*vector(k-1)+c,m) ; x=vector; end
end
6)
Matlab - ayuda con el Método del cuadrado medio-Matlab Buscar
Volver Nuevo Tema <<>>
arbol
Vista: ayuda con el Método del cuadrado medio-Matlab manuel ruiz (22/03/2011 11:31:52)5.146 visitas 6 respuestas ayuda con el Método del cuadrado medio-Matlab manuel ruiz (22/03/2011 12:00:34) ayuda con el Método del cuadrado medio-Matlab JOSE CABALLERO (22/03/2011 16:25:48) ayuda con el Método del cuadrado medio-Matlab manuel ruiz (22/03/2011 21:09:04) ayuda con el Método del cuadrado medio-Matlab tomas (04/10/2014 06:00:10) ayuda con el Método del cuadrado medio-Matlab JOSE JEREMIAS CABALLERO (04/10/2014 14:02:42) ayuda con el Método del cuadrado medio-Matlab Jenny (07/03/2015 18:54:13)
ayuda con el Método del cuadrado medio-Matlab
Publicado por manuel ruiz (3 intervenciones) el 22/03/2011 11:31:52 Hola, estoy haciendo un código en matlab. El problema es generar número seudoaleatorio por medio del método del cuadrado medio.
Su idea consistía en tomar el cuadrado del número aleatorio anterior y extraer los dígitos del medio; por ejemplo, si estamos generando números de 4 dígitos y p artimos de 5729 (semilla) , lo elevamos al cuadrado, obtenemos 32821441; el próximo número se forma tomando los 4 dígitos centrales 8214 y repitiendo el proceso se ob tienen los sucesivos números pseudoaleatorios
Mi código es el siguiente:
clear all x0=3234 for I=1:100 %realizar el ciclo 100 veces y=x0^2; %Ahora tenemos que tomar los 4 dígitos centrales. Para eso, tenemos que transformar al %número ‘y’ en la cadena %de caracteres ‘ystr’. Una vez que tenemos la cadena de caracteres, podemos
%manipularla como si fuera un vector: if y > 9000 ystr=num2str(y); %Paso el número a cadena x1=ystr(3:6); %Obtengo los 4 dígitos centrales end if y < 9000 ystr=num2str(y); %Paso el número a cadena ystr=strcat('0',ystr); % Le añado un cero al principio de la cadena. x1=ystr(2:5); %Obtengo los 4 dígitos centrales end u1=str2num(x1); %Convierto la cadena a número x0=u1; %guardo la siguiente semilla. u1=u1/10000 %Divido para obtener el número aleatorio entre 0 y 1 end
el problema es que hasta 64 números me sale bien, p ero luego me dice exceso de matrix, pero ese número se debería de corregir en el segundo if, de echo manual sale
Gracias por vuestra atención. Valora esta pregunta
0 Responder
ayuda con el Método del cuadrado medio-Matlab Publicado por manuel ruiz (3 intervenciones) el 22/03/2011 12:00:34 vale, lo a cabo de solucionar, es solo cambiando if y > 9000 por if y > 90000 y if y < 9000 por if y < 90000
perdonen las molestias
Informar sobre uso indebido Transcripción de METODO DE MULTIPLICADOR CONSTANTE Este algoritmo no congruencial es similar al algoritmo de productos medios. Los siguientes son los pasos necesarios para generar números pseudo aleatorios con el algoritmo de multiplicador constante. Pasos para generar números pseudo aleatorios con el algoritmo de multiplicador constante PASO 1 Seleccionar una semilla (X0) con D dígitos (D > 3) EJEMPLO Generar los primeros 5 numeros ri a partir de la semilla Xo=9803 y con la constante a= 6965 resultado (a) (X0) (a) (X0) x1 ri (6965) (9803)= 68277895 2778 0.2778 (6965) (2778)= 19348770 3487 0.3487 (6965) (3487)= 24286955 2869 0.2869 (6965) (2869)=19982585 9825 0.9825 (6965) (9825)= 68431125 4311 0.4311 NOTA Si no es posible obtener los D dígitos del centro del numero Yi, agregue ceros a la izquierda del numero Yi
ALGORITMO DE MULTIPLICADOR CONSTANTE
MULTIPLICADOR CONSTANTE PASO 2 Seleccionar una constante (a) con D dígitos (D > 3) PASO 3 Sea Y0= a*X0; sea X1= los D dígitos del centro, y sea ri= 0.D dígitos del centro PASO 4 Sea Yi= a*Xi; sea Xi+1= los D dígitos del centro, y sea ri+1= 0.D dígitos del centro para toda i= 1, 2, 3,…, n.
PASO 5 Repetir el paso 4 hasta obtener los n números ri deseados
PRODUCTOS MEDIOS
MÉTODO MONTE CARLO El Método Montecarlo es un método estadístico numérico, usado para aproximar expresiones matemáticas complejas y costosas de evaluar con exactitud. El método es en realidad una clase de métodos que comparten el siguiente conjunto de características:
Define un dominio de entradas posibles Generan entradas aleatoriamente en el dominio definido Realizan cálculos determinísticos usando las entradas generadas Consolidan los resultados de los cálculos individuales en el resultado final.
1. ALGORITMO DE MULTIPLICADOR CONSTANTE: Es similar al algoritmo de productos medios. La diferencia entre ambos radica en que el algoritmo de productos requieren dos semillas, ambas con D dígitos, además, en lugar de elevarlas al cuadrado las semillas se multiplican y del producto se seleccionan los D dígitos del dentro, los cuales forman el primer número pseudoaleatorio ri= 0 D dígitos. Para ver el ejercicio realizado en Excel, dar clic aquí.
2. ALGORITMO DE CUADRADOS MEDIOS: Este algoritmo no congruencial requiere un número entero detonador (llamado semilla) con D dígitos, el cual es elevado al cuadrado para seleccionar del resultado los D dígitos del centro; el primer número r i se determina simplemente anteponiendo el "0." a esos dígitos. Para obtener el segundo r i se
sigue el mismo procedimiento, sólo que ahora se elevan al cuadrado los D dígitos del centro que se seleccionaron para obtener el primer r i. Este método se repite hasta obtener n números r i. A continuación se presentan con más detalle los pasos para generar números con el algoritmo de cuadrados medios. Y 0 = X 0^2
Para ver el ejercicio realizado en Excel, dar clic aquí.
3. ALGORITMO DE PRODUCTOS MEDIOS: La mecánica de generación de números pseudo aleatorios se este algoritmo no congruencial es similar a la del algoritmo de cuarrados medios. La diferencia entre ambos radica en que el algoritmo de productos medios requiere dos semillas, ambas con D dígitos; además, en lugar de elevarlas al cuadrado, las semillas se multiplican y del producto se seleccionan los D dígitos del centro, los cuales formarán el primer número pseudo aleatorio r i = 0. D dígitos. Después se elimina una semilla, y la otra se multiplica por el primer número de D dígitos, para luego seleccionar del producto los D dígitos que conformarán un segundo número r i. Entonces se elimina la segunda semilla y se multiplican el primer número de D dígitos por el segundo número de D dígitos; del producto se obtiene el tercer número r i. Siempre se irá eliminando el número más antiguo, y el procedimiento se repetirá hasta generar los n números pseudo aleatorios.
Y0 = X0*Xi
Para ver el ejercicio realizado en Excel, dar clic aquí.
4. ALGORITMO LINEAL: El algoritmo congruencial lineal genera una secuencia de números enteros por medio de la siguiente ecuación recursiva:
X 1+1 = (aX 0 + b) mod(m)
donde X0 es la semilla, a es la constante multiplicativa, b es una constante aditiva y m es el módulo; X 0 > 0, a > 0, b > 0 y m > 0 deben ser números enteros. La operación "mod m" significa multiplicar X i por a, sumar b y dividir el resultado entre m para obtener el residuo X i+1. Es importante señalar que la ecuación recursiva del algoritmo congruancial lineal genera una secuencia de números S = {0,1,2,3,...,m-1}, y que para obtener números pseudo aleatorios en el intervalo (0,1) se requiere la siguiente ecuación:
r i = X i/(m-1)
Para ver el ejercicio realizado en Excel, dar clic aquí.
Clase: 08/09/2014
5. ALGORITMO CONGRUENCIAL MULTIPLICATIVO: El algoritmo congruencial multiplicativo surge del algoritmo congruencial linela cuando b = 0. Entonces la ecuación recursiva es:
Y 0 = ( X 0*a) mod(m)
En comparación con el algoritmo congruencial lineal, la ventaja del algoritmo mutiplicativo es que implica una operación menos a realizar. Los parámetros de arranque de este algoritmo son X 0*a y m, todos los cuales deben ser números enteros y mayores que cero. Para transformar los números X en el intervalo (0,1) se usa la ecuación r i = X i/ (m-1). Las condiciones que deben cumplir los parámetros para que el algoritmo congruencial multiplicativo alcance su máximo periodo son: m = 2^ g a = 3+8k o a = 5+8k k = 0,1,2,3,... X 0 debe ser un número impar g debe ser entero, Para ver el ejercicio realizado en Excel, dar clic aquí.
6. ALGORITMO CONGRUENCIAL ADITIVO: Este algoritmo requiere una secuencia previa de n números enteros X 1, X2, X3, X4,...,Xn para generar una nueva secuencia de números enteros que empieza en X n+1, Xn+2, Xn+3, Xn+4, ... Su ecuación recursiva es: X i = ( X i-1 + X i-n) mod(m)
Los números r i puede ser generados mediante la ecuación i (m-1) r i = X /
Para ver el ejercicio realizado en Excel, dar clic aquí.
7. ALGORITMO CONGRUENCIAL CUADRÁTICO: Este algoritmo tiene la siguiente ecuación recursiva:
Y 0 = (aXi^2 + bXi + c) mod(m)
En este caso, los números r i pueden ser generados con la ecuación r i = X i/ (m-1). Las condiciones que deben cumplir los parámetros m, a, b y c para alcanzar un periodo máximo de N = m son:
m = 2^g a debe ser un número par c debe ser un número impar g debe ser entero
(b - 1) mod(u) = 1 Para ver el ejercicio realizado en Excel, dar clic aquí.