In [1]:
import numpy as np
import scipy
import scipy.misc
import matplotlib.pyplot as plt
In [2]:
#larguras em unidades reais
In [3]:
siz = (65, 65)
Lx = 6.4
Ly = 3.2
dx = Lx / siz[0]
dy = Ly / siz[1]
i_siz = (siz[0]-1, siz[1]-1)
V_vermelho = 0
V_azul = 9.05
N = 100
im = scipy.misc.imread("test2.png")
In [4]:
im.shape
Out[4]:
In [5]:
im = scipy.misc.imresize(im, siz)
V_im = np.zeros(siz)
for i in range(0, im.shape[0]):
for j in range(0, im.shape[1]):
#vermelho
if im[i,j,0] > 50:
V_im[i,j] = 1
#azul
if im[i,j,2] > 50:
V_im[i,j] = 2
In [6]:
#V_im = np.zeros((14, 25))
#V_im[3:11,8] = np.ones(8)
#V_im[3:11,15] = 2 * np.ones(8)
#Lx = 14
#Ly = 25
In [7]:
V = V_vermelho * (V_im == 1) + V_azul * (V_im == 2)
In [8]:
V = V_vermelho * (V_im == 1) + V_azul * (V_im == 2)
V_c = (V_im == 1) + (V_im == 2)
for n in range(0, N):
for i in range(1, i_siz[0]):
for j in range(1, i_siz[1]):
if V_c[i, j] == True:
continue
else:
V[i, j] = (V[i+1, j] + V[i-1, j] + V[i, j+1] + V[i, j-1]) / 4
for j in range(1, i_siz[1]):
V[0, j] = (V[1, j] + V[0, j-1] + V[0, j+1]) / 4
V[i_siz[0], j] = (V[i_siz[0]-1, j] + V[i_siz[0], j-1] + V[i_siz[0], j+1]) / 4
for i in range(1, i_siz[0]):
V[i, 0] = (V[i+1, 0] + V[i-1, 0] + V[i, 1]) / 4
V[i, i_siz[1]] = (V[i+1, i_siz[1]] + V[i-1, i_siz[1]] + V[i, i_siz[1] - 1]) / 4
V[0, 0] = (V[1, 0] + V[0, 1]) / 2
V[i_siz[0], 0] = (V[i_siz[0]-1, 0] + V[i_siz[0], 1]) / 4
V[0, i_siz[1]] = (V[1, i_siz[1]] + V[0, i_siz[1]-1]) / 4
V[i_siz[0], i_siz[1]] = (V[i_siz[0], i_siz[1]] + V[i_siz[0], i_siz[1]-1]) / 4
In [9]:
e_x = (V[48,:] - V[47, :]) / dy
In [27]:
plt.matshow(V)
plt.colorbar()
plt.title('Potencial eletrostático [V] simulado')
plt.xlabel('Distância do centro (cm)')
plt.ylabel('Distância do centro (cm)')
plt.xticks(np.linspace(0, i_siz[0], 5),np.linspace(-Lx/2, Lx/2, 5))
plt.yticks(np.linspace(0, i_siz[1], 5),np.linspace(-Ly/2, Ly/2, 5))
plt.show()
In [18]:
e_x = (V[31,:] - V[30, :]) / dy
plt.plot(np.linspace(-Lx/2, Lx/2, 65),e_x, '.')
plt.title('Campo elétrico simulado')
plt.xlabel('Distância do centro (cm)')
plt.ylabel('Campo elétrico (V/cm)')
plt.show()
In [26]:
alfa_x = e_x / 9.1
x = np.linspace(-Lx/2, Lx/2, 65)
x = x
plt.plot(x, 100*alfa_x, 'k.')
plt.title(r'$\alpha(x)$ simulado', fontsize=20)
plt.xlabel('Unidade de distância (cm)')
plt.xlim(-Lx/2, Lx/2)
plt.ylabel(r'$\alpha(x) [1/m]$', fontsize=20)
plt.show()
In [193]:
alfa_x*100
Out[193]:
In [ ]: