Sei sulla pagina 1di 19

PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE

Escuela de Ingeniera
Departamento de Ingeniera Estructural y Geotecnica
ICE 3743 Analisis Ssmico

Tarea 1
Caracterizacion del movimiento
ssmico

Leon Kolle
4 de septiembre de 2017
Problema 1. Considere terremotos de subduccion que ocurren en la zona de contacto entre la placa de
Nazca y la placa Sudamericana. La inclinacion de la zona de contacto de las placas es alrededor de 25 .
Considere que el lugar geometrico donde pueden ocurrir terremotos es una superficie rectangular de 500 km
de largo y la proyeccion horizontal tiene 120 km de ancho.

a)Considere la Ley de Atenuacion de Youngs et. al. (1997). Grafique el PGA esperado versus la distancia
r en un grafico log-log. Considere que el sitio esta ubicado en suelo. En el mismo grafico dibuje la ley de
atenuacian para Mw = 6, 7, 8, 9.

Para este problema escribimos un codigo en Python con el cual podemos calcular el valor esperado del
PGA segun la ley de ateniacion de Youngs et. al. La funcion escrita es graf(dist,x,y,Mw,roca,color,...)
en el cual le entregamos las coordenadas del hipocentro (x,y), la magnitud del sismo (Mw) para la cual
queremos hacer los calculos, el parametro (roca) que toma un valor de False en caso de que el sismo ocurra
en suelo y otros parametros que sirven al usuario para variar el formato de presentacion de los graficos. La
funcion puede ser revisada en el Anexo.

La funcion toma los inputs entregados por el usuario y calcula todas las coordenadas de profundidad z
para cada punto de la superficie discretizada. En este caso, debido a que el hipocentro se encuentra a una
profundidad mayor a 50km, es decir H = 65, 957km se supone que el sismo es de intraplaca, por lo que el
parametro Zt = 1. Para lograr el calculo requerido es necesario calcular la distancia entre el hipocentro y
cada uno de los puntos discretizados en la superficie. El eje coordenado fue posicionado segun la siguiente
figura:

El grafico pedido es el siguiente, con ambos ejes en escala logartmica:

1
Mw=6
Mw=7
Mw=8
Mw=9

PGA [g] 10 1

10 2

102 2 102 3 102


Distancia [km]

Los valores maximos y mnimos de distancia y PGA para cada magnitud sin redondear y hasta el cuarto
decimal son los siguientes:

Magnitud Distancia min. [km] Distancia max. [km] PGA min. [g] PGA max. [g]
6 82.46 344.96 0.0074 0.1014
7 82.46 344.96 0.0252 0.2324
8 82.46 344.96 0.0747 0.4280
9 82.46 344.96 0.1830 0.64574

b)Considere un sismo con hipocentro en el punto A. Determine el valor esperado del PGA en el sitio
mostrado en la figura para un sismo de Mw = 6, 7, 8 y 9. Para sus calculos considere que el punto mas
cercano a la ruptura equivale a la distancia al hipocentro y que el sitio esta ubicado en suelo.

Utilizando la funcion mencionada en el inciso anterior, obtenemos como output el siguiente arreglo para
cada uno de los puntos discretizados en la superficie de falla: out=[x,y,z,H,sigmalny,dist,PGA], donde
obtenemos las coordenadas del punto discretizado (x,y,z), la profundidad del hipocentro H, y los valores
de la desviacion estandar del logaritmo del PGA y el PGA sigmalny,PGA. Todas las unidades en [km] y
unidades de [g]. Este arreglo es obtenido para cada una de las magnitudes sismicas pedidas.

Ahora escribimos una nueva funcion buscar(dato,x,y,z) en la cual se entrega el output antes menciona-
do para cada una de las magnitudes sismicas pedidas y ademas las coordenadas del hipocentro. Esta funcion
nos devuelve un unico arreglo textttout=[x,y,z,sigma,distancia,PGA] en donde obtenemos las coordenadas
del hipocentro, la desviacion estandar, la distancia en [km] entre el sitio y el hipocentro y su valor de PGA
en unidades de [g]. Para cada sismo se obtiene los siguientes valores esperados de PGA sin redondear y hasta
la cuarta cifra decimal:

Magnitud PGA [g]


6 0.0072
7 0.0240
8 0.0690
9 0.1634

c) Para cada uno de los 4 sismos del problema anterior, determine la probabilidad de que el P GA 0,05g
en el sitio.
En este caso escribimos una funcion contador(datos,limiteInf) a la cual le entregamos un arreglo de
datos con las coordenadas de cada punto de la supercifie de falla discretizado y su valor de su PGA, y el

2
limite inferior del PGA. Esta funcion busca todos los valores de P GA 0, 05g y los contabiliza. Ademas,
contabiliza el numero total de datos en el arreglo. Luego, la probabilidad sera la razon entre estos dos ultimos
valores. Para cada magnitud se tiene lo siguiente:
Magnitud Probabilidad
6 9,56
7 65,08
8 100,00
9 100,00
Problema 2. Considere que la ubicacion del hipocentro en la zona de contacto de las placas del problema
anterior tiene una distribucion de probabilidades uniforme.

a) Utilizando el modelo de Cornell determine la probabilidad de que el P GA 0,3g en el sito. Para este
calculo discretize la fuente sismogenica con una malla de 10 km por 10 km (aproximadamente) y calcule la
integral en forma numerica. Considere una ley de Gutenberg-Richter acotada por 5,5 Mw 9,0 y que
Log(N) = 6.23 - 0.94Mw (Leyton et al. 2010). Para calcular numericamente su integral no necesita estimar
la funcion de distribucion de probabilidades de la distancia R porque el lugar de ocurrencia del sismo tiene
una distribucion de probabilidades uniforme. Para estimar la distancia entre la ruptura y el sitio considere
el centro del cuadrilatero de la discretizacion de la fuente.

En este caso hacemos nuevamente uso de la funcion graf(dist,x,y,Mw,roca,color,...). Lo unico que


cambiamos es la discretizacion de la superficie tal y como esta pedido. Para utilizar el modelo de Cornell
escribimos una nueva funcion suma(dist,PGA,mo,mmax,dm,nr,x,y) a la cual le entregamos el arreglo ob-
tenido por la primer funcion, el valor del PGA mnimo para el cual se busca obtener la probabilidad, los
valores mnimo y maximo de magnitud ssmica (mo,mmax), un delta magnitud dm que discretiza el dominio
de magnitudes, nr que es el numero total de puntos discretizados en la superficie de falla y por ultimo las
coordenadas del hipocentro (x,y).Esta ultima funcion es la que representa el modelo de Cornell.

La idea es obtener los terminos de la formula de Cornell discretizada:


