Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

[MatLab] Motion of Particle in a spatially varying electromagnetic field

  1. Feb 6, 2012 #1
    I have to simulate the motion of particle in an electromagnetic device which deflects particle using electric and magnetic field.
    Those field are arranged in such a way that the electric field is inside the magnetic one. Moreover the electrodes begin at the center of the magnetic field ad their end is a bit outside the coils.
    The motion equations are:
    1) d^2x(z)/dz^2 = qE/mv^2
    2) d^2y(z)/dz^2 = qB/mv

    The problem is that MatLab cannot solve second order differential equation, thus I have tried to use the code:

    Code (Text):

    %%Initial drift
    rhsE1=@(z,x)[x(2); 0];
    [zaE1, xaE1] = ode45(rhsE1, [0 69], [0 0]);
    %%inside E field
      rhsE =@(z,x)[x(2); (q/m)*(E/v^2)];
      [zaE, xaE] = ode45(rhsE, [70 130], [0 0]);
    For the drift after the field I have calculated the derivative of the trajectory and used it as initial condition for solving the eqaution of motion in the drift sector.
    I have also write a similar code for the magnetic field.
    The problem is that solving the equation separately doesn't seem to me correct because one solution could be longer than the other...

    I have also tryed to solve the lorentz force using the code:
    Code (Text):

    f = @(t,y) [y(4:6); (q_over_m).*cross(y(4:6),B)+(q_over_m).*E];
    [t,y] = ode23t(f,tspan,y0);
    and some "while" loop like:

    Code (Text):

    while (z>= length at which B begins ||  z<= length atwhich the electric field begins)
         B=[1 0 0]';
         E = [0 0 0]';
       solve the equation
    and so on...

    The problem is that the code is incredibly slow and sometimes, I think, it cannot get out of a loop.

    I think I have used bad approaches to solve the problem, someone can give me a clue?
  2. jcsd
  3. Feb 6, 2012 #2
    more than 100 people have red this thread but I still get no answer.
    Am I doing something wrong?
    I really need some help because I am stuck with this simulation.
  4. Feb 6, 2012 #3
    Matlab CAN however solve a system of first order diff eqns... if only there was a way to take a system of 2nd order diff eqns to a system of 1st order eqns...
  5. Feb 6, 2012 #4
    Yes, that's what I did with the code:
    Code (Text):

    f = @(t,y) [y(4:6); (q_over_m).*cross(y(4:6),B)+(q_over_m).*E];
    [t,y] = ode23t(f,tspan,y0);
    It is supposed to solve the system
    dvx/dt= (Lorentz Force)x

    I have found what was wrong in my code, it is able to track a particle all the way long from the source to the detector and inside the field... I hope...
    The trajectory seems to be reasonable, I would need someone to double check it for confirmation.
    Is there someone available to test the code for me?
    I can post it here or send in private, doesn't matter.
  6. Feb 7, 2012 #5
    Ok, I have done with the code.
    If the moderators want to close this thread for me it is ok.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook