Re: making a function linear
- To: mathgroup at smc.vnet.net
- Subject: [mg25518] Re: [mg25473] making a function linear
- From: "Carl K. Woll" <carlw at u.washington.edu>
- Date: Thu, 5 Oct 2000 23:50:38 -0400 (EDT)
- References: <200010030226.WAA06503@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Murray, How about giving T the attribute HoldAll? This works for your example: In[10]:= SetAttributes[T, HoldAll] T[a_?VectorQ + b_?VectorQ] := T[a] + T[b] T[c_ a_?VectorQ] := c T[a] In[13]:= a = {1, 2}; T[a] = {3, 4}; b = {5, 6}; T[b] = {7, 8}; In[15]:= T[a + b] Out[15]= {10, 12} In[16]:= T[2a] Out[16]= {6, 8} I know you didn't want to use a Hold variant, but this method is very simple, and it doesn't involve using Hold in the definition of T, so perhaps this will work for you. Carl ----- Original Message ----- From: "Murray Eisenberg" <murray at math.umass.edu> To: mathgroup at smc.vnet.net Subject: [mg25518] [mg25473] making a function linear > For a function T not yet having any "definition by formula" (T[x_] := > ..... ), I want to specify the linearity rules: > > T[x_?VectorQ + y_?VectorQ] := T[x] + T[y] > > T[c_ x_?VectorQ] := c T[x] > > Then, merely by specifying, say, > > a = {1, 2}; T[a] = {3, 4}; > b = {5, 6}; T[b] = {7, 8}; > > evaluating > > T[2 a] > T[a + b] > > would return results: > > {6, 8} > {10, 12} > > The trouble is, of course, that Mathematica first evaluates 2 a and a + > b when a and b have actual numeric values, so the two linearity rules > never get used. > > What is a SIMPLE way (if there is one) to accomplish this -- preferably > some way to do it that does not explicitly require using some Hold > variant? (I need to be able to explain how to do it early in a linear > algebra course where Mathematica is being introduced, and Hold, etc., I > consider a definitely advanced topic.) > > > -- > Murray Eisenberg murray at math.umass.edu > Mathematics & Statistics Dept. phone 413 549-1020 (H) > Univ. of Massachusetts 413 545-2859 (W) > Amherst, MA 01003-4515 >
- References:
- making a function linear
- From: Murray Eisenberg <murray@math.umass.edu>
- making a function linear