61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011....
Transcript of 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011....
![Page 1: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/1.jpg)
61A Lecture 6
Friday, September 9
Friday, September 9, 2011
![Page 2: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/2.jpg)
Lambda Expressions
2
Friday, September 9, 2011
![Page 3: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/3.jpg)
Lambda Expressions
2
>>> ten = 10
Friday, September 9, 2011
![Page 4: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/4.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
Friday, September 9, 2011
![Page 5: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/5.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
An expression: this one evaluates to a number
Friday, September 9, 2011
![Page 6: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/6.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Friday, September 9, 2011
![Page 7: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/7.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Also an expression: evaluates to a function
Friday, September 9, 2011
![Page 8: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/8.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Also an expression: evaluates to a function
A function
Friday, September 9, 2011
![Page 9: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/9.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Also an expression: evaluates to a function
with formal parameter xA function
Friday, September 9, 2011
![Page 10: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/10.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Also an expression: evaluates to a function
and body "return x * x"with formal parameter x
A function
Friday, September 9, 2011
![Page 11: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/11.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Also an expression: evaluates to a function
and body "return x * x"with formal parameter x
A functionNotice: no "return"
Friday, September 9, 2011
![Page 12: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/12.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
An expression: this one evaluates to a number
Also an expression: evaluates to a function
and body "return x * x"with formal parameter x
A functionNotice: no "return"
Must be a single expression
Friday, September 9, 2011
![Page 13: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/13.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
>>> square(4)16
An expression: this one evaluates to a number
Also an expression: evaluates to a function
and body "return x * x"with formal parameter x
A functionNotice: no "return"
Must be a single expression
Friday, September 9, 2011
![Page 14: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/14.jpg)
Lambda Expressions
2
>>> ten = 10
>>> square = x * x
>>> square = lambda x: x * x
>>> square(4)16
An expression: this one evaluates to a number
Also an expression: evaluates to a function
and body "return x * x"with formal parameter x
A function
Lambda expressions are rare in Python, but important in general
Notice: no "return"
Must be a single expression
Friday, September 9, 2011
![Page 15: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/15.jpg)
Lambda Expressions Versus Def Statements
3
Friday, September 9, 2011
![Page 16: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/16.jpg)
Lambda Expressions Versus Def Statements
3
VS
Friday, September 9, 2011
![Page 17: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/17.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x VS
Friday, September 9, 2011
![Page 18: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/18.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
Friday, September 9, 2011
![Page 19: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/19.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
• Both create a function with the same arguments & body
Friday, September 9, 2011
![Page 20: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/20.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
• Both create a function with the same arguments & body
• Both of those functions are associated with the environment in which they are defined
Friday, September 9, 2011
![Page 21: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/21.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
• Both create a function with the same arguments & body
• Both of those functions are associated with the environment in which they are defined
• Both bind that function to the name "square"
Friday, September 9, 2011
![Page 22: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/22.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
• Both create a function with the same arguments & body
• Both of those functions are associated with the environment in which they are defined
• Both bind that function to the name "square"
• Only the def statement gives the function an intrinsic name
Friday, September 9, 2011
![Page 23: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/23.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
• Both create a function with the same arguments & body
• Both of those functions are associated with the environment in which they are defined
• Both bind that function to the name "square"
• Only the def statement gives the function an intrinsic name
<lambda>(x):
return x * x
Friday, September 9, 2011
![Page 24: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/24.jpg)
Lambda Expressions Versus Def Statements
3
square = lambda x: x * x def square(x): return x * xVS
• Both create a function with the same arguments & body
• Both of those functions are associated with the environment in which they are defined
• Both bind that function to the name "square"
• Only the def statement gives the function an intrinsic name
<lambda>(x):
return x * x
square(x):
return x * x
Friday, September 9, 2011
![Page 25: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/25.jpg)
Function Currying
4
Friday, September 9, 2011
![Page 26: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/26.jpg)
Function Currying
4
def make_adder(n): return lambda k: n + k
Friday, September 9, 2011
![Page 27: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/27.jpg)
Function Currying
4
def make_adder(n): return lambda k: n + k
>>> make_adder(2)(3)5>>> add(2, 3)5
Friday, September 9, 2011
![Page 28: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/28.jpg)
Function Currying
4
def make_adder(n): return lambda k: n + k
>>> make_adder(2)(3)5>>> add(2, 3)5
There's a general relationship between
these functions
Friday, September 9, 2011
![Page 29: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/29.jpg)
Function Currying
4
def make_adder(n): return lambda k: n + k
>>> make_adder(2)(3)5>>> add(2, 3)5
There's a general relationship between
these functions
Currying: Transforming a multi-argument function into a single-argument, higher-order function.
Friday, September 9, 2011
![Page 30: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/30.jpg)
Function Currying
4
def make_adder(n): return lambda k: n + k
>>> make_adder(2)(3)5>>> add(2, 3)5
There's a general relationship between
these functions
Currying: Transforming a multi-argument function into a single-argument, higher-order function.
Fun Fact: Currying was discovered by Moses Schönfinkel and later re-discovered by Haskell Curry.
Friday, September 9, 2011
![Page 31: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/31.jpg)
Function Currying
4
def make_adder(n): return lambda k: n + k
>>> make_adder(2)(3)5>>> add(2, 3)5
There's a general relationship between
these functions
Currying: Transforming a multi-argument function into a single-argument, higher-order function.
Fun Fact: Currying was discovered by Moses Schönfinkel and later re-discovered by Haskell Curry.
Schönfinkeling?
Friday, September 9, 2011
![Page 32: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/32.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
Friday, September 9, 2011
![Page 33: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/33.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
y = x2 - 2
Friday, September 9, 2011
![Page 34: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/34.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
-5 -2.5 0 2.5 5
-2.5
2.5
y = x2 - 2
Friday, September 9, 2011
![Page 35: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/35.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
-5 -2.5 0 2.5 5
-2.5
2.5
y = x2 - 2 A "zero"
Friday, September 9, 2011
![Page 36: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/36.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
-5 -2.5 0 2.5 5
-2.5
2.5
y = x2 - 2 A "zero"
x=1.414213562373095
Friday, September 9, 2011
![Page 37: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/37.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
-5 -2.5 0 2.5 5
-2.5
2.5
y = x2 - 2 A "zero"
Application: a method for (approximately) computing square roots, using only basic arithmetic.
x=1.414213562373095
Friday, September 9, 2011
![Page 38: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/38.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
-5 -2.5 0 2.5 5
-2.5
2.5
y = x2 - 2 A "zero"
Application: a method for (approximately) computing square roots, using only basic arithmetic.
The positive zero of y = x2 - a is
x=1.414213562373095
Friday, September 9, 2011
![Page 39: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/39.jpg)
Newton's Method Background
Finds approximations to zeroes of differentiable functions
5
-5 -2.5 0 2.5 5
-2.5
2.5
y = x2 - 2 A "zero"
Application: a method for (approximately) computing square roots, using only basic arithmetic.
The positive zero of y = x2 - a is
x=1.414213562373095
√
Friday, September 9, 2011
![Page 40: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/40.jpg)
Newton's Method
6
Begin with a function f and
an initial guess x
− )
Friday, September 9, 2011
![Page 41: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/41.jpg)
Newton's Method
6
Begin with a function f and
an initial guess x
− )
Friday, September 9, 2011
![Page 42: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/42.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
6
Begin with a function f and
an initial guess x
− )
Friday, September 9, 2011
![Page 43: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/43.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
6
Begin with a function f and
an initial guess x
(x, f(x))
− )
Friday, September 9, 2011
![Page 44: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/44.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
2. Compute the derivative of f at guess: f'(x)
6
Begin with a function f and
an initial guess x
(x, f(x))
− )
Friday, September 9, 2011
![Page 45: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/45.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
2. Compute the derivative of f at guess: f'(x)
3. Update guess x to be:
6
Begin with a function f and
an initial guess x
(x, f(x))
− )
Friday, September 9, 2011
![Page 46: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/46.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
2. Compute the derivative of f at guess: f'(x)
3. Update guess x to be:
6
Begin with a function f and
an initial guess x
(x, f(x))
-f(x)
− )
Friday, September 9, 2011
![Page 47: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/47.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
2. Compute the derivative of f at guess: f'(x)
3. Update guess x to be:
6
Begin with a function f and
an initial guess x
(x, f(x))
-f(x)/f'(x)
-f(x)
− )
Friday, September 9, 2011
![Page 48: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/48.jpg)
Newton's Method
1. Compute the value of f at guess: f(x)
2. Compute the derivative of f at guess: f'(x)
3. Update guess x to be:
6
Begin with a function f and
an initial guess x
(x, f(x))
-f(x)/f'(x)
-f(x)
− )
Friday, September 9, 2011
![Page 49: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/49.jpg)
Visualization of Newton's Method
7
(Demo)
http://en.wikipedia.org/wiki/File:NewtonIteration_Ani.gif
Friday, September 9, 2011
![Page 50: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/50.jpg)
Using Newton's Method
8
f(x)=x2 - 2
Friday, September 9, 2011
![Page 51: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/51.jpg)
Using Newton's Method
8
How to find the square root of 2?
f(x)=x2 - 2
Friday, September 9, 2011
![Page 52: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/52.jpg)
Using Newton's Method
8
>>> f = lambda x: x*x - 2>>> find_root(f, 1)
How to find the square root of 2?
f(x)=x2 - 2
Friday, September 9, 2011
![Page 53: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/53.jpg)
Using Newton's Method
8
>>> f = lambda x: x*x - 2>>> find_root(f, 1)
How to find the square root of 2?
How to find the log base 2 of 1024?
f(x)=x2 - 2
Friday, September 9, 2011
![Page 54: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/54.jpg)
Using Newton's Method
8
>>> f = lambda x: x*x - 2>>> find_root(f, 1)
How to find the square root of 2?
How to find the log base 2 of 1024?
>>> g = lambda x: pow(2, x) - 1024>>> find_root(g, 1)
f(x)=x2 - 2
Friday, September 9, 2011
![Page 55: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/55.jpg)
Using Newton's Method
8
>>> f = lambda x: x*x - 2>>> find_root(f, 1)
How to find the square root of 2?
How to find the log base 2 of 1024?
>>> g = lambda x: pow(2, x) - 1024>>> find_root(g, 1)
What number is one less than its square?
f(x)=x2 - 2
Friday, September 9, 2011
![Page 56: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/56.jpg)
Using Newton's Method
8
>>> f = lambda x: x*x - 2>>> find_root(f, 1)
How to find the square root of 2?
How to find the log base 2 of 1024?
>>> g = lambda x: pow(2, x) - 1024>>> find_root(g, 1)
What number is one less than its square?
>>> h = lambda x: x*x - (x+1)>>> find_root(h, 1)
f(x)=x2 - 2
Friday, September 9, 2011
![Page 57: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/57.jpg)
=+
Special Case: Square Roots
9
Babylonian Method
Friday, September 9, 2011
![Page 58: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/58.jpg)
=+
Special Case: Square Roots
How to compute square_root(a)
Idea: Iteratively refine a guess x about the square root of a
9
Babylonian Method
Friday, September 9, 2011
![Page 59: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/59.jpg)
=+
Special Case: Square Roots
How to compute square_root(a)
Idea: Iteratively refine a guess x about the square root of a
9
Update:
Babylonian Method
Friday, September 9, 2011
![Page 60: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/60.jpg)
=+
Special Case: Square Roots
How to compute square_root(a)
Idea: Iteratively refine a guess x about the square root of a
9
What guess should start the computation?
Update:
Babylonian Method
Friday, September 9, 2011
![Page 61: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/61.jpg)
=+
Special Case: Square Roots
How to compute square_root(a)
Idea: Iteratively refine a guess x about the square root of a
9
What guess should start the computation?
How do we know when we are finished?
Update:
Babylonian Method
Friday, September 9, 2011
![Page 62: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/62.jpg)
=+
Special Case: Square Roots
How to compute square_root(a)
Idea: Iteratively refine a guess x about the square root of a
9
What guess should start the computation?
How do we know when we are finished?
Implementation questions:
Update:
Babylonian Method
Friday, September 9, 2011
![Page 63: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/63.jpg)
=· +
Special Case: Square Roots
10
Friday, September 9, 2011
![Page 64: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/64.jpg)
=· +
Special Case: Square Roots
How to compute cube_root(a)
Idea: Iteratively refine a guess x about the cube root of a
10
Friday, September 9, 2011
![Page 65: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/65.jpg)
=· +
Special Case: Square Roots
How to compute cube_root(a)
Idea: Iteratively refine a guess x about the cube root of a
10
What guess should start the computation?
Friday, September 9, 2011
![Page 66: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/66.jpg)
=· +
Special Case: Square Roots
How to compute cube_root(a)
Idea: Iteratively refine a guess x about the cube root of a
10
What guess should start the computation?
How do we know when we are finished?
Friday, September 9, 2011
![Page 67: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/67.jpg)
=· +
Special Case: Square Roots
How to compute cube_root(a)
Idea: Iteratively refine a guess x about the cube root of a
10
What guess should start the computation?
How do we know when we are finished?
Implementation questions:
Friday, September 9, 2011
![Page 68: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/68.jpg)
=· +
Special Case: Square Roots
How to compute cube_root(a)
Idea: Iteratively refine a guess x about the cube root of a
10
What guess should start the computation?
How do we know when we are finished?
Implementation questions:
Update:
Friday, September 9, 2011
![Page 69: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/69.jpg)
Iterative Improvement
(Demo)
11
Friday, September 9, 2011
![Page 70: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/70.jpg)
Iterative Improvement
(Demo)
11
6_newton.py Page 1
"""Iterative improvement."""
from ucb import main, interact
# Direct implementations
def square_root(a): """Return the square root of a. >>> square_root(9) 3.0 """ x = 1 while x * x != a: x = square_root_update(x, a) return x
def square_root_update(x, a): return average(x, a/x)
def average(x, y): return (x + y)/2
def cube_root(a): """Return the cube root of a. >>> cube_root(27) 3.0 """ x = 1 while pow(x, 3) != a: x = cube_root_update(x, a) return x
def cube_root_update(x, a): return (2*x + a/(x * x))/3
# Iterative improvement
def golden_update(x): return 1/x + 1
def golden_test(x): return x * x == x + 1
def iter_improve(update, done, guess=1, max_updates=1000): """Iteratively improve guess with update until done returns a true value.
guess An initial guess update A function from guesses to guesses; updates the guess done A function from guesses to boolean values; tests if guess is good
>>> iter_improve(golden_update, golden_test) 1.618033988749895 """ k = 0 while not done(guess) and k < max_updates: guess = update(guess) k = k + 1 return guess
def square_root_improve(a): """Return the square root of a. >>> square_root_improve(9) 3.0 """ def update(guess): return square_root_update(guess, a) def done(guess): return guess * guess == a return iter_improve(update, done)
Friday, September 9, 2011
![Page 71: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/71.jpg)
Iterative Improvement
(Demo)
11
newton.py Page 1
"""Iterative improvement."""
from ucb import main, interact
def average(x, y): return (x + y)/2
def square_root(x): """Return the square root of x. >>> square_root(9) 3.0 """ guess = 1 while not guess * guess == x: guess = square_root_update(guess, x) return guess
def cube_root(x): """Return the cube root of x. >>> cube_root(27) 3.0 """ guess = 1 while not guess * guess * guess == x: guess = cube_root_update(guess, x) return guess
def square_root_update(guess, x): return average(guess, x / guess)
def cube_root_update(guess, x): return (x / (guess * guess) + 2 * guess)/3
def golden_update(guess): return 1/guess + 1
def golden_test(guess): return guess * guess == guess + 1
def iter_improve(update, done, guess=1, max_updates=1000): """Iteratively improve guess with update until done returns a true value.
guess A number update A function from guesses to guesses done A function from guesses to boolean values
>>> iter_improve(golden_update, golden_test) 1.618033988749895 """ n = 0 while not done(guess) and n < max_updates: guess = update(guess) n = n + 1 return guess
def square_root_improve(x): """Return the square root of x. >>> square_root_improve(9) 3.0 """ def update(guess): return square_root_update(guess, x) def done(guess): return guess * guess == x return iter_improve(update, done)
def cube_root_improve(x): """Return the cube root of x. >>> cube_root_improve(27)
6_newton.py Page 1
"""Iterative improvement."""
from ucb import main, interact
# Direct implementations
def square_root(a): """Return the square root of a. >>> square_root(9) 3.0 """ x = 1 while x * x != a: x = square_root_update(x, a) return x
def square_root_update(x, a): return average(x, a/x)
def average(x, y): return (x + y)/2
def cube_root(a): """Return the cube root of a. >>> cube_root(27) 3.0 """ x = 1 while pow(x, 3) != a: x = cube_root_update(x, a) return x
def cube_root_update(x, a): return (2*x + a/(x * x))/3
# Iterative improvement
def golden_update(x): return 1/x + 1
def golden_test(x): return x * x == x + 1
def iter_improve(update, done, guess=1, max_updates=1000): """Iteratively improve guess with update until done returns a true value.
guess An initial guess update A function from guesses to guesses; updates the guess done A function from guesses to boolean values; tests if guess is good
>>> iter_improve(golden_update, golden_test) 1.618033988749895 """ k = 0 while not done(guess) and k < max_updates: guess = update(guess) k = k + 1 return guess
def square_root_improve(a): """Return the square root of a. >>> square_root_improve(9) 3.0 """ def update(guess): return square_root_update(guess, a) def done(guess): return guess * guess == a return iter_improve(update, done)
Friday, September 9, 2011
![Page 72: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/72.jpg)
Iterative Improvement
(Demo)
11
newton.py Page 1
"""Iterative improvement."""
from ucb import main, interact
def average(x, y): return (x + y)/2
def square_root(x): """Return the square root of x. >>> square_root(9) 3.0 """ guess = 1 while not guess * guess == x: guess = square_root_update(guess, x) return guess
def cube_root(x): """Return the cube root of x. >>> cube_root(27) 3.0 """ guess = 1 while not guess * guess * guess == x: guess = cube_root_update(guess, x) return guess
def square_root_update(guess, x): return average(guess, x / guess)
def cube_root_update(guess, x): return (x / (guess * guess) + 2 * guess)/3
def golden_update(guess): return 1/guess + 1
def golden_test(guess): return guess * guess == guess + 1
def iter_improve(update, done, guess=1, max_updates=1000): """Iteratively improve guess with update until done returns a true value.
guess A number update A function from guesses to guesses done A function from guesses to boolean values
>>> iter_improve(golden_update, golden_test) 1.618033988749895 """ n = 0 while not done(guess) and n < max_updates: guess = update(guess) n = n + 1 return guess
def square_root_improve(x): """Return the square root of x. >>> square_root_improve(9) 3.0 """ def update(guess): return square_root_update(guess, x) def done(guess): return guess * guess == x return iter_improve(update, done)
def cube_root_improve(x): """Return the cube root of x. >>> cube_root_improve(27)
newton.py Page 1
"""Iterative improvement."""
from ucb import main, interact
def average(x, y): return (x + y)/2
def square_root(x): """Return the square root of x. >>> square_root(9) 3.0 """ guess = 1 while not guess * guess == x: guess = square_root_update(guess, x) return guess
def cube_root(x): """Return the cube root of x. >>> cube_root(27) 3.0 """ guess = 1 while not guess * guess * guess == x: guess = cube_root_update(guess, x) return guess
def square_root_update(guess, x): return average(guess, x / guess)
def cube_root_update(guess, x): return (x / (guess * guess) + 2 * guess)/3
def golden_update(guess): return 1/guess + 1
def golden_test(guess): return guess * guess == guess + 1
def iter_improve(update, done, guess=1, max_updates=1000): """Iteratively improve guess with update until done returns a true value.
guess A number update A function from guesses to guesses done A function from guesses to boolean values
>>> iter_improve(golden_update, golden_test) 1.618033988749895 """ n = 0 while not done(guess) and n < max_updates: guess = update(guess) n = n + 1 return guess
def square_root_improve(x): """Return the square root of x. >>> square_root_improve(9) 3.0 """ def update(guess): return square_root_update(guess, x) def done(guess): return guess * guess == x return iter_improve(update, done)
def cube_root_improve(x): """Return the cube root of x. >>> cube_root_improve(27)
6_newton.py Page 1
"""Iterative improvement."""
from ucb import main, interact
# Direct implementations
def square_root(a): """Return the square root of a. >>> square_root(9) 3.0 """ x = 1 while x * x != a: x = square_root_update(x, a) return x
def square_root_update(x, a): return average(x, a/x)
def average(x, y): return (x + y)/2
def cube_root(a): """Return the cube root of a. >>> cube_root(27) 3.0 """ x = 1 while pow(x, 3) != a: x = cube_root_update(x, a) return x
def cube_root_update(x, a): return (2*x + a/(x * x))/3
# Iterative improvement
def golden_update(x): return 1/x + 1
def golden_test(x): return x * x == x + 1
def iter_improve(update, done, guess=1, max_updates=1000): """Iteratively improve guess with update until done returns a true value.
guess An initial guess update A function from guesses to guesses; updates the guess done A function from guesses to boolean values; tests if guess is good
>>> iter_improve(golden_update, golden_test) 1.618033988749895 """ k = 0 while not done(guess) and k < max_updates: guess = update(guess) k = k + 1 return guess
def square_root_improve(a): """Return the square root of a. >>> square_root_improve(9) 3.0 """ def update(guess): return square_root_update(guess, a) def done(guess): return guess * guess == a return iter_improve(update, done)
Friday, September 9, 2011
![Page 73: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/73.jpg)
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
Friday, September 9, 2011
![Page 74: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/74.jpg)
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
update:done:guess: 1iter_improve
Friday, September 9, 2011
![Page 75: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/75.jpg)
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
Friday, September 9, 2011
![Page 76: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/76.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
Friday, September 9, 2011
![Page 77: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/77.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
1
Friday, September 9, 2011
![Page 78: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/78.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.0
Friday, September 9, 2011
![Page 79: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/79.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.5
Friday, September 9, 2011
![Page 80: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/80.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.6666666666666665
Friday, September 9, 2011
![Page 81: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/81.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.66666666666666651.6
Friday, September 9, 2011
![Page 82: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/82.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.66666666666666651.61.625
Friday, September 9, 2011
![Page 83: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/83.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.66666666666666651.61.6251.6153846153846154
Friday, September 9, 2011
![Page 84: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/84.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.66666666666666651.61.6251.61538461538461541.619047619047619
Friday, September 9, 2011
![Page 85: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/85.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.66666666666666651.61.6251.61538461538461541.6190476190476191.6176470588235294
Friday, September 9, 2011
![Page 86: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/86.jpg)
guess:
Iterative Improvement
12
golden_update:golden_test:iter_improve:
golden_update
golden_test
iter_improve
guess: 1golden_test
update:done:guess: 1iter_improve
12.01.51.66666666666666651.61.6251.61538461538461541.6190476190476191.61764705882352941.6181818181818182
Friday, September 9, 2011
![Page 87: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/87.jpg)
Square Roots by Iterative Improvement
13
(Demo)
Friday, September 9, 2011
![Page 88: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/88.jpg)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
(Demo)
Friday, September 9, 2011
![Page 89: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/89.jpg)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
(Demo)
Friday, September 9, 2011
![Page 90: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/90.jpg)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
(Demo)
Friday, September 9, 2011
![Page 91: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/91.jpg)
square_root(256)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
(Demo)
Friday, September 9, 2011
![Page 92: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/92.jpg)
a:
square_root
256
square_root(256)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
(Demo)
Friday, September 9, 2011
![Page 93: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/93.jpg)
a:
square_root
256
square_root(256)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
def update(guess): ... ... return iter_improve(...)
(Demo)
Friday, September 9, 2011
![Page 94: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/94.jpg)
a:
square_root
256
square_root(256)
Square Roots by Iterative Improvement
13
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
def update(guess): ... ... return iter_improve(...)
(Demo)
Friday, September 9, 2011
![Page 95: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/95.jpg)
a:
square_root
256
square_root(256)
Square Roots by Iterative Improvement
13
update(guess):return ...
update:
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
def update(guess): ... ... return iter_improve(...)
(Demo)
Friday, September 9, 2011
![Page 96: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/96.jpg)
a:
square_root
256
square_root(256)
Square Roots by Iterative Improvement
13
update(guess):return ...
update:
iter_improve:square_root
iter_improve
square_root:
...
square_root(256)
def update(guess): ... ... return iter_improve(...)
(Demo)
done: ...
Friday, September 9, 2011
![Page 97: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/97.jpg)
a:
square_root
256
iter_improve:square_root
iter_improve
square_root:
...
update(guess):return ...
Square Roots by Iterative Improvement
14
square_root
update:done: ...
square_root(256) ... return iter_improve(...) square_root(256)
(Demo)
Friday, September 9, 2011
![Page 98: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/98.jpg)
a:
square_root
256
iter_improve:square_root
iter_improve
square_root:
...
update(guess):return ...
Square Roots by Iterative Improvement
14
square_root
update:done: ...
square_root(256) ... return iter_improve(...) square_root(256)
iter_improve
update:guess: 1
...
(Demo)
Friday, September 9, 2011
![Page 99: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/99.jpg)
a:
square_root
256
iter_improve:square_root
iter_improve
square_root:
...
update(guess):return ...
Square Roots by Iterative Improvement
14
square_root
update:done: ...
square_root(256) ... return iter_improve(...)
update
guess:1
square_root(256)
iter_improve
update:guess: 1
...
(Demo)
Friday, September 9, 2011
![Page 100: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/100.jpg)
= lim→
Derivatives of Single-Argument Functions
15
Friday, September 9, 2011
![Page 101: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/101.jpg)
-4 -3 -2 -1 0 1 2 3 4 5
-3
-2
-1
1
2
3
= lim→
Derivatives of Single-Argument Functions
15
Friday, September 9, 2011
![Page 102: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/102.jpg)
-4 -3 -2 -1 0 1 2 3 4 5
-3
-2
-1
1
2
3
= lim→
Derivatives of Single-Argument Functions
15
x = 1
Friday, September 9, 2011
![Page 103: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/103.jpg)
-4 -3 -2 -1 0 1 2 3 4 5
-3
-2
-1
1
2
3
= lim→
Derivatives of Single-Argument Functions
15
x = 1
x + h = 1.1
Friday, September 9, 2011
![Page 104: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/104.jpg)
-4 -3 -2 -1 0 1 2 3 4 5
-3
-2
-1
1
2
3
= lim→
Derivatives of Single-Argument Functions
15
x = 1
x + h = 1.1
Friday, September 9, 2011
![Page 105: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/105.jpg)
-4 -3 -2 -1 0 1 2 3 4 5
-3
-2
-1
1
2
3
= lim→
Derivatives of Single-Argument Functions
15
http://en.wikipedia.org/wiki/File:Graph_of_sliding_derivative_line.gif
(Demo)
x = 1
x + h = 1.1
Friday, September 9, 2011
![Page 106: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/106.jpg)
Approximating Derivatives
(Demo)
16
Friday, September 9, 2011
![Page 107: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/107.jpg)
Implementing Newton's Method
17
Friday, September 9, 2011
![Page 108: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/108.jpg)
Implementing Newton's Method
17
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
Friday, September 9, 2011
![Page 109: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/109.jpg)
Implementing Newton's Method
17
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
Could be replaced with the exact derivative
Friday, September 9, 2011
![Page 110: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/110.jpg)
Implementing Newton's Method
17
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
Could be replaced with the exact derivative
Friday, September 9, 2011
![Page 111: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/111.jpg)
Implementing Newton's Method
17
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
Could be replaced with the exact derivative
Limit approximated by a small value
Friday, September 9, 2011
![Page 112: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/112.jpg)
Implementing Newton's Method
17
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
Could be replaced with the exact derivative
Limit approximated by a small value
Friday, September 9, 2011
![Page 113: 61A Lecture 6 - University of California, Berkeleycs61a/fa11/61a... · Friday, September 9, 2011. Lambda Expressions Versus Def Statements 3 square = lambda x: x * x def square(x):](https://reader036.fdocuments.us/reader036/viewer/2022071608/61469bac7599b83a5f0054b1/html5/thumbnails/113.jpg)
Implementing Newton's Method
17
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
newton.py Page 2
3.0 """ def update(guess): return cube_root_update(guess, x) def done(guess): return guess * guess * guess == x return iter_improve(update, done)
def square_root_newton(x): """Return the square root of x. >>> square_root_newton(9) 3.0 """ return find_root(lambda y: y * y x)
def cube_root_newton(x): """Return the cube root of x. >>> cube_root_newton(27) 3.0 """ return find_root(lambda y: y * y * y x)
def approx_derivative(f, x, delta=1e 5): """Return an approximation to the derivative of f at x.""" df = f(x + delta) f(x) return df/delta
def newton_update(f): """Return an update function for f using Newton's method.""" def update(x): return x f(x) / approx_derivative(f, x) return update
def find_root(f, guess=1): """Return a guess of a zero of the function f, near guess. >>> from math import sin >>> find_root(lambda y: sin(y), 3) 3.141592653589793 """ return iter_improve(newton_update(f), lambda x: f(x) == 0, guess)
@maindef run(): interact()
Could be replaced with the exact derivative
Limit approximated by a small value
Definition of a function zero
Friday, September 9, 2011