ParthKohli 2 years ago How to make a function that finds the derivative using python? Is there a built-in one?

• This Question is Open
1. Chris2332

Just create a recursive function that multiplies the factor by the exponential and then decrements the exponent with each call.

2. Rohangrr

Binding variables as if you want to find the area of a circle use this >>>> pi = 3.14159 >>>> radius = 11.2 >>>> area = pi( radius ** 2) >>>> area = 394.081

3. Chris2332

Huh? Did I miss something?

4. ParthKohli

@chris2332: That doesn't work for other functions... only polynomials.

5. Rohangrr

maybe!!

6. Chris2332

Something like that? def derivative(f): ....""" ....Computes the numerical derivative of a function. ....""" ....def df(x, h=0.1e-5): ........return ( f(x+h/2) - f(x-h/2) )/h ....return df

7. ParthKohli

Uh... no

8. Chris2332

Then what derivative do you want?

9. Rohangrr

The mathematical definition of the derivative of a function f(x) at point x is to take a limit as "h" goes to zero of the following expression: ( f(x+h) - f(x) ) / h An example is given below: the red curve is the function f(x) and the green curve is the tangent line at x (with same slope as the derivative). The blue curve is a line going through x whose slope equals that of the above formula with a non-zero value of h. A better way of numerically computing the derivative for the same value of "h" is by taking a symmetrical interval around x as follows: ( f(x + h/2) - f(x - h/2) ) / h This is illustrated in the next picture. As you can see, the two straight lines have much more similar slopes - hence, the value computed for the derivative is going to be more accurate. The corresponding python code is as follows: def derivative(f): ....""" ....Computes the numerical derivative of a function. ....""" ....def df(x, h=0.1e-5): ........return ( f(x+h/2) - f(x-h/2) )/h ....return df And we use it as follows: # sample function def g(x): return x*x*x # first derivative dg = derivative(g) # second derivative d2g = derivative(dg) # == derivative(derivative(g)) # printing the value computed at a given point: print dg(3) print dg(3, 0.001) print dg(3, 1e-10) # smaller h is not always more precise source : http://aroberge.blogspot.in/2005/04/computing-derivatives-using-python.html

10. Chris2332

Exactly... that's where I got the snippet from!

11. Rohangrr

@ParthKohli where u r??

12. estudier

from sympy import init_printing, symbols, ln, diff init_printing() x,y = symbols('x y') f = x**2 / y + 2 * x - ln(y) diff(f,x) -> 2*x/y +2

13. estudier

I am assuming u do not want to reinvent the wheel, so just use sympy....

14. TuringTest

The next Pset in 6.00x has one problem in which to find the derivative of polynomials written as lists. I would show you the program I wrote but I don't want to give out the answer before the due date.

15. ParthKohli

Heh, I'm not following that course.

16. TuringTest

then I will pm my code to you, but don't give it to anyone taking the course

17. ParthKohli

Yup! I discovered this Python group so thought I'd ask...

18. estudier

numPy/sciPy are good too....