# Doing Automatic Differentiation

• Python

## Main Question or Discussion Point

This is a brief interactive session using my ODE Playground, which is my repository of Automatic Differentiation code. It illustrates two solutions of ##\sqrt {2}## with the user-specified function provided via a lambda, using Newton's method and then bisection. Note that the user needs to provide no step sizes or other requirements or artifacts of numerical differencing, just the function itself!

Python:
$ipython3 Python 3.7.1 (default, Oct 22 2018, 11:21:55) Type 'copyright', 'credits' or 'license' for more information IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: from ad import * ad module loaded In [2]: from playground import * playground module loaded In [3]: newton(lambda x: (x**2), x0=1.0, target=2.0) Out[3]: ResultType(count=7, sense='', mode='ROOT', x=1.414213562373095, f=2.0000000000000004, dx=-1.5700924586837747e-16) In [4]: bisect(lambda x: (x**2), xa=1.4, xb=1.5, target=2.0) Out[4]: ResultType(count=38, sense='', mode='ROOT', x=1.4142135623733338, f=2.0000000000006755, dx=7.276401703393276e-13) Enjoy! Last edited: jedishrfu and Dale ## Answers and Replies Related Programming and Computer Science News on Phys.org OK here's some dual numbers: Code:$ ipython3
Python 3.7.1 (default, Oct 22 2018, 11:21:55)
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from ad import *

In [2]: a = Dual.get(3.0)

In [3]: b = Dual.get(5.0)

In [4]: c = Dual.get(7.0, variable=True)

In [5]: print(a)
3.0 0.0

In [6]: print(b)
5.0 0.0

In [7]: print(c)
7.0 1.0

In [8]: print(c**2 - a * c)
28.0 11.0