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 Email
Interface
C++
#include <codecogs/maths/calculus/differential/taylor.h>
using namespace Maths::Calculus::Diff;
double taylor1 (double (*f)(double), double x, double h, double gamma = 1.0)[inline]
Computes the value of the first derivative of a function using the Taylor formula.
double taylor2 (double (*f)(double), double x, double h, double gamma = 1.0)[inline]
Computes the value of the second derivative of a function using the Taylor formula.
Use the following HTML code to embed the calculators within other websites:
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 SiriusAuthors
- Lucian Bentea (September 2006)
Taylor1
doubletaylor1( double (*f)(double)[function pointer]
double x
double h
double gamma
= 1.0 )[inline]x_1 = x_* - h, \qquad x_2 = x_* + \gamma h
where \inline h, \gamma are real positive constants. Then the approximate value of the first derivative \inline \displaystyle \frac{df}{dx} at the abscissa \inline x_* is given by:
\frac{df}{dx}(x_*) \approx \frac{f(x_2) - f(x_1)}{2h} \qquad \mbox{if } \gamma = 1
or
\frac{df}{dx}(x_*) \approx \frac{f(x_2) - f(x_1)}{(\gamma + 1)h} \qquad \mbox{if } \gamma \neq 1.
In the case \inline \gamma = 1 we have an error bound of:
\epsilon \leq \frac{h^2}{6} \sup_{a<x<b} \left|\frac{d^3f}{dx^3}\right|
while in the case when \inline \gamma \neq 1 the error is given by:
\epsilon = (1 - \gamma) \frac{h}{2}\frac{d^2f}{dx^2}(x_*) - \frac{h^2}{3!(\gamma + 1)} \left[\gamma^3 \frac{d^3f}{dx^3}(\xi_2) + \frac{d^3f}{dx^3}(\xi_1)\right]
where \inline \xi_1 \in (x_1, x_*) and \inline \xi_2 \in (x_*, x_2). The error estimate for \inline \gamma \neq 1 comes from the Taylor formula applied to the given function \inline f at point \inline x_*.
On account of the above relations you may notice that the error approaches zero as \inline h approaches zero for \inline \gamma \neq 1, and as \inline h^2 approaches zero for \inline \gamma = 1.Example 1
- Below we give an example of how to compute the first numerical derivative of \inline \cos x at point \inline x = 1, considering \inline \gamma = 1 (equally spaced abscissas).
The absolute error from the actual value of the derivative at that point is also displayed.
#include <> #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; }
Outputh = 0.001 f(x) = cos(x) f`(1) = -0.841470844562695 real value = -0.841470984807897 error = 0.000000140245202
Parameters
- f the function to differentiatex the abscissa at which you want to compute the first derivativeh the value of the precision constant hgamma Default 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
doubletaylor2( double (*f)(double)[function pointer]
double x
double h
double gamma
= 1.0 )[inline]x_1 = x_* - h, \qquad x_2 = x_* + \gamma h
where \inline h, \gamma are real positive constants. Then the approximate value of the second derivative \inline \displaystyle \frac{d^2f}{dx^2} at the abscissa \inline x_* is given by:
\frac{d^2f}{dx^2}(x_*) \approx \frac{f(x_1) - 2f(x_*) + f(x_2)}{h^2} \qquad \mbox{if } \gamma = 1
or
\frac{d^2f}{dx^2}(x_*) \approx \frac{2}{h^2\gamma(\gamma + 1)} [\gamma f(x_1) - (1 + \gamma) f(x_*) + f(x_2)] \qquad \mbox{if } \gamma \neq 1.
In the case \inline \gamma = 1 we have an error bound of:
\epsilon \leq \frac{h^2}{12} \sup_{a<x<b} \left|\frac{d^4f}{dx^4}(x)\right|
while in the case when \inline \gamma \neq 1 the error is given by:
\epsilon = \frac{h}{3(\gamma + 1)} \left[\gamma^2 \frac{d^3f}{dx^3}(\xi_2) - \frac{d^3f}{dx^3}(\xi_1)\right]
where \inline \xi_1 \in (x_1, x_*) and \inline \xi_2 \in (x_*, x_2). The error estimate for \inline \gamma \neq 1 comes from the Taylor formula applied to the given function \inline f at point \inline x_*.
On account of the above relations you may notice that the error approaches zero as \inline h approaches zero for \inline \gamma \neq 1, and as \inline h^2 approaches zero for \inline \gamma = 1.Example 2
- Below we give an example of how to compute the second numerical derivative of \inline \cos x at \inline x = 1, considering \inline \gamma = 1 (equally spaced abscissas). The absolute error from the actual value of the derivative at that point is also displayed.
#include <> #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; }
Outputh = 0.0001 f(x) = cos(x) f``(1) = -0.540302319866019 real value = -0.540302305868140 error = 0.000000013997879
Parameters
- f the function to differentiatex the abscissa at which you want to compute the second derivativeh the value of the precision constant hgamma Default 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.