lab6¶
This lab is focussed on passing a function object f
to another function g
. Function f
can then be called inside function g
. This makes it possible to have generic algorithms g
— such as numerical integration— which can be applied to any function f
by passing
that function f
as an argument to g
.
box_volume_UPS()
exercises default arguments.
Relevant supplementary videos :
Relevant Socratica video:
positive_places(f, xs)
¶
Write a function positive_places(f, xs)
that takes as arguments some
function f
and a list of numbers xs
and returns a list of
those-and-only-those elements x
of xs
for which f(x)
returns
a value strictly greater than zero.
Example 1:
In [ ]: def my_f(x):
...: return x ** 3
...:
In [ ]: positive_places(my_f, [1, 2, -1, -2, 3, 42, -9])
Out[ ]: [1, 2, 3, 42]
In [ ]: positive_places(my_f, [1, 2, 3, 4, 5])
Out[ ]: [1, 2, 3, 4, 5]
In [ ]: positive_places(my_f, [])
Out[ ]: []
In [ ]: positive_places(my_f, [-1, -2, -3, -4, -5])
Out[ ]: []
Example 2:
In [ ]: def f(x):
...: return 2 * x + 4
...:
In [ ]: positive_places(f, [10, 1, -3, -1.5, 0, 0.5])
Out[ ]: [10, 1, -1.5, 0, 0.5]
eval_f_0123(f)
¶
Write a function eval_f_0123(f)
that evaluates the function
f
=f(x)
at positions x
=0, x
=1, x
=2 and
x
=3. The function should return the list
[f(0), f(1), f(2), f(3)]
.
Example 1:
In [ ]: def square(x):
...: return x * x
...:
In [ ]: eval_f_0123(square)
Out[ ]: [0, 1, 4, 9]
Example 2:
In [ ]: def cubic(x):
...: return x ** 3
...:
In [ ]: eval_f_0123(cubic)
Out[ ]: [0, 1, 8, 27]
Example 3:
In [ ]: def stars(x):
...: return "*" * x
...:
In [ ]: eval_f_0123(stars)
Out[ ]: ['', '*', '**', '***']
sum_f(f, xs)
¶
Implement a function sum_f(f, xs)
that returns the sum of the
function values of f
evaluated at values x0
, x1
, x2
, …,
xn
where xs=[x0, x1, x2, ..., xn]
.
Example 1:
In [ ]: def f(x):
...: return x
...:
In [ ]: sum_f(f, [1, 2, 3, 10])
Out[ ]: 16
Example 2:
In [ ]: def square(x):
...: return x * x
...:
In [ ]: sum_f(square, [1, 2, 3, 10])
Out[ ]: 114
box_volume_UPS(a, b, c)
¶
Write a function box_volume_UPS(a, b, c)
that returns the volume of
a box with edge lengths a
, b
and c
. Inputs should be
provided in inch, and the output should be expressed in inch^3.
The standard dimensions of the UPS express box (small) in the US are
a=13
inch, b=11
inch and c=2 inch
.
Your function should use these values for a
, b
and c
unless
others are provided.
Examples:
In [ ]: box_volume_UPS()
Out[ ]: 286
In [ ]: box_volume_UPS(a=10, b=10, c=10)
Out[ ]: 1000
In [ ]: box_volume_UPS(c=5)
Out[ ]: 715
Please submit your file lab6.py
for this assignment.
Additional (voluntary) tasks are available in lab6-extra.
End of lab6.