nm X
X nR
P [Y y] = P [Y y | mj , rk ] P [M = mj ] P [R = rk ]
j=1 k=1

El primer termino de la sumatoria es la probabilidad de que el PGA sea mayor a cierto valor dados
ciertos valores de disancia y de magnitud ssmica. Para calcular esta probabilidad se construye el siguiente
estadstico:
ln(P GA) Elny
z=
lny
En donde ln(P GA) utiliza el valor mnimo requerido de PGA=0,3g, Elny y lny es el valor esperado del
PGA y la desv. est. obtenidos mediante la ley de atenuacion de Youngs et. al.. Al construir este estadstico
podemos utilizar las formulas de una distribucion normal, ya que lnY N ormal(0, 1). Luego, mediante la
libreria scipy.stats de Python es posible calcular esta probabilidad. De acuerdo al enunciado, la distribucion de
probabilidades de la distancia R es uniforme, por lo que cada punto discretizado tiene la misma probabilidad
de ocurrencia:
1
P [R = rk ] =
nR
Donde nR es el numero de puntos en los cuales la superficie de falla fue discretizada. Por ultimo, se debe
discretizar el dominio de ocurrencias para sismos con distintas magnitudes. Para ello tomamos el modelo de
ocurrencia acotado por ambos lados y lo multiplicamos por una constante dm que discretiza el dominio de
magnitudes ssmicas. Con lo anterior obtenemos que:

e(mj mo )
P [M = mj ] = fM (mj ) dm = dm
1 e(mmax mo )

3
En nuestro caso, los valores utilizados son dm = 0, 5, = 2, 303 0, 94 y nR = 600. La probabilidad
obtenida mediante la funcion suma es de 0,978 %.

b)Repita el problema anterior para valores de PGA desde 0.02g hasta 0.5g, considerando intervalos de
0.02g. Grafique sus resultados.

Volvemos a utilizar la funcion suma(dist,PGA,mo,mmax,dm,nr,x,y) pero esta vez dentro de un ciclo que
recorre el arreglo hecho con la discretizacion del dominio de los PGAs. Se obtiene el siguiente grafico despues
de un tiempo considerable de computos:

0.7
0.6
0.5
Probabilidad [%]

0.4
0.3
0.2
0.1
0.0
0.0 0.1 0.2 0.3 0.4 0.5
PGA [g]

Se puede ver que existe una tendencia a disminuir exponencialmente la probabilidad de ocurrencia con-
forme el valor del PGA aumenta dentro del dominio de magnitudes utilizado. Esto se debe a la influencia que
tiene el modelo de ocurrencia en el modelo de Cornell, ya que ambas presentan el mismo comportamiento
exponencial.
c) Suponga que la tasa anual de los sismos con Mw 5,5 es o = 0,2. Determine la probabilidad de
excedencia de que el P GA 0,3g en un periodo de 50 anos.

Si o = 0, 2 entonces la probabilidad de excedencia de que el P GA 0, 3g en un periodo de 50 anos esta


dado por:
P (Y > 0, 3g) = P (X50 1) = 1 e0,250 = 0,9999 99, 99 %
d) Construya curvas de excedencia para 10, 50, 100 y 500 anos. En el eje x coloque el PGA y en el eje y
la probabilidad de excedencia (ver figura 7.21 de Villaverde).

Problema 3. Descargue el registro ssmico corregido (archivo V2) del instrumento Santiago Puente Alto del
terremoto del Maule del 27/02/2010 (Disponible en RENADIC).

a)Grafique la aceleracion versus tiempo para la componente EW y NS. Indique el PGA para cada uno de
los casos.

Segun lo indicado, tenemos el grafico para la componente EW:

4
EW accel
200

Aceleracion [cm/s/s]
100

100

200

0 20 40 60 80 100 120 140


Tiempo [s]

Y la componente NS:

NS accel
200
Aceleracion [cm/s/s]

100

100

200

0 20 40 60 80 100 120 140


Tiempo [s]

En ambos casos se grafico la aceleracion con unidades de [ cm


s2 ] y el tiempo en [segundos], al igual que los
datos presentados en los registros.
b)Obtenga la velocidad y el desplazamiento en el tiempo de ambos registros integrando los registros de
aceleraciones. Grafique la velocidad versus tiempo y el desplazamiento versus tiempo para cada registro.
Indique el valor de PGV y PGD. Para integrar los registros considere la velocidad inicial y el desplazamiento
inicial del suelo que se entregan en el archivo.

Para la integracion de la velocidad se hizo uso de la siguiente ecuacion:


a1 a2
v(t) = t + t + v1
2 2
Para lo cual se requiere conocer el valor de v0 = 0, 047cm/s segun el registro de la componente EW y
v0 = 0, 002cm/s segun el registro de la componente NS. El valor de t fue tomado de acuerdo a la razon
entre el tiempo total de medicion y el numero total de datos recolectados que tiene un valor de 0, 01s en
ambos casos. Los graficos de velocidad son los siguientes respectivamente:

5
30 EW vel

20

Velocidad [cm/s] 10

10

0 20 40 60 80 100 120 140


Tiempo [s]

NS vel
20

10
Velocidad [cm/s]

10

20

0 20 40 60 80 100 120 140


Tiempo [s]

En este caso se grafico la velocidad en unidades de [cm/s] y el tiempo en [segundos].

Para la integracion del desplazamiento se hizo uso de la siguiente ecuacion:


a1 2 a2 2
d(t) = t + t + v1 t + d1
3 6
PAra lo cual se requiere conocer el valor de d0 = para la componente EW y d0 = para la componente NS. El
valor de t el el mismo utilizado anteriormente segun los registros. Los graficos son los siguientes:

6
4
EW despl

Desplazamiento [cm] 0

0 20 40 60 80 100 120 140


Tiempo [s]

4 NS despl

2
Desplazamiento [cm]

6
0 20 40 60 80 100 120 140
Tiempo [s]

Donde el desplazamiento fue graficado en unidades de [cm] y el tiempo en [segundos]. Los codigos utili-
zados para realizar lo anterior estan presentados en el anexo. Los valores de PGA, PGV, PGD y si tiempo
de ocurrencia desde el inicio de la medicion son los siguientes:

PGA [cm/s/s] ocurrencia PGA [s] PGV [cm/s] ocurrencia PGV [s] PGD [cm] ocurrencia PGD [s]
EW 262.759 72.49 31.448 72.60 4.890 61.74
NS 260.339 74.21 24.574 70.09 6.513 70.78

c)Comente sus resultados.


Si se grafican los registros de aceleracion, velocidad y desplazamiento desde el registro, sin integrar, se puede
ver que el registro de velocidad es casi el mismo obtenido a traves de la integracion. La variacion de los valores
obtenidos es casi imperceptible. Sin embargo, los valores de la distancia obtenidos a traves de integracion
varian un poco con respecto a los valores de los registros.

