Problem
Find the distance x
on the axis perpendicular to the center of a ring of radius R = 0.1 m
and total charge Q = 1e-6 C
such that a point charge q = 1e-9 C
located at x
experiences a force of F_target = 5.1 N
.
Solution
The following program uses the Bisection Method to solve for x
. The program assumes a Coulomb constant of k = 9e9
and permittivity of free space of e = 8.9e-12
:
program ring_force_bisection
implicit none
real :: k, Q, q, R, F_target
real :: a, b, c, x, Fx, Fa, Fb
! Coulomb constant k = 9e9
! Total charge on ring (in C) Q = 1e-6
! Point charge (in C) q = 1e-9
! Radius of ring (in m) R = 0.1
! Target force (in N) F_target = 5.1
! Initial guesses for x a = 0.01 b = 0.2
! Evaluate F(a) and F(b)
Fa = k*Q*q*a / ((a**2) + (R**2))**1.5
Fb = k*Q*q*b / ((b**2) + (R**2))**1.5
! Bisection method
do while (b - a > 1e-6)
! Compute midpoint
c = (a + b) / 2
! Evaluate F(c)
Fx = k*Q*q*c / ((c**2) + (R**2))**1.5
! Check sign of F(c) and update a or b
if (Fx*Fa > 0) then
a = c
Fa = Fx
else
b = c
Fb = Fx
endif
end do
! Compute final value of x
x = (a + b) / 2
! Print result
write(_,_) "The distance x where the force is 5.1 N is:", x, "m"
contains
! Add any additional functions or subroutines here, if needed.
end program ring_force_bisection