Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: SetDelayed::write ... [x_] is protected

  • To: mathgroup at smc.vnet.net
  • Subject: [mg97964] Re: SetDelayed::write ... [x_] is protected
  • From: dh <dh at metrohm.com>
  • Date: Thu, 26 Mar 2009 05:25:47 -0500 (EST)
  • References: <16449487.41188.1237895183797.JavaMail.hanlonr@127.0.0.1> <gqd1pd$ns5$1@smc.vnet.net>


Hi Jakub,

the problem is the delayed assignment. Functions arguments are 

substituted before the function code is evaluated. "x" does nowhere 

appear in the function body and is therefore not substituted. On the 

other hand, in a direct assignment, what is stored is:

11000/x + 2 (100 + x)

and the problem disappears.

Daniel



Serych Jakub wrote:

> Thanks for the Flatten, now it seem that it works (without any error

> messages), but in fact it doesn't work.

> 

> sol = {{i1 -> 220/x}, {i2 -> 100 + x}};

> myfun[x_] := 50*i1 + 2*i2 /. Flatten[sol]

> (no errors here) but:

> 

> In: myfun[1]

> 

> Out: 11000/x + 2 (100 + x)

> 

> and not 11202 which would be result for argument 1.

> 

> So it cannot recognize (or connect together with the pattern x_) the =

> variable

> x in the result from sol.

> 

> What to do with it?

> 

> Thanks

> 

> Jakub 

> 

> 

>> -----Original Message-----

>> From: Bob Hanlon [mailto:hanlonr at cox.net]

>> Sent: Tuesday, March 24, 2009 12:46 PM

>> To: Serych Jakub

>> Cc: mathgroup at smc.vnet.net

>> Subject: RE:  is protected

>>

>> sol = {{i1 -> 220/x}, {i2 -> 100 + x}};

>>

>> myfun[x_] = 50*i1 + 2*i2 /. Flatten[sol]

>>

>> 2*(x + 100) + 11000/x

>>

>>

>>

>> Bob Hanlon

>>

>>

>> On Tue, Mar 24, 2009 at 7:46 AM , Serych Jakub wrote:

>>

>>> Dear M users,

>>> I have solution of equations which is dependend on one

>> parameter lets

>>> say:

>>> sol={{i1->220/x}, {i2 -> 100+x}} and I need to define

>> function based

>>> on this solution with the x as argument lets say:

>> myfun[x_]:=50*220/x

>>> + 2 (100+x);

>>>

>>> I'm trying to do it like this:

>>>

>>> myfun[x_]:=50 * i1 + 2 * i2 /. sol

>>>

>>> But it prints the error message: "SetDelayed::write ... [x_] is

>>> protected".

>>>

>>> Does anybody know what's the problem and how to define such

>> function?

>>> Thanks in advance

>>>

>>> Jakub

> 




  • Prev by Date: Re: Unexpected behavior of Floor and IntegerPart
  • Next by Date: Re: SetDelayed::write ... [x_] is protected
  • Previous by thread: Re: Re: SetDelayed::write ... [x_] is protected
  • Next by thread: Re: SetDelayed::write ... [x_] is protected