taylor
Computes the first and second derivatives of a function using the Taylor formula.
Interface
#include <codecogs/maths/calculus/differential/taylor.h>
using namespace Maths::Calculus::Differential;
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
FUNCTION
taylor1
Consider a function that is three times differentiable on its domain, and three abscissas
such that
where are real positive constants. Then the approximate value of the first derivative
at the abscissa
is given by:
or
In the case we have an error bound of:
while in the case when the error is given by:
where and
. The error estimate for
comes from the Taylor formula applied to the given function
at point
.
On account of the above relations you may notice that the error approaches zero as approaches zero for
, and as
approaches zero for
.
Example 1
Below we give an example of how to compute the first numerical derivative of at point
, considering
(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.000000140245202Parameters
Returns
FUNCTION
taylor2
Consider a function that is four times differentiable on its domain, and three abscissas
such that
where are real positive constants. Then the approximate value of the second derivative
at the abscissa
is given by:
or
In the case we have an error bound of:
while in the case when the error is given by:
where and
. The error estimate for
comes from the Taylor formula applied to the given function
at point
.
On account of the above relations you may notice that the error approaches zero as approaches zero for
, and as
approaches zero for
.
Example 1
Below we give an example of how to compute the second numerical derivative of at
, considering
(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