MathGroup Archive 2011

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

Search the Archive

Re: Manipulate for differences tables. Can I call as function?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121682] Re: Manipulate for differences tables. Can I call as function?
  • From: A Retey <awnl at gmx-topmail.de>
  • Date: Mon, 26 Sep 2011 04:12:38 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j5mmde$rqj$1@smc.vnet.net>

Am 25.09.2011 09:49, schrieb Christopher O. Young:
> I'd like to be able to use this Manipulate expression, which works fine on
> its own, as a function that I can pass a list of integers to. The following
> isn't allowed. Any hints on how to go about doing this?

Manipulate has Attribute HoldAll, so it does see an unevaluated With 
where it wants an options. Actually there is no reason to use the With 
at all, so this will work fine:

diffTablePlot[intList_] :=
  Manipulate[
   Column[{Column[
      Table[Grid[{Differences[list, i]}, ItemSize -> {w, h}], {i, 0,
        n}], Alignment -> alignment],(*Column*)
     ListLinePlot[
      Table[Table[
        With[{offset = If[alignment == "Left", 0, j 0.5]}, {startX +
           offset + (i - 1), Differences[list, j][[i]]}], {i, 1,
         Length[Differences[list, j]]}], {j, 0, n}],
      PlotMarkers -> Graphics[{PointSize[Medium], Point[{0, 0}]}],
      PlotStyle -> Table[Hue[0.85 k/n], {k, 0, n}],
      PlotRange -> {{startX, startX + Length[list] - 1}, {Min[list],
         Max[list]}},
      GridLines -> {Range[startX, startX + Length[list]],
        Range[Min[list], Max[list]]},
      AspectRatio -> (Max[list] - Min[list])/Length[list],
      Frame -> True,
      GridLinesStyle ->
       Directive[Gray, Dotted]]      (*Column*)}],(*Column*)
   "Finite difference table for a list of numbers", {list,
    InputField}, {alignment, {"Left", "Center"}}, {{startX, 1,
     "Start x"}, -10, 10, 1}, {{n, 4}, 1, Length[list] - 1,
    1},(*Number of rows of differences*){{w, 3}, 0,
    4},(*width and height of each item*){{h, 1}, 0, 4},
   Initialization :> (list =
      If[intList != "", intList, Table[2^k, {k, -4, 4}]])
   ]

Do you know about how to set default values in functions? This will 
allow you to call diffTablePlot with no arguments:

diffTablePlot[intList_:""]:=...

Also I think that using Null or None instead of "" as a marker for "no 
list given" might be more conventional coding style, if you have any 
intention to conform to conventions :-)

hth,

albert




  • Prev by Date: Re: A fast way to compare two vectors
  • Next by Date: Re: Arbitrary vector
  • Previous by thread: Manipulate for differences tables. Can I call as function?
  • Next by thread: Elementwise Matrix Subtraction