Matlab script for central difference

In summary, the script calculates the first derivative of the function f(x) at x=0.7, and plots the error against the step size. The error increases as the step size is reduced, due to the effects of round-off error.
  • #1
NYK
27
0
I am trying to write a script that will compute repeatedly, beginning with step size h=1 and then progressively divide the step size by a factor of 10 to demonstrate how round-off error becomes dominant as the step size is reduced.

In using centered difference approximation of O(h2) to estimate the first derivative at x=0.7 of:

f(x) = -0.25x^5+0.15x^4-1.25x^3+0.35x^2+2.1x-1.4
I have posted the script I have so far bellow:clear;clc;clear all

ff=@(x) -0.25*x^5+0.15*x^4-1.25*x^3+0.35*x^2+2.1*x-1.4;
df=@(x) -1.25*x^4+0.6*x^3-3.75*x^2+0.7*x+2.1;

function diffex(func,dfunc,x,n)

format long
dftrue=dfunc(x);
h=1;
H(1)=h;
D(1)=(func(x+h)-func(x-h))/(2*h);
E(1)=abs(dftrue-D(i));
for i=2:n
h=h/10;
H(i)=h;
D(i)=(func(x+h)-func(x-h))/(2*h);
E(i)=abs(dftrue-D(i));
end
L=[H' D' E']';
fprintf(' step size finite difference round-off error\n');
fprintf('%14.10f %16.14f %16.13f\n',L);
loglog(H,E),xlabel('Step Size'),ylabel('Error')
title('Plot of Error vs. Step Size')
format shortdiffex(ff,df,0.7,11)



Any advice, pointers or suggestions will be greatly appreciated!

thank you
 
Physics news on Phys.org
  • #2
What goes wrong? Can you post here the output?
 
  • #3
The error code i get is that "Function definitions are not permitted in this context", but i really don't need a function file. I have begun writing it as a regular script file.
 
  • #4
If you are not familiar with the use of the Matlab functions then you should try first the easy way: simple loop where you compute directly the function, its derivative and the corresponding error.
If you really want to use Matlab functions you should have a look at some simple example provided by Matlab Help.
 
  • #5
FYI: The error message "Function definitions are not permitted in this context" arises when you try to type a function in at the command line. That is disallowed; all functions must be saved in an mfile.

Rewriting this to be a script rather than a function is one option, but the other way would be to just paste the code into an mfile, save the file, and then you can call the function freely.
 

1. What is a central difference in Matlab?

A central difference, also known as a central finite difference, is a numerical method used to approximate the derivative of a function at a specific point. It is calculated by taking the average of the forward and backward differences of the function at that point.

2. How do I create a central difference script in Matlab?

To create a central difference script in Matlab, you can follow these steps:

  • Define the function you want to find the derivative of using the function keyword.
  • Choose a value for the point where you want to find the derivative.
  • Use the diff function to calculate the forward and backward differences of the function at that point.
  • Take the average of the two differences to find the central difference.
  • Use the disp function to display the result.

3. Can I use the central difference method for any type of function?

Yes, the central difference method can be used for any type of function as long as it is differentiable at the chosen point. However, it may not provide accurate results for functions with steep slopes or discontinuities.

4. What are the advantages of using central difference over other numerical methods?

One advantage of using central difference is that it is relatively simple and easy to implement. It also provides a good balance between accuracy and efficiency compared to other methods like forward or backward differences. Additionally, it can be used for functions with non-uniformly spaced data points.

5. Can I use central difference to find higher-order derivatives?

Yes, you can use central difference to find higher-order derivatives by repeating the same process multiple times. For example, to find the second derivative, you would calculate the central difference of the first derivative. However, as the order of the derivative increases, the accuracy may decrease, so other methods may be more suitable.

Similar threads

  • Engineering and Comp Sci Homework Help
Replies
2
Views
826
  • Engineering and Comp Sci Homework Help
Replies
1
Views
882
Replies
47
Views
587
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
3
Views
811
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
4
Views
3K
  • Advanced Physics Homework Help
Replies
6
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
9K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
2K
Back
Top