Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Controlling function arguments

  • To: mathgroup at smc.vnet.net
  • Subject: [mg48828] Re: Controlling function arguments
  • From: "Dr. Wolfgang Hintze" <weh at snafu.de>
  • Date: Fri, 18 Jun 2004 02:12:50 -0400 (EDT)
  • References: <carkcp$r9g$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Virgil,

the function NumberVectorQ[x] gives True if both x is a vector and if 
all components of x are numbers, and False otherwise. It is a good 
example of two basic list operations in Mathematica, Map and Apply.

In[1]:=
NumberVectorQ[x_] := VectorQ[x] && And @@ NumberQ /@ x;

Example

In[29]:=
x = {1, 3, 2};

In[28]:=
VectorQ[x]

Out[28]=
True

The next expression gives True if all components of x are numbers

And @@ NumberQ /@ x

Out[20]=
True

Let's analyse it step by step going from right to left:

step 1)
f/@x (which is a shortcut for Map[f,x]) applies function f to every 
component of x. Hence

In[21]:=
y = Map[NumberQ, x]

Out[21]=
{True, True, True}

Step 2)
f@@y (which is a shortcut for Apply[f,y]) sets the list y as a parameter 
list of function f. Hence

In[22]:=
z = Apply[And, y]

Out[22]=
True

and, finally

In[23]:=
VectorQ[x] && z

Out[23]=
True

functionx[k_Integer?Positive, v_?NumberVectorQ,...] defines a function f 
with a parameter k that must be a positive integer, and a parameter v 
that must be a vector having only numbers as components. If the 
parameters do not all fit to these conditions the function f is returned 
unevaluated.

Hope this helps,
Wolfgang

Virgil Stokes wrote:

> I found the following Mathematica code:
> 
>   NumberVectorQ[x_] := VectorQ[x] && And @@ NumberQ /@ x;
>   functionx[k_Integer?Positive, v_?NumberVectorQ, w_?NumberVectorQ, 
> q_?NumberVectorQ] := .....
> 
> where, I have left out the body of this function (functionx). What does 
> the first line actually accomplish?
> 
> --V. Stokes
> 
> 
> 
> 
> 


  • Prev by Date: Re: Integration error in 5.0?
  • Next by Date: Re: Numerical integration inside numerical integration
  • Previous by thread: Re: Controlling function arguments
  • Next by thread: Numerical integration inside numerical integration