You are on page 1of 8

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 Mtodo del cuadrado medio-Matlab

Buscar
Volver
Nuevo Tema
<<>>

arbol
Vista:
ayuda con el Mtodo del cuadrado medio-Matlab
manuel ruiz (22/03/2011 11:31:52)5.146 visitas
6 respuestas
ayuda con el Mtodo del cuadrado medio-Matlab
manuel ruiz (22/03/2011 12:00:34)
ayuda con el Mtodo del cuadrado medio-Matlab
JOSE CABALLERO (22/03/2011 16:25:48)
ayuda con el Mtodo del cuadrado medio-Matlab
manuel ruiz (22/03/2011 21:09:04)
ayuda con el Mtodo del cuadrado medio-Matlab
tomas (04/10/2014 06:00:10)
ayuda con el Mtodo del cuadrado medio-Matlab
JOSE JEREMIAS CABALLERO (04/10/2014 14:02:42)
ayuda con el Mtodo del cuadrado medio-Matlab
Jenny (07/03/2015 18:54:13)
ayuda con el Mtodo del cuadrado medio-Matlab
Publicado por manuel ruiz (3 intervenciones) el 22/03/2011 11:31:52

Hola, estoy haciendo un cdigo en matlab. El problema es generar nmero seudoaleatorio por medio del mtodo del

cuadrado medio.

Su idea consista en tomar el cuadrado del nmero aleatorio anterior y extraer los dgitos

del medio; por ejemplo, si estamos generando nmeros de 4 dgitos y partimos de 5729

(semilla) , lo elevamos al cuadrado, obtenemos 32821441; el prximo nmero se forma tomando

los 4 dgitos centrales 8214 y repitiendo el proceso se obtienen los sucesivos nmeros

pseudoaleatorios

Mi cdigo 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 dgitos centrales. Para eso, tenemos que transformar al

%nmero 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 nmero a cadena

x1=ystr(3:6); %Obtengo los 4 dgitos centrales

end

if y < 9000
ystr=num2str(y); %Paso el nmero a cadena

ystr=strcat('0',ystr); % Le aado un cero al principio de la cadena.

x1=ystr(2:5); %Obtengo los 4 dgitos centrales

end

u1=str2num(x1); %Convierto la cadena a nmero

x0=u1; %guardo la siguiente semilla.

u1=u1/10000 %Divido para obtener el nmero aleatorio entre 0 y 1

end

el problema es que hasta 64 nmeros me sale bien, pero luego me dice exceso de matrix, pero ese nmero se debera de
corregir en el segundo if, de echo manual sale
Gracias por vuestra atencin.
Valora esta pregunta

0
Responder

ayuda con el Mtodo 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


