Reference no: EM13529
1. This problem is intended to demonstrate some problems that can arise from the finite precision of numerical calculations performed with computers. We will do this by approximating the derivative of a function. The definition of the derivative of the function f(x) is:
We can approximate this with the computer by allowing ?x to be a finite number. Thus, the numerical approximation to the derivative of the function can be determined from:
The error between the actual derivative and its approximation is dependent upon both x and ?x:
Write a program to calculate and plot the error in the numerical estimate of the derivative according to equation (3), for the function
f(x)=ex . (Note that the analytical derivative of this function is f'(x)=ex ). Use x = 1 and ?x = {100 , 10-1, 10-2 ,..., 10-13 }.
Use logarithmic scales on both the x-axis and y-axis of your plot (you may find the MATLAB command loglog helpful). Create a Microsoft Word document named homework8.doc and paste into it your plot of error vs. ?x. Also in your MS Word document, comment on your results - especially relative to the behavior of the error as ?x increases.
2. There are many approaches to numerically estimating the derivative of the function.
The relationship:
is called a forward difference, since the estimate of the derivative at the point x is generated from the value of the function at x and the value of the function at x+?x (a point forward from x). A backward difference formula estimates the derivative at the point x is from the value of the function at x and the value of the function at x-?x (a point backward from x) as follows:
A central difference formula uses values of the function on either side of the point x in order to estimate the value of the function at x, as follows:
The central difference formula has the advantage that it is more accurate, for a given ?x, than the forward or backward difference formulas.
In this problem, we will use a combination of the above techniques to estimate the derivative of a function from a set of measured data points. We will use the following algorithm to estimate the derivative of the function:
where fk is the value of the function at the kth data point, fk′ is the estimate of the derivative of the function at the kth data point, N is the total number of data points, and ?x is the spacing between data points. Note that we are using a forward difference formula for the first data point, a backward difference formula for the last data point, and a central difference formula for all other data points.
Your implementation of the above algorithm should include the following:
(a) Write a Matlab function which implements the above algorithm to estimate the derivative of a function described by a set of data points. Your function should accept two inputs:
• the first input is an N-element vector containing the measured values of the function (the fks)
• the second input is the spacing between data points ( ?x )
Your function should return an N-element vector containing the estimated derivative of the function. The size of the vectors should be determined by your function. Your function does not need to do any error checking on the inputs.
(b) Write a script file which uses the function you created in part (a) to calculate and plot the derivative of the function )x sin( )x(f π 2 = , for 1 0 ≤ ≤ x . Your script file should do the following:
i. Create data points for f(x) and use your function to estimate its derivative with ?x =0.1
ii. Create data points for f(x) and use your function to estimate its derivative with ?x =0.01
iii. Calculate the exact value of the derivative of f(x) for 1 0 ≤ ≤ x at increments of ?x =0.01
iv. Plot the above three sets of data on a single figure. Include a legend to indicate which line corresponds to which case, and label the vertical and horizontal axes appropriately.