Home » Matemáticas

Category Archives: Matemáticas

Análisis de estabilidad de von Neumann

Este método es muy conocido para analizar los parámetros en una discretización que garantizan la estabilidad del método numérico. Ver, por ejemplo, el análisis de la ecuación de difusión en wikipedia (que yo, ejem, acabo de modificar). Pero, en mi opinión, la discusión se mete en funciones trigonométricas que despistan bastante. Sobre todo, porque acaban evaluadas en "la peor situación", que se ve venir de antemano. Aquí propongo anticipar esa situación desde el principio.

 

Por cierto: es "fon no i man"

 

(más…)

Share

Ahora aprendiendo … DFT y FFT

Las transformadas de Fourier discretas, versión general (DFT) y rápida (FFT).

Para ver si puedo resolver problemas en el espacio de Fourier.

¡Los prefactores lían mucho!

De momento, en python llevo hecho esto: una transformación 1D directa e inversa:

 

import matplotlib.pyplot as plt
import numpy as np
from math import pi

T=10
N=256
t = np.linspace(0,T,N)
ft= 3 * np.sin(2*pi*3.6*t + 2)+1
fo = np.fft.fft( ft ) / N
fo = np.fft.fftshift(fo)

fo[0]

freq = np.fft.fftfreq( N, float(T)/N )
freq = np.fft.fftshift(freq)

#plt.plot(freq, sp.real, freq, sp.imag)
plt.plot(freq, abs( fo ) )

plt.show()

ft2 = N * np.fft.ifft( fo )
 

 

Cálculo de la segunda derivada a través de la transformada, 1D:

import matplotlib.pyplot as plt
import numpy as np
from math import pi

T=10
N=256
om=0.6

t = np.linspace( 0 , T , N , endpoint=False )
ft= 3 * np.sin( 2*pi* om *t + 2)+1
fo0 = np.fft.fft( ft ) / N
fo  = np.fft.fftshift( fo0 )

fo0[0]

freq0 = np.fft.fftfreq( N, float(T)/N )
q     =  2*pi* freq0

freq  = np.fft.fftshift( freq0 )


ddfo = – q**2 * fo0

#plt.plot(freq, sp.real, freq, sp.imag)
plt.plot(freq, abs( fo ) )

plt.show()

ft2 = N * np.fft.ifft( fo0 )

ddft = N * np.fft.ifft( ddfo )
 

Transformada directa e inversa en 2D:

import matplotlib.pyplot as plt
import numpy as np
from math import pi

L=10
N=64

[x, y] = np.meshgrid( np.linspace(0,L,N),
                      np.linspace(0,L,N))

kx=0.2 #2.2
ky=0.7 #1.7

f = np.sin( 2*pi* ( kx * x + ky * y ) ) + np.random.uniform(0, 1, x.shape)

# plt.pcolor(x,y,f)


fou0 = np.fft.fft2( f ) / (N*N)
fou  = np.fft.fftshift( fou0 )

freq = np.fft.fftfreq( N, float(L)/N )
freq = np.fft.fftshift(freq)

[fx , fy] = np.meshgrid( freq, freq )

plt.pcolor(fx,fy,abs(fou) )

#plt.plot(freq, sp.real, freq, sp.imag)
#plt.plot(freq, abs( fo ) )

plt.show()

f2 = N * N * np.fft.ifft2( fou0 )

plt.pcolor(x,y,f)
plt.pcolor(x+L,y,f2.real)
 

 

 

Share

Ahora aprendiendo … Galerkin projection

Una mezcla bastante explosiva de solución numérica de ecuaciones en derivadas parciales y álgebra lineal.

Ver: The POD method and Galerkin approximations, del Professor Kutz, Applied Mathematics University of Washington in 1990.

Por cierto, en sus vídeos emplea una curiosa técnica, escribiendo mirando al espectador pero al derecho. Como escribe con mano izquierda, yo creo que se trata de una grabación en un espejo

Por cierto, acaba de aparecer de un artículo donde emplean esta técnica, escrito en parte por compañeros de Aeronáuticos.

 

Share