Transcripcin de METODO DE MULTIPLICADOR CONSTANTE
Este algoritmo no congruencial es similar al algoritmo de productos medios. Los siguientes son los
pasos necesarios para generar nmeros pseudo aleatorios con el algoritmo de multiplicador
constante.
Pasos para generar nmeros pseudo aleatorios con el algoritmo de multiplicador constante
PASO 1
Seleccionar una semilla (X0) con D dgitos (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 dgitos 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 dgitos (D > 3)
PASO 3
Sea Y0= a*X0; sea X1= los D dgitos del centro, y sea ri= 0.D dgitos del centro
PASO 4
Sea Yi= a*Xi; sea Xi+1= los D dgitos del centro, y sea ri+1= 0.D dgitos del centro para toda i= 1,
2, 3,, n.

PASO 5
Repetir el paso 4 hasta obtener los n nmeros ri deseados

PRODUCTOS MEDIOS
MTODO MONTE CARLO
El Mtodo Montecarlo es un mtodo estadstico numrico, usado para aproximar expresiones
matemticas complejas y costosas de evaluar con exactitud.

El mtodo es en realidad una clase de mtodos que comparten el siguiente conjunto de caractersticas:

Define un dominio de entradas posibles


Generan entradas aleatoriamente en el dominio definido
Realizan clculos determinsticos usando las entradas generadas
Consolidan los resultados de los clculos 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 dgitos, adems, en lugar de elevarlas al cuadrado las
semillas se multiplican y del producto se seleccionan los D dgitos del dentro, los cuales forman el
primer nmero pseudoaleatorio ri= 0 D dgitos.

Para ver el ejercicio realizado en Excel, dar clic aqu.

2. ALGORITMO DE CUADRADOS MEDIOS:

Este algoritmo no congruencial requiere un nmero entero detonador (llamado semilla) con D dgitos,
el cual es elevado al cuadrado para seleccionar del resultado los D dgitos del centro; el primer
nmero ri se determina simplemente anteponiendo el "0." a esos dgitos. Para obtener el segundo ri se
sigue el mismo procedimiento, slo que ahora se elevan al cuadrado los D dgitos del centro que se
seleccionaron para obtener el primer ri. Este mtodo se repite hasta obtener n nmeros ri. A
continuacin se presentan con ms detalle los pasos para generar nmeros con el algoritmo de
cuadrados medios.

Y0 = X0^2

Para ver el ejercicio realizado en Excel, dar clic aqu.

3. ALGORITMO DE PRODUCTOS MEDIOS:

La mecnica de generacin de nmeros 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 dgitos; adems, en lugar de elevarlas al
cuadrado, las semillas se multiplican y del producto se seleccionan los D dgitos del centro, los cuales
formarn el primer nmero pseudo aleatorio ri = 0.D dgitos. Despus se elimina una semilla, y la
otra se multiplica por el primer nmero de D dgitos, para luego seleccionar del producto los D dgitos
que conformarn un segundo nmero ri. Entonces se elimina la segunda semilla y se multiplican el
primer nmero de D dgitos por el segundo nmero de D dgitos; del producto se obtiene el tercer
nmero ri. Siempre se ir eliminando el nmero ms antiguo, y el procedimiento se repetir hasta
generar los n nmeros 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 nmeros enteros por medio de la siguiente
ecuacin recursiva:

X1+1 = (aX0 + b) mod(m)

donde X0 es la semilla, a es la constante multiplicativa, b es una constante aditiva y m es el


mdulo; X0 > 0, a > 0, b > 0 y m > 0 deben ser nmeros enteros. La operacin "mod m" significa
multiplicar Xi por a, sumar b y dividir el resultado entre m para obtener el residuo Xi+1. Es importante
sealar que la ecuacin recursiva del algoritmo congruancial lineal genera una secuencia de
nmeros S = {0,1,2,3,...,m-1}, y que para obtener nmeros pseudo aleatorios en el intervalo (0,1) se
requiere la siguiente ecuacin:
ri = Xi/(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 ecuacin recursiva es:

Y0 = (X0*a) mod(m)

En comparacin con el algoritmo congruencial lineal, la ventaja del algoritmo mutiplicativo es que
implica una operacin menos a realizar. Los parmetros de arranque de este algoritmo
son X0*a y m, todos los cuales deben ser nmeros enteros y mayores que cero. Para transformar los
nmeros X en el intervalo (0,1) se usa la ecuacin ri = Xi/(m-1). Las condiciones que deben cumplir
los parmetros para que el algoritmo congruencial multiplicativo alcance su mximo periodo son:

m = 2^g
a = 3+8k o a = 5+8k
k = 0,1,2,3,...
X0 debe ser un nmero 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 nmeros enteros X1, X2, X3, X4,...,Xn para
generar una nueva secuencia de nmeros enteros que empieza en Xn+1, Xn+2, Xn+3, Xn+4, ... Su
ecuacin recursiva es:

Xi = (Xi-1 + Xi-n) mod(m)

Los nmeros ri puede ser generados mediante la ecuacin

ri = Xi/(m-1)

Para ver el ejercicio realizado en Excel, dar clic aqu.


7. ALGORITMO CONGRUENCIAL CUADRTICO:
Este algoritmo tiene la siguiente ecuacin recursiva:

Y0 = (aXi^2 + bXi + c) mod(m)

En este caso, los nmeros ri pueden ser generados con la ecuacin ri = Xi/(m-1). Las condiciones
que deben cumplir los parmetros m, a, b y c para alcanzar un periodo mximo de N = m son:

m = 2^g
a debe ser un nmero par
c debe ser un nmero impar
g debe ser entero
(b - 1) mod(u) = 1

Para ver el ejercicio realizado en Excel, dar clic aqu.

You might also like