Re: Not a machine-size real number?

*To*: mathgroup at smc.vnet.net*Subject*: [mg9305] Re: [mg9260] Not a machine-size real number?*From*: David Withoff <withoff>*Date*: Mon, 27 Oct 1997 02:47:17 -0500*Sender*: owner-wri-mathgroup at wolfram.com

> Hello, I am trying to do the following in Mahtematica 3.0.0 for Linux > > BB[I_,a_,NN,d_,z_]= (I*NN/(2*d))*(z/Sqrt[a^2+z^2]) > Plot[BB[1,0.05,100,0.01,z],{z,-1,1}] > > Instead of getting the plot, I get the following error message: > > Plot::"plnr": > BB[1,0.05,100,0.01,z] ] is not a machine-size real number at z = -1 .. > > Plot::"plnr": > BB[1,0.05,100,0.01,z] ] is not a machine-size real number at z = > -0.918866 > > Plot::"plnr": > BB[1,0.05,100,0.01,z] ] is not a machine-size real number at z = > -0.830382 .. > > General::"stop": > Further output of Plot::"plnr" will be suppressed during this > calculation. > > --------------------------------------------------- > > What does this mean? Is the definition of my function incorrect? > Thank you very much in advance > > -- > > -- > Pedro Soria-Rodriguez > sorrodp at ece.wpi.edu There are two separate problems here. One problem is related to the fact that the symbol "I" is a built-in symbol in Mathematica. This symbol evaluates to the square root of minus one. In your example, the "I" on the left-hand side of BB[I_,a_,NN,d_,z_]= (I*NN/(2*d))*(z/Sqrt[a^2+z^2]) refers to your variable, but the "I" on the right-hand side evaluates to a number (the square root of minus one). You can fix this part of the problem by using a delayed assignment (lhs := rhs) rather than an immediate assignment (lhs = rhs), which will prevent the "I" on the right-hand side of the rule from evaluating to a number, but a much better solution is to use some symbol other than "I" as the name of your variable. The other problem is that the NN on the left-hand side of this definition is not followed by an underscore, and so will be treated literally, rather than as a placeholder for a variable. That is, this rule will only be used if the third argument is explicitly NN. If you use BB[II_,a_,NN_,d_,z_]= (II*NN/(2*d))*(z/Sqrt[a^2+z^2]) then you example should work fine. Dave Withoff Wolfram Research