Numerical Analysis, Section 2

Project Five: Adaptive Integration

1. Project Description

In this project, you will write two C functions to perform adaptive integration. Recall that the Nth

order Chebyshev expansion of the function f on the interval [a, b] is the polynomial

p(x) = X

N

n=0

0

anTn

ˆ

2

b − a

x −

b + a

b − a

˙

, (1)

where the coefficients {an} are defined via the formula

an =

2

N + 1

X

N

j=0

f

ˆ

b − a

2

xj +

b + a

2

˙

Tn pxj q

with x0, x1, . . . , xN given by

xj = cos ˜

j +

1

2

N + 1

π

¸

.

The Nth order piecewise Chebyshev expansion of the function f : [a, b] → R

n given on the partition

a = a0 < a1 < a2 < . . . < am = b (2)

consists of m polynomials of degree N

p0, p1, . . . , pm−1. (3)

The i

th polynomial pi

is the Nth order Chebyshev expansion of f on the interval [ai

, ai+1]. It is

defined by the formula

pi(x) = X

N

n=0

0

c

i

n Tn

ˆ

2

ai+1 − ai

x −

ai+1 + ai

ai+1 − ai

˙

,

where the coefficients ?

c

i

n

are

c

i

n =

2

N + 1

X

N

j=0

f

ˆ

ai+1 − ai

2

xj +

ai+1 + ai

2

˙

Tn pxj q. (4)

Your task is to implement two functions, “chebint” and “chebadap int”. These functions will be

placed in a C file called “chebint.c”. The first of them, “chebint”, will evaluate the definite integral

Z b

a

p(x) dx

1

of an expansion p of the form (1) given the coefficients a0, a1, . . . , aN . The second of these functions, “chebadap int” will, given a piecewise Chebyshev expansion of a function f consisting of the

partition (2) and the expansions (3), approximate the integral

Z b

a

f(x) dx

by computing the sum

mX−1

j=0

Z aj+1

aj

pj (x) dx. (5)

Presumably, each term in the sum (5) will be evaluated via a call to your “chebint” function. The

calling syntaxes for both of these functions are in the “chebint.c” file.

2. Testing and grading

A public test code is given in the file inttest1.c. Another test code, called inttest2.c, will be used

to test your function as well. Half of the project grade will come from the first test file, and the

second half will come from the second. The commands

gcc -o inttest1 chebexp.c chebadap.c chebint.c inttest1.c -lm

./inttest1

can be used to compile and execute your program. There are five tests of your function in

“inttest1.c”, and the program will tell your score out of 5. We will also test your code by compiling

against inttest2.c, which we will not release until after the projects are due. You will get a 0 on

your project if it does not compile and run. Please start work on your project early and come see

either myself or our TA, Karry Wong, if you are having difficulties getting it to compile.

You should feel free to use either my versions of the files “chebexp.c” and “chebadap.c”, or your

own.

3. Submitting your project

You will submit your project using canvas. You should submit only your “chebint.c” fule. You

must submit your file by 11:59 PM on the due data. Late assignments will not be accepted.

2