Esto se debe a que los valores en los registros han sido corregidos y en ese proceso de filtracion de datos se
produce la diferencia que se puede observar entre los valores de desplazamiento obtenidos con el metodo de
integracion y los valores del registro.

7
Problema 4. Considere la funcion que se muestra en la figura.

a)Suponga que esta funcion es periodica con perodo t0 y que se repite infinitas veces. Represente esta
funcion mediante una serie de Fourier (real no compleja). Para esto calcule analticamente los valores de ao ,
am y bm desde m = 1 hasta m = 20. Grafique esta funcion hasta t = 3to considerando m = 1, 3, 5 y 20
terminos.
Tomamos la exprecion general de una serie de Fourier:

ao X
f (t) = + am cos(wm t) + bm sen(wm t)
2 m=1

Y los valores de sus constantes: Z T /2


2
ao = f (t)dt
T T /2
Z T /2
2
am = f (t)cos(wm t)dt
T T /2
Z T /2
2
bm = f (t)sen(wm t)dt
T T /2

2m
wm =
T
Tomamos el intervalo ] t2 o , t2o [ debido a que es periodica infinitas veces. Obtenemos una expresion para esta
funcon dentro de este intervalo:
2fto
t
to
Se puede observar que dentro de este intervalo la funcion es impar. Debido a esta propiedad, las constantes
tienen los siguientes valores:
2 to /2
Z
ao = f (t)dt = 0
to to /2
Debido a que la funcion cos(wm t) es par en el intervalo ] t2 o , t2o [, la funcion f (t) cos(wm t) es impar por ser
el resultado de la multiplicacion de una funcion par y otra impar. Lego:
Z to /2
2
am = f (t)cos(wm t)dt = 0
to to /2

Debido a que la funcion sen(wm t) es impoar en dicho intervalo, la funcion f (t) sen(wm t) es par por ser
multiplo de dos funciones impares. Se obtiene:
Z to /2
4 2fto
bm = t sen(wm t)dt
to 0 to

8
Integrando lo anterior se obtiene:
8fto wm to to wm wm to
bm = 2
(sen( ) cos( ))
(to wm ) 2 2 2

Simplificando:
8fto
bm = (sen(m) mcos(m))
(2m)2
2fto
bm = cos(m)
m
Luego, la serie de Fourier es:

X 2fto
f (t) = cos(m)sen(wm t)
m=1
m
Graficamos al serie para el intervalo pedido y por simplicidad suponemos que fto = 1 y to = 1:

m=1
0.6
0.4
0.2
0.0
f(t)

0.2
0.4
0.6

0.0 0.5 1.0 1.5 2.0 2.5 3.0


Tiempo t

1.00 m=3
0.75
0.50
0.25
0.00
f(t)

0.25
0.50
0.75
1.00
0.0 0.5 1.0 1.5 2.0 2.5 3.0
Tiempo t

9
1.0 m=5

0.5

0.0

f(t)
0.5

1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0
Tiempo t

m=20
1.0

0.5

0.0
f(t)

0.5

1.0

0.0 0.5 1.0 1.5 2.0 2.5 3.0


Tiempo t

b)Considere ahora que esta funcion se repite solo una vez en el tiempo. Determine F(w) y grafique el
espectro de amplitud de Fourier (FAS).

LA transformada de Fourier se define segun la siguiente ecuacion:


Z Z Z
iwt
F (w) = f (t)e dt = f (t)cos(wt)dt i f (t)sen(wt)dt

En donde: Z
C(w) = f (t)cos(wt)dt

Z
S(w) = f (t)sen(wt)dt

Ahora, discretizamos la funcion dentro de su dominio:


2fo to
f (t) = t , 0<t<
to 2
2fo to to
f (t) = fo + (t ) , < t < to
to 2 2
Debido a que la funcion se repite una sola vez en el tiempo, el dominio de integracion se reduce, obteniendose:
Z to /2 Z to
2fo 2fo to
C(w) = tcos(wt)dt + (fo + (t ))cos(wt)dt
0 to to /2 to 2

10
Z to /2 Z to
2fo 2fo to
S(w) = tsen(wt)dt + (fo + (t ))sen(wt)dt
0 to to /2 to 2
Obteniendo las integrales se calcula el FAS segun la ecuacion:
p
F AS(w) = C(w)2 + S(w)2

El grafico es el siguiente:

0.30
0.25
0.20
FAS(w)

0.15
0.10
0.05
0.00
100 75 50 25 0 25 50 75 100
w

Problema 5. Considere el registro corregido de Puente Alto, componente NS. Grafique el espectro de am-
plitud de Fourier (FAS) en funcion de la frecuencia f = w/2. Para esto utilice la transformada rapida de
Fourier (FFT) de Matlab (o Python). Indique las frecuencias predominantes del registro.

Utilizando los comandos de Python para las series de Fourier obtenemos el FAS de la componente NS
del registro de aceleracion del problema 3 de esta tarea. Es necesario reordenar un poco los datos antes de
graficarlos, para ello se utiliza la funcion np.fft.fftshift(). El grafico obtenido es el siguiente:

300

250

200
FAS(f)

150

100

50

0
0.3 0.2 0.1 0.0 0.1 0.2 0.3
f [Hz]

AL ojo se puede decir que el rango de frecuencias predominantes se encuentra entre [-0.05,0.05] [Hz].

11
Codigos de Python c31 = -2.552
c41 =1.45
c51 = -0.1
# -* - coding : utf -8 -* -
""" # suelo
Editor de Spyder c12 =0.
c22 =0.
Este es un archivo t e m p o r a l c32 = -2.329
""" c42 =1.45
# ######################### c52 = -0.1
# ...... P R E G U N T A 1 ..
# ####################### Zt = 0
import numpy as np h1 = x / np . cos ( np . deg2rad (25) )
import matplotlib . pyplot as plt c2 = ( h1 **2 - x **2) **0.5
z1 = 10+ c2
# x = np . l i n s p a c e (0 ,120 ,121) H = z1
x = np . linspace (0 ,120 ,500)

# y = np . l i n s p a c e ( -200 ,300 ,501) datos = np . array ([0 ,0 ,0 ,0 ,0 ,0 ,0])


