In [47]:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from math import *
plt.rcParams['figure.figsize'] = [10,8]
#placement de la particule source du champ
x_charge=0 #position au centre du graphique, ne pas modifier
y_charge=0 #position au centre du graphique, ne pas modifier
#Charge en fonction de la charge élementaire e
charge=-2.0
#coordonnées de la position à laquelle on est soumis au champ
x=2
y=2
# affichage d'un message d'erreur si la demande de placement se situe au niveau de la particule;
if x==x_charge and y==y_charge :
print("Erreur car la charge se situe au niveau de la particule")
print("Fermez cette fenêtre et recommencez" )
sys.exit(0)
# distance entre l'origine et la charge
Dist = ((x-x_charge)**2+(y-y_charge)**2)**0.5
#Modélisation du champ selon deux vecteurs Ex et Ey
Ex=charge*(x-x_charge)/Dist**3
Ey=charge*(y-y_charge)/Dist**3
#Valeur du champ à afficher sur le graphique
E=9e9*abs(charge)*1.6e-19/(Dist*1e-9)**2
#conversion en "string" pour pouvoir être affiché
E=str("%.2E"%E)
#graphique
xmin, ymin, xmax, ymax = -10,-7,10,7
#plt.axis("equal")
#titre avec valeur du champ
plt.title("Champ électrostatique en ce point : E="+E+" $\\mathrm{V\\cdot m^{-1}}$") #Unité modifiée
plt.xlabel("abscisse en nm")
plt.ylabel("ordonnée en nm")
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
ax = plt.gca()
plt.grid()
# Représentation de la charge centrale
radius = .05*charge #la taille va êre modifiée avec la valeur de la charge
color = 'red' if charge > 0 else 'blue'
circle = plt.Circle((x_charge, y_charge), radius, color=color)
ax.add_artist(circle)
plt.text(0,-0.5,"$q_A$",color=color)
#Affichage de la charge
charge=charge*1.6e-19
qA=str("%.1E"%charge)
plt.text(-6.5,-4.6,"$q_A$ = "+qA+ " C",color=color)
#valeur de la distance à afficher
Dist=Dist*1.e-9
d=str("%.2E"%Dist)
plt.text(-6.5,-5.4,"$d$ = "+d+ " m")
# Représentation du champ électrique
plt.scatter(x,y,marker="x")
plt.text(x-0.2,y+0.2,"M",color='black')
plt.text(x+0.3,y-0.5,"$\\overrightarrow{E}$")
plt.arrow(x,y,4.5*Ex,4.5*Ey,ec="k",head_width=0.2,head_length=0.2) #coeff de proportionnalité pour la longueur changée
plt.show()
#plt.savefig('foo.png')
In [ ]: