Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Question 3: Descent Write a function descent (f: callable, x0: float, stepsize: float) -> float. Starting at xe, it examines the value of f
Question 3: Descent Write a function descent (f: callable, x0: float, stepsize: float) -> float. Starting at xe, it examines the value of f at all values spaced apart by stepsize, as long as the values continue to get smaller. It returns the x last value checked before the function started getting larger. Exercise We will see examples using the function bumpy, provided in the start code. It looks like this: 1.0- 0.5 0.0 -0.5 0 1 ter 2 3 h 4 If we start at x = 5, with a stepsize of 1, we see that the function is smaller at 6, and still smaller at 7, but then larger at 8. The smallest value we see occurs at 7, so we can write the test: check. within ("b0", descent (bumpy, 5.0, 1.0), 7.0, 0.0001) check.within ("b1", descent (bumpy, 5.0, 0.42), 7.1, 0.0001) If we start at x = 5, with a stepsize of 0.42, we see that the function is smaller at 5.42, smaller still at 5.84, 6.26, 6.68, and 7.1, but then larger at 7.52. The smallest value we see occurs at 7.1, so we can write the test: Fin 1.0 0.5 0.0 -0.5 1.0 0.5 0.0 -0.5 10 6 0 0 7 1 1 8 2 2 3 w 3 5.0 4 5 5.0 6.0 4 5 6 5.84 5.42 6.26 6 7.0 8.0 7 8 6.68 7.52 7.19 7 8 If we start at x = 2.5, with a stepsize of 0.42, we see that the function is smaller at 2.92, smaller still at 3.34, but then larger at 3.76. The smallest value we see occurs at 3.34, so we can write the test: check.within ("b2", descent (bumpy, 2.5, 0.42), 3.34, 0.0001) If we start at x = 2.5, with a stepsize of 1.0, we see that the function is smaller at 3.5, smaller still at 4.5, but then larger at 5.5. The smallest value we see occurs at 4.5, so we can write the test: check.within ("b2", descent (bumpy, 2.5, 1.00), 4.5, 0.0001) 1.0 0.5- 0.0 -0.5 1.0 0.5 0.0 -0.5 0 1 2 2.5 43.34 2.92 2.5 3.76 3 3,5 4 5 5.5 7 8 0 1 2 3 4 5 6 7 8 The provided function parabola corresponds to p(x) = (x - 2), which has a minimum as x = 2. For additional examples: Starting at x = -1, with a stepsize of 1.0, we see that p(-1) = 9, p(0) = 4, p(1) = 1, p(2) = 0, and finally p(3) = 1. The smallest value we see occurs at 2, so we can write the test: check. within ("P0", descent (parabola, -1.0, 1.0), 2.0, 0.0001) Starting at x = 0, with a stepsize of 0.7, we see that p(0) = 4, p(0.7) = 1.69, p(1.4) = 0.36, p(2.1) = 0.01, and finally p(2.8) = 0.64. The smallest value we see occurs at 2.1, so we can write the test: check.within("p1", descent (parabola, 0.0, 0.7), 2.1, 0.0001) Do not test your function only with bumpy and parabola. It should work for any appropriate function. Create additional simple mathematical functions to use for tests of descent. (A function such as d(x) = -x will not work, since it keeps getting smaller, forever. Your program could never find a point where this function gets bigger.)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Answer def descentf x0 ste...Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started