Re: Arg[z] that works with zero argument?
- To: mathgroup at smc.vnet.net
- Subject: [mg50909] Re: Arg[z] that works with zero argument?
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Mon, 27 Sep 2004 00:42:19 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 9/26/04 at 5:31 AM, siegman at stanford.edu (AES/newspost) wrote: >In article <cj32c8$55k$1 at smc.vnet.net>, >Bill Rowe <readnewsciv at earthlink.net> wrote: > >>Did you try Arg[z] where z is a list? >>Attributes[Arg] {Listable, NumericFunction, Protected} >> >>Arg[Table[Random[], {4}]] {0, 0, 0, 0} >>The attribute Listable tells you Arg will accept a list as a >>argument and do the right thing. >Yes, the problem is that if some of the elements in the argument >list of Arg[z] are zeros, the "right thing" that the standard >version of Arg does for those elements is to return some long >string (forget exactly what it is). Well since Arg[z] is defined as x such that z == Abs[z] Exp[I x], it is undefined when z is 0. So, you should be getting an error message. >If you then print the returned list in MatrixForm, these elements >make all the columns involved become very wide. I'd like Arg[0] to >just return 0, or maybe "*" or something like that, for those >argument list elements that are themselves 0. >And, you can't use some superficially plausible workaround like >myArg[z_] := If[ Abs[z]==0, 0, Arg[z] ] >because the initial test doesn't do what you want if z is a list. If you want Arg[0] to be 0 and work on lists the approach above will work if you first set the attributes of myArg correctly, i.e., SetAttributes[myArg, Listable] myArg[z_]:= If[Abs[z]==0, 0 Arg[z]] will do what you want. An alternative would be to unprotect Arg then add definitions for 0, i.e., Unprotect[Arg]; Arg[0]=0; Arg[0.]=0; Protect[Arg]; Now Arg[0[ will be defined as 0. -- To reply via email subtract one hundred and four