MathGroup Archive 2012

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

Search the Archive

Re: Equality...

  • To: mathgroup at smc.vnet.net
  • Subject: [mg125716] Re: Equality...
  • From: A Retey <awnl at gmx-topmail.de>
  • Date: Fri, 30 Mar 2012 04:30:47 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jl14hh$l4t$1@smc.vnet.net>

Hi,

>
> I have a matrix with nxn varaibles an entry and want to assign values
> to each of the entries. How can I do this in one go?
>
> I was hoping something like this works, but it doesn't...
>
> Array[Subscript[a, #1, #2]&, {3, 4}] = Array[Random[1], {3, 4}]
>
> Any tips are apprecited.

Set has attribute HoldFirst (for obvious reasons). It does partially 
evaluate its first argument in some cases, but not in this. So you need 
an explicit Evaluate (note that this will only work if no corresponding 
values were defined before):

Evaluate[Array[Subscript[a, #1, #2] &, {3, 4}]] =
  RandomReal[{0, 1}, {3, 4}]

It's not trivial to unset those definitions which you need to do if you 
want to reset those values, here is something I came up with, but I feel 
there must be simpler methods:

ReleaseHold[
  Map[Unset,
   Block[{Subscript},
    Hold @@ {Array[Subscript[a, #1, #2] &, {3, 4}]}], {3}]
  ]

On the other hand, I would suggest to use either:

a = RandomReal[{0, 1}, {3, 4}]

and then access these values with:

a[[i,j]]

or (note that this is one of the cases where the first argument of Set 
is partially evaluated):

Do[a[i,j]=RandomReal[],{i,3},{j,4}]

and:

a[2,3]

which will make your life easier when actually working with these in the 
following code.

hth,

albert



  • Prev by Date: Re: Schaums outline Mathematica 2nd ed, prob. 11.3 help
  • Next by Date: Re: PC auto-simplifies output, but mac doesn't
  • Previous by thread: Re: Equality...
  • Next by thread: PC auto-simplifies output, but mac doesn't