![]() |
This article shows how to simulate (or trace) electrostatic fields for stationery point charges in 2 dimensions using Python3 programming language and its libraries Matplotlib (for visualization) and NumPy (for handling data in arrays). To work out this article, one needs basic knowledge of Python, Matplotlib and NumPy. Basic knowledge of electrostatics would be helpful but is not absolutely must since the concepts necessary for the program are discussed. Basics of ElectrostaticsElectrostatics is the study of stationary electric charges. We generally visualize point charges in space and then study their interactions with the surroundings and with each other. A point charge is an idealization in which all the charge at a location is concentrated at a point on the location. The magnitude of a charge can be positive or negative. Coulomb’s LawThe law states that the force (F) between two point charges of magnitudes q1 and q2 is given by the formula –
A positive value indicates a repulsive force while a negative value indicates attractive force. Electric FieldThe electric field (or electrostatic field) of a charge q at a point say p is defined as the force exerted by q on a unit positive charge placed at p. It is mathematically described as –
The electric field of a positive charge is radially outwards and that of a negative charge is radially inwards (in an isolated space). This is shown in the following figures – ![]() Figure 1: Electric field of a unit positive charge (in isolation) ![]() Figure 2: Electric field of a unit negative charge (in isolation) An electric field line is a curve such that the tangent to it at every point is in the direction of electric field at that point. Remark: The direction of arrows shows the direction of electric field hence the direction of force experienced by the unit positive charge. Superposition Principle (for Electric Field)The superposition principle for electric field states that the electric field at a point p due to a number of charges q1, q2, … qn is equal to the vector sum of electric fields at p due to each of the charges independently. Mathematically – This is an important result that we will be using in the simulation. Components of an Electric FieldIn a 2-dimensional Cartesian system, we can represent a vector as a sum of two vectors – one along (parallel to) x-axis and one along (parallel to) y-axis. These two are called the x and y components of the vector. Now, an electric field is also a vector (since it has both magnitude and direction) hence we can decompose it into its x and y components as well. This decomposition is important for us because the plotting function we are going to use (matplotlib.pyplot.streamplot) takes two arrays – one containing the x component of the electric field (Ex) and one containing the y component of the electric field (Ey). Here is the explanation for obtaining Ex and Ey from E (we use some trigonometry here) –
![]() Figure 3: Different configurations between p (point at which electric field is being calculated) and q (point of charge).
![]() Figure 4: Direction of electric field and its components at point p due to charge at point q. Calculating sin and cos ValuesThis section shows how to calculate Note that the above formula works for all configurations of p and q (whether it is like Fig.3 (a) or Fig.3 (b) or whatever). This is just simple vector math. Look at figure 5 below – ![]() Figure 5: Shows how x21 is different from x12
Similarly, direction can be obtained on y-axis too. Since location of x1 and x2 (equivalently y1 and y2 on y-axis) doesn’t matter in above formula, therefore the formula for sin and cos are universal on 2d plane (i.e., work for any locations of p and q). Algorithm for the Python CodeWith the above theory, we proceed to the algorithm for the simulation (the comments inside ‘[ ]’ explain the algorithm where necessary)-
Asymptotic complexity of the algorithm
Code ImplementationOne needs to install Matplotlib and NumPy libraries for python3 before running the code. This can be done using pip tool On windows - Here is the code (with the comments containing detailed explanation of each step. Read each one properly and this will allow you to alter the parameters of the setup to get different results as you like.)- Python3
Output ![]() Fig 6: Output of the code Few more Charge Configurations Now, you can add or remove any number of charges in the list Q and get equivalent electric field. Here are two example: Dipole: A dipole is a system of two point charges of equal but opposite magnitudes separated by a distance. Here is the value of Q to get a dipole (of unit magnitude) – Q = [(-0.5, 0, 1), (0.5, 0, -1)] Output: ![]() Fig 7: Output of dipole configuration. Some random charge configuration of multiple charges: As said earlier, you can change Q to any charge configuration. Here is an example Q = [(0,1,-2), (-2,1,1), (3,-2,3), (0,0,-1), (-4,-4,-5)] Output ![]() Fig 8: Output of random charges configuration. |
Reffered: https://www.geeksforgeeks.org
Project |
Related |
---|
![]() |
![]() |
![]() |
![]() |
![]() |
Type: | Geek |
Category: | Coding |
Sub Category: | Tutorial |
Uploaded by: | Admin |
Views: | 16 |