Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1992
*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 1992

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

Search the Archive

Re: Boolean 0/1 function -- Conditional definitions and Thread

  • To: mathgroup <mathgroup at yoda.physics.unc.edu>
  • Subject: Re: Boolean 0/1 function -- Conditional definitions and Thread
  • From: HAY at leicester.ac.uk
  • Date: Thu, 5 NOV 92 15:38:27 GMT

Following up Robby Villegas's observation about using Thread here is a a little
number featuring it. Many variations are possible.

Let

xlist = {a,b,c,d};

condns = Thread[LessEqual[Drop[xlist,-1], y, Drop[xlist,1]]]

	{a <= y <= b, b <= y <= c, c <= y <= d}

fvalues = Thread[f[y,Drop[xlist,-1]]]

	{f[y, a], f[y, b], f[y, c]}

Thread[If@@{condns, fvalues, 0}]

	{If[a <= y <= b, f[y, a], 0], If[b <= y <= c, f[y, b], 0], 
  	If[c <= y <= d, f[y, c], 0]}

Plus@@%

	If[a <= y <= b, f[y, a], 0] + If[b <= y <= c, f[y, b], 0] + 
  	If[c <= y <= d, f[y, c], 0]

The construction  If@@{....} is needed since If has the attribute HoldAll; so we
get 

Thread[If[condns, fvalues, 0]]

	If[condns, fvalues, 0]

Re Robby's warning

> fvalues = Thread[ f[y, xlist] ]

> as long as 'y' isn't a list itself (if it's a number, say).


We can get round this problem by using the extra slots in  Thread

Thread[ f[{1,4}, xlist], List, -1 ]

	{f[{1, 4}, a], f[{1, 4}, b], f[{1, 4}, c], f[{1, 4}, d]}

Allan Hayes
hay at leicester.ac.uk





  • Prev by Date: More Postscript problems.
  • Next by Date: Conversion to Tex
  • Previous by thread: More Postscript problems.
  • Next by thread: StartUp`Elliptic` fix