I have forgotten
my Password

Or login with:

  • Facebookhttp://facebook.com/
  • Googlehttps://www.google.com/accounts/o8/id
  • Yahoohttps://me.yahoo.com
COST (GBP)
this unit 0.75
sub units 0.00
+
0

taylor

Computes the first and second derivatives of a function using the Taylor formula.
Controller: CodeCogs

add cart

Interface

C++

Overview

This module computes the first or second numerical derivatives of a function at a particular point using the Taylor formula. The advantage is that the interval used in computing the numerical derivative need not be symmetrical around the given point.

References:

Mihai Postolache - "Metode Numerice", Editura Sirius

Authors

Lucian Bentea (September 2006)

Taylor1

 
doubletaylor1double(*f)(double)[function pointer]
doublex
doubleh
doublegamma = 1.0 )[inline]
Consider a function f:[a,b] \rightarrow \mathbb{R} that is three times differentiable on its domain, and three abscissas x_1, x_*, x_2 \in [a,b] such that where h, \gamma are real positive constants. Then the approximate value of the first derivative \displaystyle \frac{df}{dx} at the abscissa x_* is given by:

or

In the case \gamma = 1 we have an error bound of: while in the case when \gamma \neq 1 the error is given by: where \xi_1 \in (x_1, x_*) and \xi_2 \in (x_*, x_2). The error estimate for \gamma \neq 1 comes from the Taylor formula applied to the given function f at point x_*.

On account of the above relations you may notice that the error approaches zero as h approaches zero for \gamma \neq 1, and as h^2 approaches zero for \gamma = 1.

Example 1

Below we give an example of how to compute the first numerical derivative of \cos x at point x = 1, considering \gamma = 1 (equally spaced abscissas). The absolute error from the actual value of the derivative at that point is also displayed.
#include <codecogs/maths/calculus/diff/taylor.h>
#include <stdio.h>
#include <math.h>
 
// precision constant
#define H 0.001
 
// function to differentiate
double f(double x)
{
  return cos(x);
}
 
// the derivative of the function, to estimate errors
double df(double x)
{
  return -sin(x);
}
 
int main()
{
  // display precision
  printf("         h = %.3lf\n\n", H);
 
  // compute the numerical derivative
  double fh = Maths::Calculus::Diff::taylor1(f, 1, H);
 
  // display the result and error estimate
  printf("      f(x) = cos(x)\n");
  printf("     f`(1) = %.15lf\n", fh);
  printf("real value = %.15lf\n", df(1));
  printf("     error = %.15lf\n\n", fabs(fh - df(1)));
 
  return 0;
}
Output
h = 0.001
 
      f(x) = cos(x)
     f`(1) = -0.841470844562695
real value = -0.841470984807897
     error = 0.000000140245202

Parameters

fthe function to differentiate
xthe abscissa at which you want to compute the first derivative
hthe value of the precision constant h
gammaDefault value = 1.0

Returns

The first numerical derivative of the given function at the x abscissa.
Source Code

Source code is available when you buy a Commercial licence.

Not a member, then Register with CodeCogs. Already a Member, then Login.


Taylor2

 
doubletaylor2double(*f)(double)[function pointer]
doublex
doubleh
doublegamma = 1.0 )[inline]
Consider a function f:[a,b] \rightarrow \mathbb{R} that is four times differentiable on its domain, and three abscissas x_1, x_*, x_2 \in [a,b] such that where h, \gamma are real positive constants. Then the approximate value of the second derivative \displaystyle \frac{d^2f}{dx^2} at the abscissa x_* is given by:

or

In the case \gamma = 1 we have an error bound of: while in the case when \gamma \neq 1 the error is given by: where \xi_1 \in (x_1, x_*) and \xi_2 \in (x_*, x_2). The error estimate for \gamma \neq 1 comes from the Taylor formula applied to the given function f at point x_*.

On account of the above relations you may notice that the error approaches zero as h approaches zero for \gamma \neq 1, and as h^2 approaches zero for \gamma = 1.

Example 2

Below we give an example of how to compute the second numerical derivative of \cos x at x = 1, considering \gamma = 1 (equally spaced abscissas). The absolute error from the actual value of the derivative at that point is also displayed.
#include <codecogs/maths/calculus/diff/taylor.h>
#include <stdio.h>
#include <math.h>
 
// precision constant
#define H 0.0001
 
// function to differentiate
double f(double x)
{
  return cos(x);
}
 
// the second derivative of the function, to estimate errors
double d2f(double x)
{
  return -cos(x);
}
 
int main()
{
  // display precision
  printf("         h = %.4lf\n\n", H);
 
  // compute the numerical derivative
  double fh = Maths::Calculus::Diff::taylor2(f, 1, H);
 
  // display the result and error estimate
  printf("      f(x) = cos(x)\n");
  printf("    f``(1) = %.15lf\n", fh);
  printf("real value = %.15lf\n", d2f(1));
  printf("     error = %.15lf\n\n", fabs(fh - d2f(1)));
 
  return 0;
}
Output
h = 0.0001
 
      f(x) = cos(x)
    f``(1) = -0.540302319866019
real value = -0.540302305868140
     error = 0.000000013997879

Parameters

fthe function to differentiate
xthe abscissa at which you want to compute the second derivative
hthe value of the precision constant h
gammaDefault value = 1.0

Returns

The second numerical derivative of the given function at the x abscissa.
Source Code

Source code is available when you buy a Commercial licence.

Not a member, then Register with CodeCogs. Already a Member, then Login.