y = np . linspace ( -200 ,300 ,5000)
for i in np . arange ( len ( dist [: ,3]) ) :
za = np . array (0)
if ( roca == True ) :
# h =120/ np . cos ( np . pi / np . deg2rad (25) ) # Roca
# c1 = ( h **2 -120**2) **0.5 if (H >50) :
# Hmax = c1 +10 Zt = 1.
# else :
# for i in np . arange ( len ( x ) ) : Zt = 0.
# aux1 = x [ i ]/ np . cos ( np . deg2rad (25) )
# aux = 10+( aux1 **2 - x [ i ]**2) **0.5 lny = 0.2418+1.414* Mw + c11 + c21
# za = np . vstack (( za , aux ) ) *(10 - Mw ) **(3) + c31 * np . log ( dist
# [i ,3]+1.7818* np . exp (0.554* Mw )
# z = za [1: len ( za ) ] ) +0.00607* H +0.3846* Zt
e = np . exp ( lny )
distancias = np . array ([0. ,0. ,0. ,0.]) sigmalny = c41 + c51 * Mw
# SOLO D I A G O N A L DE (120 ,0 , zmax ) A (0 ,300 ,10) arr = np . array ([ dist [i ,0] , dist [i
# for i in np . arange ( len ( y ) ) : ,1] , dist [i ,2] , H , sigmalny , dist
# x1 = 120 - y [ i ] * 1 2 0 / 3 0 0 [i ,3] , e ])
# h1 = x1 / np . cos ( np . deg2rad (25) ) datos = np . vstack (( datos , arr ) )
# c2 = ( h1 **2 - x1 **2) **0.5
# z1 = 10+ c2
# aux = ((170 - x1 ) **2+(0 - y [ i ]) **2+(0 - z1 ) else :
**2) **0.5 # Suelo
# arr = np . array ([ x1 , y [ i ] , z1 , aux ]) if (H >50) :
# d i s t a n c i a s = np . vstack (( distancias , arr ) ) Zt = 1.
else :
# # TODAS LAS D I S T A N C I A S Zt = 0.
for i in np . arange ( len ( y ) ) :
for j in np . arange ( len ( x ) ) : lny2 = -0.6687+1.438* Mw + c12 + c22
h1 = x [ j ]/ np . cos ( np . deg2rad (25) ) *(10 - Mw ) **(3) + c32 * np . log ( dist
c2 = ( h1 **2 - x [ j ]**2) **0.5 [i ,3]+1.097* np . exp (0.617* Mw ) )
z1 = 10+ c2 +0.00648* H +0.3643* Zt
aux = ((170 - x [ j ]) **2+(0 - y [ i ]) **2+(0 - e2 = np . exp ( lny2 )
z1 ) **2) **0.5 sigmalny2 = c42 + c52 * Mw
arr = np . array ([ x [ j ] , y [ i ] , z1 , aux ])
distancias = np . vstack (( distancias ,
arr ) ) arr2 = np . array ([ dist [i ,0] , dist [i
,1] , dist [i ,2] , H , sigmalny2 ,
dist [i ,3] , e2 ])
dist = distancias [1: len ( distancias ) ] datos = np . vstack (( datos , arr2 ) )
def graf ( dist ,x ,y , Mw , roca , color , leyenda , pdf , dato = datos [1: len ( datos [: ,0]) ]
save , plot ) :
if ( plot == True ) :
# roca plt . figure ( figsize = (8 ,4) )
c11 =0. plt . plot ( dato [: ,5] , dato [: ,6] , color ,
c21 =0.

12
linewidth = 0.5) [ rmin6 , rmax6 ] = [ np . min ( dat6 [: ,4]) , np . max (
plt . xlabel ( Distancia [ km ] ) dat6 [: ,4]) ]
plt . ylabel ( PGA [ g ] ) [ rmin7 , rmax7 ] = [ np . min ( dat7 [: ,4]) , np . max (
plt . legend ([ leyenda ] , loc = upper right dat7 [: ,4]) ]
) [ rmin8 , rmax8 ] = [ np . min ( dat8 [: ,4]) , np . max (
plt . grid () dat8 [: ,4]) ]
if save == True : [ rmin9 , rmax9 ] = [ np . min ( dat9 [: ,4]) , np . max (
plt . savefig ( pdf + . pdf ) dat9 [: ,4]) ]
plt . show ()
# Tenemos que c a l c u l a r la c a n t i d a d de puntos
return dato que tienen un PGA >=0.05 , e n t o n c e s
# tomamos el numero de puntos con PGA >=0.05 y
# --------------------------- lo d i v i d i m o s entre el numero total
# --------------------------- # de puntos
x = np . max ( dist [: ,0])
y = np . max ( dist [: ,1]) def contador ( datos , limiteInf ) :

conteo = np . array ([0 ,0 ,0 ,0 ,0])


dat6 = graf ( dist ,x ,y ,6 , False , r , PGA Mw =6 , cont = 0.
PGA Mw =6 , False , False )
dat7 = graf ( dist ,x ,y ,7 , False , r , PGA Mw =6 , for i in np . arange ( len ( datos [: ,0]) ) :
PGA Mw =6 , False , False ) if ( datos [i ,6] >= limiteInf ) :
dat8 = graf ( dist ,x ,y ,8 , False , r , PGA Mw =6 , aux = np . array ([ cont , datos [i ,0] ,
PGA Mw =6 , False , False ) datos [i ,1] , datos [i ,2] , datos [i
dat9 = graf ( dist ,x ,y ,9 , False , r , PGA Mw =6 , ,6]])
PGA Mw =6 , False , False ) conteo = np . vstack (( conteo , aux ) )
cont = cont +1
plt . figure ( figsize = (8 ,4) )
plt . loglog ( dat6 [: ,5] , dat6 [: ,6] , r , conteo1 = conteo [1: len ( conteo [: ,0]) ]
linewidth = 0.8)
plt . loglog ( dat7 [: ,5] , dat7 [: ,6] , b , return cont , conteo1
linewidth = 0.8)
plt . loglog ( dat8 [: ,5] , dat8 [: ,6] , g ,
linewidth = 0.8)
plt . loglog ( dat9 [: ,5] , dat9 [: ,6] , m , cont6_e , conteo6_e = contador ( dat6 ,0.05)
linewidth = 0.8) cont6_t , conteo6_t = contador ( dat6 ,0.)
plt . xlabel ( Distancia [ km ] ) prob6 = 100* cont6_e / cont6_t
plt . ylabel ( PGA [ g ] )
plt . legend ([ Mw =6 , Mw =7 , Mw =8 , Mw =9 ] , loc = cont7_e , conteo7_e = contador ( dat7 ,0.05)
upper right ) cont7_t , conteo7_t = contador ( dat7 ,0.)
plt . grid () prob7 = 100* cont7_e / cont7_t

plt . show () cont8_e , conteo8_e = contador ( dat8 ,0.05)


