Re: Defining derivatives
- To: mathgroup at smc.vnet.net
- Subject: [mg87981] Re: Defining derivatives
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Mon, 21 Apr 2008 06:40:18 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <fu9vnl$igu$1@smc.vnet.net> <fueeme$b6g$1@smc.vnet.net> <fuhfi8$isc$1@smc.vnet.net>
dh wrote:
> Hi Jean-Marc,
>
> is this a typo?: f'[x] ^:= f2[x]
>
> this would only worj for the variable x.
>
> Daniel
Hi Daniel,
Wow, that's hurt! You are right, of course. I apologize for the
confusion that may have resulted.
The correct expression is
f' ^:= f2;
Nevertheless, this approach is less generic than Carl Woll's solution
Derivative[1][f1] = f2;
(Note that f' = f2 is also less generic than the above.)
(* Using up values *)
Remove["Global`*"]
f[x_] := f1[x]
f' ^:= f2
f'[x]
D[f[x], x]
f'[c]
D[f[c], c]
Out[4]= f2[x]
Out[5]= f1'[x]
Out[6]= f2[c]
Out[7]= f1'[c]
{* Carl Woll's solution *}
Remove["Global`*"]
f[x_] := f1[x]
Derivative[1][f1] = f2;
f'[x]
D[f[x], x]
f'[c]
D[f[c], c]
Out[11]= f2[x]
Out[12]= f2[x]
Out[13]= f2[c]
Out[14]= f2[c]
(* Another possibility, but less generic *)
Remove["Global`*"]
f[x_] := f1[x]
f' = f2;
f'[x]
D[f[x], x]
f'[c]
D[f[c], c]
Out[18]= f2[x]
Out[19]= f1'[x]
Out[20]= f2[c]
Out[21]= f1'[c]
Best regards,
-- Jean-Marc
> Jean-Marc Gulliet wrote:
>
>> dh wrote:
>
>>> Hello All,
>
>
>>> does anybody know how to define symbolic derivatives. E.g.:
>
>
>>> f[x_]:=f1[x];
>
>
>>> f'[x_]:=f2[x];
>
>
>>> this does not work because f on the lefthand side is evaluated. To
>
>
>>> prevent this (do not forget to remove f before redefining it):
>
>
>>> f[x_]:=f1[x];
>
>
>>> HoldPattern[f'[x_]]:=f2[x];
>
>
>>> this gives no message, but f'[x] returns f1[x] instead of f2[x].
>
>
>>> The same thinhg happens when you change the sequence of definitions:
>
>
>>> f'[x_]:=f2[x];
>
>
>>> f[x_]:=f1[x];
>
>
>> <snip>
>
>
>> Daniel,
>
>
>> You should use *up values*. You can define them thanks to *UpSet[]* or
>
>> *UpSetDelayed[]*. For instance,
>
>
>> In[1]:= Remove[f]
>
>> f[x_] := f1[x]
>
>> f'[x] ^:= f2[x]
>
>> f'[x]
>
>
>> Out[4]= f2[x]
>
>
>> Best regards,
>
>> -- Jean-Marc
>
>
>
>