Example #1
0
            paso = int(np.ceil(chi2/100.0))
            C.relaja(w, paso)
            n += paso
            chi2 = np.sum(np.power(C.get_potencial() - V_obj, 2))
        if n >= 10000:
            N_w.append(10001)
            print "No converge después de 10000 iteraciones"
        else:
            N_w.append(n)
            print "Converge después de", n, "iteraciones"
        V_w.append(C.get_potencial())
        print ""
    return N_w, V_w

# Crear Caja y calcular resultados
C = Caja()
C.agregar_letra_B()
C.agregar_linea_horizontal()
rango_w = np.linspace(0.2, 1.8, 9)
n_iter, V_iter = convergencia(C, rango_w)

# Gráficos
A = C.get_carga()
fig = plt.figure(1)
plt.clf()
plt.imshow(A, origin='bottom', interpolation='nearest', cmap='gray',
           extent=[-5, 5, -7.5, 7.5])
plt.colorbar()
plt.title('Densidad de carga en el rect'u'á''ngulo')
plt.xlabel('x [cm]')
plt.ylabel('y [cm]')
Example #2
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
Este script permite estudiar la relajación del rectángulo definido en caja.py,
sin la condición de borde derivativa sobre la línea.
'''

import numpy as np
import matplotlib.pyplot as plt
from caja import Caja

# Crear caja y calcular resultados
C = Caja()
C.agregar_letra_B()
for i in range(200):
    C.pasada_sobre_relajacion(1, "all")
V = C.get_potencial()
V_y = np.zeros(C.Ny)
for k in range(C.Ny):
    V_y[k] = V[k][20]

# Gráficos
y = C.reticulado * np.array(range(C.Ny)) - 7.5
fig = plt.figure(1)
plt.clf()
ax = fig.add_subplot(111)
ax.plot(y, V_y)
ax.set_xlabel('y [cm]')
ax.set_ylabel('V [C]')
ax.set_title('Perfil lateral del potencial')