Re: Defining derivatives

*To*: mathgroup at smc.vnet.net*Subject*: [mg87879] Re: Defining derivatives*From*: Szabolcs Horvát <szhorvat at gmail.com>*Date*: Sat, 19 Apr 2008 03:34:40 -0400 (EDT)*Organization*: University of Bergen*References*: <fu9vnl$igu$1@smc.vnet.net>

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]; Hi Daniel, It seems that Mathematica is not prepared to accept that the derivative of f[x] is f2[x] unless you also tell it that f1'[x] is f2[x]. A workaround is to use f' = f2 instead of f'[x_] := f2[x] This appears to work in simple cases. > > Further, where is the information about derivatives stored? > It is stored as a SubValue of Derivative. Try f'[x_] := g[2 x] SubValues[f] or just remove the ReadProtected attrbute of Derivative and use ?? Derivative (There are quite a few *Values functions, e.g. NValues. Just try Names["*Values"]. Unfortunately these functions are not very well documented.) I hope this helps, Szabolcs