cont8_t , conteo8_t = contador ( dat8 ,0.)
# PREGUNTA 1b prob8 = 100* cont8_e / cont8_t
# hacer correr ciclo para todas las d i s t a n c i a s
def buscar ( dato ,x ,y , z ) : cont9_e , conteo9_e = contador ( dat9 ,0.05)
info = np . array ([0 ,0 ,0 ,0 ,0 ,0]) cont9_t , conteo9_t = contador ( dat9 ,0.)
prob9 = 100* cont9_e / cont9_t
for i in np . arange ( len ( dato [: ,0]) ) :
if ( dato [i ,0]== x and dato [i ,1]== y and # -* - coding : utf -8 -* -
dato [i ,2]== z ) : """
info = np . array ([ dato [i ,0] , dato [i Created on Wed Aug 30 1 8 : 5 0 : 0 8 2017
,1] , dato [i ,2] , dato [i ,4] , dato [i
,5] , dato [i ,6]]) @author : B i b l i o t e c a s
# [x ,y ,z , sigma , distancia , PGA ] """
return info # ##################################
# ....... P R E G U N T A 2 ..
sis6 = buscar ( dat6 , np . max ( dist [: ,0]) , np . max ( # ##############################
dist [: ,1]) , np . max ( dist [: ,2]) ) import numpy as np
sis7 = buscar ( dat7 , np . max ( dist [: ,0]) , np . max ( import matplotlib . pyplot as plt
dist [: ,1]) , np . max ( dist [: ,2]) ) import scipy . stats
sis8 = buscar ( dat8 , np . max ( dist [: ,0]) , np . max (
dist [: ,1]) , np . max ( dist [: ,2]) ) x = np . array ([0.])
sis9 = buscar ( dat9 , np . max ( dist [: ,0]) , np . max ( y = np . array ([0.])
dist [: ,1]) , np . max ( dist [: ,2]) )
aux = -195.
#c) for i in np . arange (50) :

13
aux2 = np . array ([ aux ]) ) +0.00607* H +0.3846* Zt
y = np . hstack (( y , aux2 ) ) e = np . exp ( lny )
aux = aux +10 sigmalny = c41 + c51 * Mw
arr = np . array ([ dist [i ,0] , dist [i
y = y [1: len ( y ) ] ,1] , dist [i ,2] , H , sigmalny , dist
[i ,3] , e ])
aux3 = 5. datos = np . vstack (( datos , arr ) )
for i in np . arange (12) :
aux4 = np . array ([ aux3 ]) else :
x = np . hstack (( x , aux4 ) ) # Suelo
aux3 = aux3 +10 if (H >50) :
Zt = 1.
x = x [1: len ( x ) ] else :
Zt = 0.
distancias = np . array ([0. ,0. ,0. ,0.])
lny2 = -0.6687+1.438* Mw + c12 + c22
for i in np . arange ( len ( y ) ) : *(10 - Mw ) **(3) + c32 * np . log ( dist
for j in np . arange ( len ( x ) ) : [i ,3]+1.097* np . exp (0.617* Mw ) )
h1 = x [ j ]/ np . cos ( np . deg2rad (25) ) +0.00648* H +0.3643* Zt
c2 = ( h1 **2 - x [ j ]**2) **0.5 e2 = np . exp ( lny2 )
z1 = 10+ c2 sigmalny2 = c42 + c52 * Mw
aux = ((170 - x [ j ]) **2+(0 - y [ i ]) **2+(0 - arr2 = np . array ([ dist [i ,0] , dist [i
z1 ) **2) **0.5 ,1] , dist [i ,2] , H , sigmalny2 ,
arr = np . array ([ x [ j ] , y [ i ] , z1 , aux ]) dist [i ,3] , e2 ])
distancias = np . vstack (( distancias , datos = np . vstack (( datos , arr2 ) )
arr ) )
dato = datos [1: len ( datos [: ,0]) ]
dist = distancias [1: len ( distancias ) ]
if ( plot == True ) :
nr = 0. plt . figure ( figsize = (8 ,4) )
for i in np . arange ( len ( dist [: ,0]) ) : plt . plot ( dato [: ,5] , dato [: ,6] , color ,
nr = nr +1 linewidth = 0.5)
plt . xlabel ( Distancia [ km ] )
plt . ylabel ( PGA [ g ] )
def graf ( dist ,x ,y , Mw , roca , color , leyenda , pdf , plt . legend ([ leyenda ] , loc = upper right
save , plot ) : )
# roca plt . grid ()
c11 =0. if save == True :
c21 =0. plt . savefig ( pdf + . pdf )
c31 = -2.552 plt . show ()
c41 =1.45
c51 = -0.1 return dato
# suelo
c12 =0. # dat6 = graf ( dist ,115. ,295. ,6 , False , r , PGA
c22 =0. Mw =6 , PGA Mw =6 , False , False )
c32 = -2.329 # dat7 = graf ( dist ,115. ,295. ,7 , False , r , PGA
c42 =1.45 Mw =6 , PGA Mw =6 , False , False )
c52 = -0.1 # dat8 = graf ( dist ,115. ,295. ,8 , False , r , PGA
Mw =6 , PGA Mw =6 , False , False )
Zt = 0 # dat9 = graf ( dist ,115. ,295. ,9 , False , r , PGA
h1 = x / np . cos ( np . deg2rad (25) ) Mw =6 , PGA Mw =6 , False , False )
c2 = ( h1 **2 - x **2) **0.5
z1 = 10+ c2 def suma ( dist , PGA , mo , mmax , dm , nr ,x , y ) :
H = z1 beta =2.303*0.94
m = np . arange ( mo , mmax *1.0001 , dm )
datos = np . array ([0 ,0 ,0 ,0 ,0 ,0 ,0])
suma = 0.
for i in np . arange ( len ( dist [: ,3]) ) : for i in np . arange ( int ( nr ) ) :
if ( roca == True ) : for j in np . arange ( len ( m ) ) :
# Roca E = graf ( dist ,x ,y , m [ j ] , False , r ,
if (H >50) : PGA Mw =6 , PGA Mw =6 , False ,
Zt = 1. False ) [i ,6]
else : # print ( E = , E )
Zt = 0. sig = graf ( dist ,x ,y , m [ j ] , False , r
, PGA Mw =6 , PGA Mw =6 , False
lny = 0.2418+1.414* Mw + c11 + c21 , False ) [i ,4]
*(10 - Mw ) **(3) + c31 * np . log ( dist # print ( sig = , sig )
[i ,3]+1.7818* np . exp (0.554* Mw ) z = ( np . log ( PGA ) - np . log ( E ) ) /( sig )

14
b =1 - scipy . stats . norm . cdf ( z ) pe = 1 - np . exp ( - lambda0 * t )
suma = suma +( b ) *(1/ nr ) *(( beta * np .
exp ( - beta *( m [ j ] - mo ) ) ) /(1 - np . #d)
exp ( - beta *( mmax - mo ) ) ) ) * dm
print ( cont = ,i ) pga = np . linspace (0. ,0.5 ,100)
return suma lambdao = np . linspace (0. ,0.1 ,100)

#a) def exc ( lambdao , t ) :


PGA = 0.3 exc = 1 - np . exp ( - lambdao * t )
mo = 5.5 return exc
mmax =9
beta =2.303*0.94 plt . figure ( figsize = (8 ,4) )
dm = 0.5 plt . plot ( pga , exc ( lambdao ,10.) , r )
m = np . arange (5.5 ,9.0001 , dm ) plt . plot ( pga , exc ( lambdao ,50.) , b )
plt . plot ( pga , exc ( lambdao ,100.) , g )
suma1 = suma ( dist , PGA , mo , mmax , dm , nr plt . plot ( pga , exc ( lambdao ,500.) , m )
,115. ,295.) plt . xlabel ( PGA [ g ] )
plt . ylabel ( Probabilidad excedencia [ %] )
# suma = 0. plt . grid ()
# for i in np . arange ( int ( nr ) ) : # plt . savefig ( FAS4 . pdf )
# for j in np . arange ( len ( m ) ) : plt . show ()
# E = graf ( dist ,115. ,295. , m [ j ] , False ,
r , PGA Mw =6 , PGA Mw =6 , False , False ) [i # -* - coding : utf -8 -* -
,6] """
# # print ( E = , E ) Created on Sat Aug 26 1 1 : 4 1 : 1 6 2017
# sig = graf ( dist ,115. ,295. , m [ j ] , False
, r , PGA Mw =6 , PGA Mw =6 , False , False ) [i @author : B i b l i o t e c a s
,4] """
# # print ( sig = , sig ) # ##################################
# z = ( np . log ( PGA ) - np . log ( E ) ) /( sig ) # . . . . . . . . . . . P R E G U N T A 3 ..
# b =1 - scipy . stats . norm . cdf ( z ) # ################################
# suma = suma +( b ) *(1/ nr ) *(( beta * np . exp ( - import numpy as np
beta *( m [ j ] - mo ) ) ) /(1 - np . exp ( - beta *( mmax - mo import matplotlib . pyplot as plt
) ) ) ) * dm
# print ( cont = , i )
# def accelGraf ( titulo , a1 , a2 , discretizacion ,
color , leyenda , pdf , save ) :
#b)
pga = np . array ([0.]) archivo = open ( titulo , r )
cont = archivo . read () . split ()
aux5 = 0.02 datos = np . asarray ( cont )
for i in np . arange (25) : datos2 = np . asmatrix ( datos ) . T
aux6 = np . array ([ aux5 ])
pga = np . hstack (( pga , aux6 ) ) a1 = a1 # Limites en s e g u n d o s
aux5 = aux5 +0.02 a2 = a2

