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')
No description has been provided for this image
In [ ]: