MathGroup Archive 2009

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

Search the Archive

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

On 3/24/09 at 5:30 AM, Serych at (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

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

I don't get an error when using your code above. That is:

In[1]:= sol = {{i1 -> 220/x}, {i2 -> 100 + x}};
myfun[x_] := 50*i1 + 2*i2 /. sol

Out[3]= {2 i2+11000/x,50 i1+2 (x+100)}

However, I think you probably didn't want a list as a result.
So, I think this is more likely to be what you wanted:

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

Out[6]= 2 (x+100)+11000/x

I note using global variables in a function definition isn't
good programming practice. It is far to easy to assign values to
those variables which will cause the function to return
something other than what was intended. And when this occurs, it
is often difficult to find the problem.

  • Prev by Date: Re: SetDelayed::write ... [x_] is protected
  • Next by Date: Re: solving nonlinear simultaneous equations
  • Previous by thread: Re: SetDelayed::write ... [x_] is protected
  • Next by thread: Re: SetDelayed::write ... [x_] is protected