pga = pga [1: len ( pga ) ] x = np . linspace ( a1 , a2 , d iscretiz acion ) #


Discretizacion
sumas = np . array ([0.])
for i in np . arange ( len ( pga ) ) : plt . figure ( figsize = (8 ,4) )
aux7 = suma ( dist , pga [ i ] , mo , mmax , dm , nr plt . plot (x , datos2 , color , linewidth =
,115. ,295.) 0.5)
sumas = np . hstack (( sumas , aux7 ) ) plt . xlabel ( Tiempo [ s ] )
sumas = sumas [1: len ( sumas ) ] plt . ylabel ( Aceleracion [ cm / s / s ] )
plt . legend ([ leyenda ] , loc = upper right )
plt . figure ( figsize = (8 ,4) ) plt . grid ()
plt . plot ( pga , sumas , ro - , linewidth = 0.8) if save == True :
plt . xlabel ( PGA [ g ] ) plt . savefig ( pdf + . pdf )
plt . ylabel ( Probabilidad [ %] ) plt . show ()
# plt . legend ([ Mw =6 , Mw =7 , Mw =8 , Mw =9 ] , loc
= upper right ) matriz1 = np . zeros ([ discretizacion ,2]) # [
plt . grid () tiempo , a c e l e r a c i o n ]
plt . savefig ( pregunta2b . pdf )
plt . show () for i in np . arange ( datos2 . shape [0]) :
matriz1 [i ,0] = x [ i ]
#c) matriz1 [i ,1] = datos [ i ]
lambda0 = 0.2
t = 50 return x , datos2 , matriz1

