# BEST代写-线上编程学术专家

Best代写-最专业靠谱代写IT | CS | 留学生作业 | 编程代写Java | Python |C/C++ | PHP | Matlab | Assignment Project Homework代写

# Matlab代写 | AMATH 301 – Spring 2020 Homework #5

### Matlab代写 | AMATH 301 – Spring 2020 Homework #5

AMATH 301 – Spring 2020
Homework #5
Due on Monday, May 11, 2020
Instructions for submitting:
• Problems 1-3 should be submitted to MATLAB Grader. You have 3 attempts for
each problem.
• Problems 4-5 should be submitted to Gradescope. The solutions and the code used
to get those solutions should be submitted as a single pdf. All code should be at the
end of the file. You must select which page each problem is on when you submit
(32 points) Problem 1: MATLAB Grader
Consider an object attached to a spring.
The object has a mass of m = 1 kg, the spring has a stiffness of k = 1/4 N/m, and there
is a damping force of 1 N (the spring is critically damped). Let x(t) be a function that
gives the position of the object at time t where x = 0 represents the equilibrium position
of the spring. If the object has an initial position of x(0) = 1/3 and an initial velocity of
v(0) = 17/6, then the position of the object is given by the formula
x(t) = 1
3
e
−t/2 + 3te−t/2
.
We wish to find the maximum value of x(t) and the time tmax at which that value
occurs.
(a) Use fminbnd to find the time tmax at which the spring is most elongated. Use the
range 0 < t < 10. Also find the value of x(tmax) which is how far the spring is
stretched past its equilibrium length when it is most elongated. Create a 1 × 2 row
vector named ans1 that contains the value of tmax as the first component and x(tmax)
as the second component.
Hint: The function fminbnd only finds the minimum of a function. How can you
restate the problem as a minimization problem?
(b) Use golden section search to find tmax by minimizing the same function you minimized
in part (a). Use an initial interval [0, 10] (i.e. a = 0 and b = 10), and stop when
b − a < 10−3
. Create a 1 × 2 row vector named ans2 with the final value of a as the
first component and the final value of b as the second component.
(c) Recall that you can find the maximum of the function x(t) by finding the root of the
function x
0
(t). Use Netwon’s method to find tmax by finding the root of x
0
(t) (where
x(t) is the same function as part (a)). Use an initial guess of t0 = 0 and stop when
|tk+1 − tk| < 10−3
. Your maximum number of iterations should be large enough that
you reach the tolerance. Store the final guess of Newton’s method in the variable
ans3 and the number of iterations in the variable ans4.
Note: You are free to use the Newton function which is posted on the course Canvas
page (see the 4-20 lecture). MATLAB Grader has its own version of that function so
you do not need to have it in your script.
(24 points) Problem 2: MATLAB Grader
Consider the function
f(x, y) = (2 − x)
2 + (y − x
2
)
2
(a) Create a MATLAB function that computes f using only one input (a column vector
[x; y]). Use fminsearch to find the column vector [x; y] that minimizes f and
store it in the variable ans5. Use an initial guess of [0; 5].
(b) We now wish to find the minimum using gradient descent. To start, create a MATLAB function that calculates the gradient ∇f(x, y). The gradient is given by the
following formula
∇f(x, y) =

−2(2 − x) − 4x(y − x
2
)
2(y − x
2
)

 .
(c) Recall from class that we wrote the following code to perform one step of gradient
descent.
p = [6; 4]; % The current guess
phi = @ (t) p – t*grad; % Define the “path”
f of phi = @ (t) f(phi(t)); % Create a function of “heights along path”
tmin = fminbnd(f of phi,0,1); % Find time it takes to reach min height
p = phi(tmin); % Find the point on the path and update your guess
Adapt the code so that it performs up to 10000 iterations of gradient descent and
stops if the infinity norm of the vector grad is less than a tolerance of 10−4
. You can
leave 0 ≤ t ≤ 1 as the range for fminbnd.
(d) Now use your gradient descent code to find the column vector [x; y] that minimizes
the function f(x, y). Use an initial guess of [0; 5]. Store the final guess in the
variable ans6 and the number of iterations in the variable ans7. The initial guess
does not count as an iteration.
(24 points) Problem 3: MATLAB Grader
For this problem, we are still finding the minimum of the function from Problem 2:
f(x, y) = (2 − x)
2 + (y − x
2
)
2
Instead of calculating tmin with fminbnd for every step of gradient descent, you can
use a fixed step size, which we will call tstep, to calculate the next guess in gradient
descent. In order to do this, you can replace the lines of code
phi = @ (t) p – t*grad; % Define the path
f of phi = @ (t) f(phi(t)); % Create a function of “heights along path”
tmin = fminbnd(f of phi,0,1); % Find time it takes to reach min height
p = phi(tmin); % Find the point on the path and update your guess
with the single line of code
where the variable tstep must be defined previously in the code.
(a) Use gradient descent with tstep = 0.01 and an initial guess of [0; 5] to find the
column vector [x; y] that minimizes the function f(x, y). Use a tolerance of 10−4
.
Store the number of iterations in the variable ans8.
(b) Using the same initial guess and tolerance but using tstep = 0.03, find the number
of iterations it takes for gradient descent to converge and store it in the variable ans9.
(c) Repeat the same process with tstep = 0.05 and store the number of iterations in
the variable ans10.
Run your code for Problem 2(d) and Problem 3(a). In other words, find the minimum
of f(x, y) using gradient descent with fminbnd and then using gradient descent with
tstep = 0.01. Use the tic and toc commands to time each method. The function
and all of the parameters should be the same as they were previously. You do not need
to time the commands that are used to define the functions f(x, y) or ∇f(x, y). You
also don’t need to time where you set up the parameters for the tolerance or maximum
number of iterations. You can essentially just time what is inside of a loop for each
method.
Report the times for each method. State which is faster and explain why it is faster.
Let f(x) be a unimodal function with its minimum between x = a and x = b. Assume
that a < x1 < x2 < b and f(x1) > f(x2). Between which two values is the minimum of
f(x) guaranteed to be?
(a) between x1 and x2
(b) between a and x2
(c) between x1 and b
(d) between a and x1
(e) None of the above 