Re: Magnetic field for a straight conductor with finite length -
- To: mathgroup at smc.vnet.net
- Subject: [mg91687] Re: Magnetic field for a straight conductor with finite length -
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 5 Sep 2008 07:13:35 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <g9qimb$4fg$1@smc.vnet.net>
robert prince-wright wrote: > I am trying to create a plot which shows the magnetic field around a straight line of finite length. I started by looking online at Michael Trott's Mathematica Guidebook for Numerics which gives an example of how Mathematica can solve the Biot-Savart equation for the case of an infinite line running along the Z-axis: > > infiniteWire[t_] = {0, 0, t}; > sol1 = Integrate[ > Cross[D[infiniteWire[t], t], {x, y, z} - infiniteWire[t]]/ > Norm[{x, y, z} - infiniteWire[t]]^3, {t, -Infinity, Infinity}, > GenerateConditions -> False] > > > However, if you evaluate the expression above using Mathematica 6 the output is different to the book in that it includes Im[] terms. Can someone explain why, and how do I get rid of them? I tried Re[] but result is left unevaluated if expr is not a numeric quantity. Note I have used the built in Norm[] function, not a user defined function like Michael. You could use *Assuming[]* and tell Mathematica that the imaginary part of x, y, and z is zero. For instance, In[1]:= infiniteWire[t_] = {0, 0, t}; sol1 = Assuming[{Im[x] == 0, Im[y] == 0, Im[z] == 0}, Integrate[Cross[D[infiniteWire[t], t], {x, y, z} - infiniteWire[t]]/ Norm[{x, y, z} - infiniteWire[t]]^3, {t, -Infinity, Infinity}, GenerateConditions -> False]] Out[2]= 2 y 2 x {-(-------), -------, 0} 2 2 2 2 x + y x + y > Ultimately, what I need is the solution for the Integral below: > > > sol2 = Integrate[ > Cross[D[infiniteWire[t], t], {x, y, z} - infiniteWire[t]]/ > Norm[{x, y, z} - infiniteWire[t]]^3, > {t, 0, L}, > GenerateConditions -> False] > > > This corresponds to the case where current flows in a straight line from the origin in x-y-z space to a point at a distance L along the Z axis. Here, you may want to add some condition on L. For instance, In[6]:= sol2 = Assuming[{Im[x] == 0, Im[y] == 0, Im[z] == 0, L >= 0}, Integrate[Cross[D[infiniteWire[t], t], {x, y, z} - infiniteWire[t]]/ Norm[{x, y, z} - infiniteWire[t]]^3, {t, 0, L}, GenerateConditions -> False]] Out[6]= 2 2 x + y 2 2 2 y (Sqrt[1 + --------] z - Sqrt[x + y + z ]) 2 (L - z) {Piecewise[{{-----------------------------------------------, 2 2 2 2 x + y 2 2 2 (x + y ) Sqrt[1 + --------] Sqrt[x + y + z ] 2 (L - z) L > 0 && z >= 0}, {-( 2 2 x + y 2 2 2 y (Sqrt[1 + --------] z + Sqrt[x + y + z ]) 2 (L - z) -----------------------------------------------), L > 0 && z < 0} 2 2 2 2 x + y 2 2 2 (x + y ) Sqrt[1 + --------] Sqrt[x + y + z ] 2 (L - z) 2 2 x + y 2 2 2 x (Sqrt[1 + --------] z - Sqrt[x + y + z ]) 2 (L - z) }], Piecewise[{{-(-----------------------------------------------), 2 2 2 2 x + y 2 2 2 (x + y ) Sqrt[1 + --------] Sqrt[x + y + z ] 2 (L - z) 2 2 x + y 2 2 2 x (Sqrt[1 + --------] z + Sqrt[x + y + z ]) 2 (L - z) L > 0 && z >= 0}, {-----------------------------------------------, 2 2 2 2 x + y 2 2 2 (x + y ) Sqrt[1 + --------] Sqrt[x + y + z ] 2 (L - z) L > 0 && z < 0}}], 0} Regards, -- Jean-Marc
- Follow-Ups:
- Mapping and AppendTo
- From: "Schettler, Martin" <MSchettler@scitor.com>
- Mapping and AppendTo