15
+1 ,0] - matriz1 [i ,0]) + matriz2 [i ,1]
x11 , dat11 , hnn1 = accelGraf ( A c e l e r a c i o n EW u s o . matriz2 [ i +1 ,0] = matriz1 [ i +1 ,0]
txt ,0. ,147.01 ,14701 , r , EW ,
A c e l e r a c i o n E W u s o , False ) plt . figure ( figsize = (8 ,4) )
x11vel , dat11vel , hnn1vel = accelGraf ( plt . plot (x , matriz2 [: ,1] , color ,
Veloc idadEWu so . txt ,0. ,147.01 ,14701 , b , linewidth = 0.5)
EW , V elocidad EWuso , False ) plt . xlabel ( Tiempo [ s ] )
x11desp , dat11desp , hnn1desp = accelGraf ( plt . ylabel ( Velocidad [ cm / s ] )
D e s p l a z a m i e n t o E W u s o . txt ,0. ,147.01 ,14701 , plt . legend ([ leyenda ] , loc = upper right )
g , EW , D e s p l a z a m i e n t o E W u s o , False ) plt . grid ()
if save == True :
# x1 , dat1 , hnn1 = a c c e l G r a f ( H N N _ 1 8 _ 0 7 _ 2 0 1 7 _ 5 plt . savefig ( pdf + . pdf )
.6. txt ,0. ,161. ,32200 , r , HNN , plt . show ()
H N N p r u e b a , True )
# x2 , dat2 , hnn2 = a c c e l G r a f ( H N E _ 1 8 _ 0 7 _ 2 0 1 7 _ 5 return matriz2
.6. txt ,0. ,161. ,32200 , b , HNE ,
H N E p r u e b a , True ) # m22 = velGraf (14701 , dat11 , hnn1 , x11 ,0.047 , r
# x3 , dat3 , hnn3 = a c c e l G r a f ( H N Z _ 1 8 _ 0 7 _ 2 0 1 7 _ 5 , HNN , v e l p r u e b a , False )
.6. txt ,0. ,161. ,32200 , k , HNZ ,
H N Z p r u e b a , True )
def displGraf ( discretizacion , matriz1 , matriz2 ,
# a r c h i v o H N N = open ( A c e l e r a c i o n E W u s o . txt , r x , despini , color , leyenda , pdf , save ) :
)
# contHNN = a r c h i v o H N N . read () . split () matriz3 = np . zeros ([ discretizacion ,2])
# datos = np . asarray ( contHNN )
# d a t o s H N N = np . a s m a t r i x ( datos ) . T for i in np . arange ( matriz3 . shape [0] -1) :
# if ( i ==0) :
# a1 = 0. # Limites en s e g u n d o s matriz3 [i ,0] = 0.
# a2 = 161. matriz3 [i ,1] = despini
#
# x = np . l i n s p a c e ( a1 , a2 ,32200) # D i s c r e t i z a c i o n # matriz3 [ i +1 ,1] = matriz2 [i ,1]*(
# matriz2 [ i +1 ,0] - matriz2 [i ,0]) + matriz3 [i ,1]
# plt . figure ( figsize = (8 ,8) ) # matriz3 [ i +1 ,0] = matriz2 [ i +1 ,0]
# plt . plot (x , datosHNN , k , l i n e w i d t h = 0.5)
# plt . xlabel ( Tiempo ) matriz3 [ i +1 ,1] = matriz1 [i ,1]*(1/3) *(
# plt . ylabel ( A c e l e r a c i o n ) matriz1 [ i +1 ,0] - matriz1 [i ,0]) **2+
# plt . legend ([ HNE ] , loc = upper right ) matriz1 [ i +1 ,1]*(1/6) *( matriz1 [ i
# plt . grid () +1 ,0] - matriz1 [i ,0]) **2+ matriz2 [i
# plt . savefig ( H N E a c c e l . pdf ) ,1]*( matriz1 [ i +1 ,0] - matriz1 [i ,0])
# plt . show () + matriz3 [i ,1]
# matriz3 [ i +1 ,0] = matriz2 [ i +1 ,0]
# m a t r i z H N N = np . zeros ([32200 ,2])
# plt . figure ( figsize = (8 ,4) )
# for i in np . arange ( d a t o s H N N . shape [0]) : plt . plot (x , matriz3 [: ,1] , color ,
# aux = 1/200 linewidth = 0.5)
# m a t r i z H N N [i ,0] = x [ i ] plt . xlabel ( Tiempo [ s ] )
# m a t r i z H N N [i ,1] = datos [ i ] plt . ylabel ( Desp lazamien to [ cm ] )
# plt . legend ([ leyenda ] , loc = upper right )
plt . grid ()
if save == True :
plt . savefig ( pdf + . pdf )
def velGraf ( discretizacion , datos2 , matriz1 ,x , plt . show ()
velini , color , leyenda , pdf , save ) :

matriz2 = np . zeros ([ discretizacion ,2]) return matriz3

for i in np . arange ( datos2 . shape [0] -1) : # m33 = d i s p l G r a f (14701 , hnn1 , m22 , x11 , -0.001 , b
if ( i ==0) : , EW , displEw , False )
matriz2 [i ,0] = 0.
matriz2 [i ,1] = velini # s u p u e s t o !
# velGraf (32200 , dat1 , hnn1 , x1 , r , HNN ,
# matriz2 [ i +1 ,1] = matriz1 [i ,1]*( v e l p r u e b a , True )
matriz1 [ i +1 ,0] - matriz1 [i ,0]) + matriz2 [i ,1]
# matriz2 [ i +1 ,0] = matriz1 [ i +1 ,0]
# m a t r i z H N N 2 = np . zeros ([32200 ,2])
matriz2 [ i +1 ,1] = matriz1 [i ,1]*0.5*( #
matriz1 [ i +1 ,0] - matriz1 [i ,0]) + # for i in np . arange ( d a t o s H N N . shape [0] -1) :
matriz1 [ i +1 ,1]*0.5*( matriz1 [ i # if ( i ==0) :

16
# m a t r i z H N N 2 [i ,0] = 0. cont3 = cont3 +1
# m a t r i z H N N 2 [i ,1] = 0. # s u p u e s t o !
# return [ cont1 , cont2 , cont3 , pga , pgv , pgd ]
# m a t r i z H N N 2 [ i +1 ,1] = m a t r i z H N N [i ,1]*(
m a t r i z H N N [ i +1 ,0] - m a t r i z H N N [i ,0]) +
m a t r i z H N N 2 [i ,1] # [ cont1 , cont2 , cont3 , pga , pgv , pgd ]= peak (
# m a t r i z H N N 2 [ i +1 ,0] = m a t r i z H N N [ i +1 ,0] matriz1 , matriz2 , matriz3 )
#
# plt . figure ( figsize = (8 ,8) )
# plt . plot (x , m a t r i z H N N 2 [: ,1] , b , l i n e w i d t h
= 0.5) # ------------------------------
# plt . xlabel ( Tiempo ) # - - - - - - - - - MAIN - - - -
# plt . ylabel ( V e l o c i d a d ) # ----------------------------
# plt . legend ([ HNN ] , loc = upper right )
# plt . grid () x11 , dat11 , m11 = accelGraf ( A c el e r a c i o n E W u s o .
# # plt . savefig ( HNNvel . pdf ) txt ,0. ,147.01 ,14701 , r , EW accel ,
# plt . show () A c e l e r a c i o n E W us o , False )
m22 = velGraf (14701 , dat11 , m11 , x11 ,0.047 , r ,
EW vel , velprueba , False )
def peak ( matriz1 , matriz2 , matriz3 ) : m33 = displGraf (14701 , m11 , m22 , x11 , -0.001 , b ,
EW despl , displEw , False )
if ( np . max ( matriz1 [: ,1]) > abs ( np . min (
matriz1 [: ,1]) ) ) : [ cont1 , cont2 , cont3 , pga , pgv , pgd ]= peak ( m11 , m22
pga = [0. , np . max ( matriz1 [: ,1]) ] , m33 )
else :
pga = [0. , abs ( np . min ( matriz1 [: ,1]) ) ] x44 , dat44 , m44 = accelGraf ( A c el e r a c i o n N S u s o .
txt ,0. ,147.01 ,14701 , r , NS accel ,
if ( np . max ( matriz2 [: ,1]) > abs ( np . min ( A c e l e r a c i o n N S u so , False )
matriz2 [: ,1]) ) ) : m55 = velGraf (14701 , dat44 , m44 , x44 ,0.002 , b ,
pgv = [0. , np . max ( matriz2 [: ,1]) ] NS vel , velprueba , False )
else : m66 = displGraf (14701 , m44 , m55 , x44 , -0.002 , g ,
pgv = [0. , abs ( np . min ( matriz2 [: ,1]) ) ] NS despl , displEw , False )

if ( np . max ( matriz3 [: ,1]) > abs ( np . min ( [ cont4 , cont5 , cont6 , pga2 , pgv2 , pgd2 ]= peak ( m44 ,
matriz3 [: ,1]) ) ) : m55 , m66 )
pgd = [0. , np . max ( matriz3 [: ,1]) ]
else : # ###################################
pgd = [0. , abs ( np . min ( matriz3 [: ,1]) ) ] # ..... P R E G U N T A 5 .....
# ##################################
# pga = [0. , np . max ( matriz1 [: ,1]) ]
# pgv = [0. , np . max ( matriz2 [: ,1]) ] accNS = np . asarray ( m44 [: ,1])
# pgd = [0. , np . max ( matriz3 [: ,1]) ] N = len ( accNS )
td = N *0.01
cont1 = 0.
for i in np . arange ( len ( matriz1 [: ,0]) ) : cont = 0
if ( abs ( matriz1 [i ,1]) >= pga [1]) : while True :
# print ( pga1 : , abs ( matriz1 [i ,1]) n = 2** cont
, PGA : , pga [1] , cont : , cont1 ) if ( len ( accNS ) <n ) :
pga = [ matriz1 [i ,0] , abs ( matriz1 [i aux = np . zeros ( n )
,1]) ] aux [: len ( accNS ) ] = accNS
cont1 = cont1 +1 break
cont = cont +1
cont2 = 0.
for i in np . arange ( len ( matriz2 [: ,0]) ) : fft = np . fft . fft ( aux )
if ( abs ( matriz2 [i ,1]) >= pgv [1]) : fftorden = np . fft . fftshift ( fft )
# print ( pgv1 : , abs ( matriz2 [i ,1]) FAS = np . abs ( fftorden )
, PGV : , pgv [1] , cont : , cont2 ) freq = np . fft . fftfreq ( len ( FAS ) )
pgv = [ matriz2 [i ,0] , abs ( matriz2 [i freqorden = np . fft . fftshift ( freq )
,1]) ]
cont2 = cont2 +1 plt . figure ( figsize = (8 ,4) )
plt . plot ( freqorden , FAS * td /N , r , linewidth =
cont3 = 0. 0.3)
for i in np . arange ( len ( matriz3 [: ,0]) ) : plt . xlim ( -0.3 , 0.3)
if ( abs ( matriz3 [i ,1]) >= pgd [1]) : plt . xlabel ( f [ Hz ] )
# print ( pgd1 : , abs ( matriz3 [i ,1]) plt . ylabel ( FAS ( f ) )
, PGD : , pgd [1] , cont : , cont3 ) plt . grid ()
pgd = [ matriz3 [i ,0] , abs ( matriz3 [i plt . savefig ( FAS5 . pdf )
,1]) ] plt . plot ()

17
# -* - coding : utf -8 -* - # s = -(2.* fo *( np . cos ( to * w *0.5) -1) ) /( to * w )
""" +( np . cos ( to * w ) * fo * to *w - np . cos ( to * w ) * fo * to
Created on Tue Aug 29 1 8 : 5 1 : 0 9 2017 *w - np . cos ( to * w *0.5) * fo * to * w +2.* fo * np . sin (
to * w ) -2.* fo * np . sin ( to * w *0.5) ) /( to *( w ) **2)
@author : B i b l i o t e c a s # return s
"""
# ############################## def c (w , to , fo ) :
# ...... P R E G U N T A 4 .... a = to * w *0.5
# ############################## b = to * w
import numpy as np # radianes
import matplotlib . pyplot as plt c1 = fo *( w * np . sin ( a ) * to +2.* np . cos ( a ) -2.)
/( to * w **2)
fo = 1. c2 = fo *( w * np . sin ( a ) * to -2.* np . cos ( a ) +2.*
m1 = 5 np . cos ( b ) ) /( to * w **2)
to = 1. c = c1 + c2
return c
def plot ( fo ,m , to , color , pdf , save , leyenda ) :
t = np . linspace (0. ,3* to ,1000) def s (w , to , fo ) :
a = to * w *0.5
if ( m ==1) : b = to * w
ft = -2* fo * np . cos ( m * np . pi ) * np . sin (2* s1 = fo *( - w * np . cos ( a ) * to +2.* np . sin ( a ) ) /(
np . pi * m * t / to ) /( m * np . pi ) to * w **2)
else : s2 = - fo *( w * np . cos ( b ) * to + w * np . cos ( a ) -w * np
ft = sum ( -2* fo * np . cos ( x * np . pi ) * np . sin . cos ( b ) +2.* np . sin ( a ) -2.* np . sin ( b ) ) /( w
(2* np . pi * x * t / to ) /( x * np . pi ) for x **2)
in range (1 , m +1) ) s = s1 + s2
return s
margin = ( np . max ( ft ) *0.2)
plt . figure ( figsize = (8 ,4) ) def FAS (w , fo , to ) :
plt . plot (t , ft , color , linewidth = 0.9) fas = (( c (w , to , fo ) ) **2+( s (w , to , fo ) ) **2)
plt . xlabel ( Tiempo t ) **0.5
plt . ylabel ( f ( t ) ) return fas
plt . axis ([0 ,3 , np . min ( ft ) - margin , np . max ( ft
) + margin ]) w = np . linspace ( -100. ,100. ,10000)
plt . legend ([ leyenda ] , loc = upper right )
plt . grid () plt . figure ( figsize = (8 ,4) )
if save == True : plt . plot (w , FAS (w ,1. ,1.) , r )
plt . savefig ( pdf + . pdf ) plt . xlabel ( w )
plt . show () plt . ylabel ( FAS ( w ) )
plt . grid ()
return () plt . savefig ( FAS4 . pdf )
plt . show ()
plot ( fo ,1 , to , r , m1 , True , m =1 )
plot ( fo ,3 , to , b , m3 , True , m =3 )
plot ( fo ,5 , to , g , m5 , True , m =5 )
plot ( fo ,20 , to , m , m20 , True , m =20 )

# -* - coding : utf -8 -* -
"""
Created on Sun Sep 03 1 4 : 4 5 : 2 4 2017

@author : B i b l i o t e c a s
"""
# #########################################
# . . . . . . . . . . . . P R E G U N T A 4 b ..
# ##########################################
import numpy as np
import matplotlib . pyplot as plt

# def c (w , to , fo ) :
# c =(2.* fo * np . sin ( to * w *0.5) ) /( w * to ) -( fo * np
. sin ( to * w ) * to *w - fo * np . sin ( to * w ) * to *w - fo *
np . sin ( to * w *0.5) * to *w -2.* np . cos ( to * w ) * fo
+2.* np . cos ( to * w *0.5) * fo ) /( to *( w ) **2)
# return c

# def s (w , to , fo ) :

18

Potrebbero piacerti anche