exp_2

View page source

Second Order Exponential Approximation

Syntax

# include "exp_2.hpp"

y = exp_2 ( x )

Purpose

This is a simple example algorithm that is used to demonstrate Algorithmic Differentiation (see exp_eps for a more complex example).

Mathematical Form

The exponential function can be defined by

\[\exp (x) = 1 + x^1 / 1 ! + x^2 / 2 ! + \cdots\]

The second order approximation for the exponential function is

\[{\rm exp\_2} (x) = 1 + x + x^2 / 2\]

include

The include command in the syntax is relative to

cppad- yyyymmdd / introduction/exp_apx

where cppad- yyyymmdd is the distribution directory created during the beginning steps of the installation of CppAD.

x

The argument x has prototype

const Type & x

(see Type below). It specifies the point at which to evaluate the approximation for the second order exponential approximation.

y

The result y has prototype

Type y

It is the value of the exponential function approximation defined above.

Type

If u and v are Type objects and i is an int :

Operation

Result Type

Description

Type ( i )

Type

construct object with value equal to i

Type u = v

Type

construct u with value equal to v

u * v

Type

result is value of \(u * v\)

u / v

Type

result is value of \(u / v\)

u + v

Type

result is value of \(u + v\)

Contents

Implementation

The file exp_2.hpp contains a C++ implementation of this function.

Test

The file exp_2.cpp contains a test of this implementation.

Exercises

  1. Suppose that we make the call

    double x = .1;
    double y = exp_2(x);
    

    What is the value assigned to v1 , v2 , … ,``v5`` in exp_2.hpp ?

  2. Extend the routine exp_2.hpp to a routine exp_3.hpp that computes

    \[1 + x^2 / 2 ! + x^3 / 3 !\]

    Do this in a way that only assigns one value to each variable (as exp_2 does).

  3. Suppose that we make the call

    double x = .5;
    double y = exp_3(x);
    

    using exp_3 created in the previous problem. What is the value assigned to the new variables in exp_3 (variables that are in exp_3 and not in exp_2 ) ?