[SciPy-user] Partial Derivatives

Travis Oliphant oliphant at ee.byu.edu
Fri Feb 25 17:56:21 CST 2005

R. Padraic Springuel wrote:

> Is there a way to use the "derivative" function to take a partial 
> derivative?  What if one of the inputs is a list of numbers instead of 
> a single number?
> Example:
> def y(x,p):
>    return p[0] + p[1]*x + p[2]*x**2
> I can get the derivative with respect to x fairly easily with the 
> following:
> derivative(y, 3, args=([[0, 0, 1]])
> where the numbers can be arbitrarily replaced.  However I can't seem 
> to get the derivative with respect to say p[0] or any other member of 
> p.  I keep getting a TypeError regarding the number of arguments for 
> y.  Any suggestions?

derivative is hard-wired for the first argument.  This could be changed 
relatively easily and is a nice suggestion.

In the mean-time, you can define intermediate functions:

def y2(p0,x,p1,p2):
       return y(x,[p0,p1,p2])

def y3(p1, x, p0, p2):
       return y(x,[p0,p1,p2])

def y4(p2, x, p0, p1):
       return y(x, [p0, p1, p2])

and use derivative on those functions.


More information about the SciPy-user mailing list