Xnumbers Tutorial 
160 
The numeric result is, of course, 
completely wrong because the 
given integral goes to the infinity. 
But, even in this situation, this 
function gives us an alert: the sub-
intervals have reached the 
maximum limit of 65536 (2
16
So the result accuracy must be 
regarded with a reasonable doubt. 
Complex Function Integration (Romberg method) 
=cplxintegr(Funct, a, b)   
This function returns the numeric integral of a complex function f(z) by the Romberg method. 
 f f zdz
F a
F b
b
a
( )
( )
( )
=
The integration function "Funct"
must be a string in the variable z and can be defined mixing all 
arithmetic operators, common elementary functions and complex numbers like: 
"z*cos(z)", "1+(1+i)*z+z^2", "exp(-z^2)", ecc.. . 
Remember the quote " " for passing a string to an Excel function. 
Parameters "a" and b”  can be real or complex. Complex values are inserted as arrays of two 
cells.  
Example: Evaluate the following integral 
dz
z
i
i
i
1
1
1
2
+
+
Because the integration function is analytic, then the given integral is independent form the 
integration path. Therefore it can be calculated by the function cplxintegr   
The exact result is the complex 
number (−1+i) 
Note that, thanks to the excellent 
accuracy, the result is shown exactly 
even if it is intrinsically approximated 
Get pdf metadata - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
batch pdf metadata; add metadata to pdf
Get pdf metadata - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
pdf metadata viewer; remove pdf metadata online
Xnumbers Tutorial 
161 
Data Integration (Newton-Cotes) 
=IntegrDataC(x,y, [Degree]) 
This function returns the integral of a discrete set of points 
(
x
i
y
i
using the Newton-Cotes 
formulas. The points may be equidistant or random. The parameter "Degree", from 1(default) to 
10, set the degree of the Newton-Cotes formula written as: 
=
+
=
n
j
j
j
nh
x
x
f b
k
h
f x x dx
0
0
0
( )
where  f
i
= y
i
 "h" is the integration step,  "n" is the degree.  
The coefficients (b
j
, K)   can be extracted from the following table: 
Degree
1
2
3
4
5
6
7
8
9
10
K
2
3
8
45
288
140
17280
14175
89600
299376
b0
1
1
3
14
95
41
5257
3956
25713
80335
b1
1
4
9
64
375
216
25039
23552
141669
531500
b2
1
9
24
250
27
9261
-3712
9720
-242625
b3
3
64
250
272
20923
41984
174096
1362000
b4
14
375
27
20923
-18160
52002
-1302750
b5
95
216
9261
41984
52002
2136840
b6
41
25039
-3712
174096
-1302750
b7
5257
23552
9720
1362000
b8
3956
141669
-242625
b9
25713
531500
b10
80335
As we can see, for degree=1, the Newton-Cotes formula coincides with the trapezoidal rule 
and, for degree = 2, with the popular Cavalieri-Simpson formula. 
Trapezoid rule 
Cavalieri-Simpson rule 
(
)
1
0
1
0
0
1
2
 ( ( )
f
f
h
f x
h x x x
x
x
+
=
(
)
2
1
0
2
0
0
2
4
3
( )
2
f f
f
h
f x
x
x
h
x
x
+
+
=
For degree = 4, the table gives the Bode's rule 
4
0
4
x
x
h
=
(
)
0
0
0
0
0
14
64
24
64
14
45
( )
4
0
f
f
f
f
f
h
f xdx
x
x
+
+
+
+
Using the function IntegrDataC is very easy. 
Example. Calculate the integral with the Newton-Cotes formulas of degree = 1, 2, 4, 6 for the 
dataset obtained by sampling the function sin(x)/x with step 0.2 . In a previous example, using 
the Romberg method we have approximated this integral obtaining  
Si(1.6)  1.38918048587044 with an accuracy better than 1E-9 
Let's see now how the Newton-Cotes formulas work. 
C# TIFF: TIFF Metadata Editor, How to Write & Read TIFF Metadata
TIFFDocument doc = new TIFFDocument(@"c:\demo1.tif"); // Get Xmp metadata for string. TagCollection collection = doc.GetTagCollection(0); // Get Exif metadata.
batch update pdf metadata; remove metadata from pdf online
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
' Get PDF document. Dim fileInpath As String = "" Dim doc As PDFDocument = New PDFDocument(fileInpath) ' Get all annotations. ' Get PDF document.
remove metadata from pdf file; pdf metadata online
Xnumbers Tutorial 
162 
As we can see, the convergence to the exact result is evident. The most accurate result is 
reached with the 6
th
degree Newton-Cotes formula. The IntegrDataC can work with random 
samples. 
Example. Given the data table (xi yi) , approximate the integral with the Cavalieri-Simpson 
formula. 
1.1 
0.09531018 
1.2  0.182321557 
1.4  0.336472237 
1.8  0.587786665 
2.4  0.875468737 
3.2 
1.16315081 
 1.386294361 
 1.609437912 
0
0.4
0.8
1.2
1.6
2
0
1
2
3
4
5
6
Note that the data points are not equidistant. 
The points have been 
extracted from the function 
y = ln(x) .  
Thus the exact integral is 
5*ln(5)-4  4.0471896 
Data integration for random points. 
Having a set of not equidistant points (x
i
, y
i
), we cannot use directly the Newton-Cotes formulas 
for fixed step. 
In that case, IntegrDataC reorganizes the random data samples in equidistant data samples 
and after that, computes the integral using the standard formulas for fixed step 
Random Samples 
Converted to 
Equidistant Samples 
{ (x
i
, y
i
) ; i = 0, 1, ... n } 
 
{ (x
= x
0
+i h , y
(x
i
) ; i = 0, 1, ... m } 
For computing the values f(x
0
+i h ) at the equidistant grid points, IntegrDataC uses the Aitken 
Interpolation algorithm.  
Aitken interpolation algorithm.  
Given a set of points: 
{ (x
i
, y
i
   i = 0, 1, ... n } 
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Get PDF document. String fileInpath = @""; PDFDocument doc = new PDFDocument(fileInpath); // Get all annotations. Get PDF document.
modify pdf metadata; batch edit pdf metadata
How to C#: Modify Image Metadata (tag)
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel How to C#: Modify Image Metadata (tag). With XImage.Raster, you can get the image tags and modify them rapidly
metadata in pdf documents; add metadata to pdf file
Xnumbers Tutorial 
163 
This method is used to find the interpolation point  y
p
at the value x
p
It is efficient as the Newton formula, and it is also very simple to code. 
For j = 1 To n - 1 
For i = j + 1 To n 
y(i) = y(j) * (x(i) - xp) - y(i) * (x(j) - xp)/ (x(i) - x(j)) 
Next i 
Next j 
yp = yi(n) 
Function Integration (Newton-Cotes) 
=Integr_nc(funct, a, b, Intervals, [Degree])   
This function returns the numeric integral of a function f(x) using the Newton-Cotes formulas. 
 f f xdx
F a
Fb
b
a
( )
( )
( )
=
The parameter "Funct" is a math expression string in the variable x, such as: 
"x*cos(x)",  "1+x+x^2",  "exp(-x^2)", ecc.. . 
Remember the quote " " for passing a string to an Excel function. 
"Funct" may be also a cell containing a string formula 
The parameters "a" and "b" are the limits of integration interval 
The parameter "Intervals" sets the number of sub-intervals of the integration interval. 
The parameter "degree", from 1(default) to 10, set the degree of the Newton-Cotes formula. 
degree = 1 coincides with the Trapezoidal rule; degree = 2 coincides with the Cavalieri-
Simpson formula; degree = 4 with the Bode's rule. 
Remember that the total knots of the function computation is:  
knots = Intervals × Degree + 1 
Example: Approximate the following integral using 10 sub-intervals and three different 
methods: trapezoidal, Cavalieri-Simpson, and Bode's rule.  
1
0
x e e dx
x
The indefinite integral is known as the closed form: 
(
)
x
x
e
x
x e e dx
=− +
1
So we can compare the exact result, that is 
1
1 2
− e
 0.264241117657115356 
VB.NET PDF: Get Started with PDF Library
rotate PDF pages, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET VB.NET PDF: Get Started with .NET PDF Library Using VB.
pdf xmp metadata viewer; bulk edit pdf metadata
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Scan image to PDF, tiff and various image formats. Get image information, such as its location, zonal information, metadata, and so on.
clean pdf metadata; c# read pdf metadata
Xnumbers Tutorial 
164 
Integr_nc("x*exp(-x)",0,1,10,1) = 0.263408098685072  (8.3E-04) 
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0
0.2
0.4
0.6
0.8
1
1.2
x
f(x)
The trapezoidal rule, 
with 10 sub-intervals,  
requires 2 knots for 
each sub-interval for a 
total of 11 function 
evaluations (11 knots) 
The accuracy is better 
then 1E-3 
Integr_nc("x*exp(-x)",0,1,10,2) = 0.264241039074082  (7.8E-08) 
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0
0.2
0.4
0.6
0.8
1
1.2
x
f(x)
The Cavalieri-Simpson 
rule, with 10 sub-
intervals, requires 3 
knots for each sub-
interval for a total 21 
function evaluation (21 
knots) 
The accuracy is better 
then 1E-7 
Integr_nc("x*exp(-x)",0,1,10,4) = 0.264241117655293  (1.8E-12) 
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0
0.2
0.4
0.6
0.8
1
1.2
x
f(x)
The Bode's rule, with 10 
sub-intervals,  requires 
5 knots for each sub-
interval for a total of 41 
function evaluation (41 
knots). 
The accuracy is better 
then 2E-12 
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Capture image from whole PDF based on special characteristics. Get image information, such as its location, zonal information, metadata, and so on.
read pdf metadata java; edit multiple pdf metadata
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
You can easily get pages from a PDF file, and then use these pages to create and output a new PDF file. Pages order will be retained.
pdf remove metadata; search pdf metadata
Xnumbers Tutorial 
165 
Integration: symbolic and numeric approaches  
The usual approach to the calculation of the definite integral involves two steps: the first is the 
construction of the symbolic anti-derivative F(x) of f(x) 
=
f xdx
F x
( )
( )
and the second step is the evaluation of the definite integral applying the fundamental 
integration theorem. 
=
b
a
F b b F F a
f xdx
( )
( )
( )
This approach can only be adopt for the set of the functions of which we know the anti-
derivative in a closed form. For the most f(x), the integral must be approximated either by 
numerical quadrature or by same kind of series expansion. 
It is usually accepted that symbolic approaches, when possible, gives more accurate result 
then the numeric one. This is not always true. Even if the symbolic anti-derivative is known in a 
closed form, it may often be unsuitable for further numerical evaluation. In particular, we have 
cases in which such "exact" answers, when numerically evaluated, give less accurate results 
than numerical quadrature methods
1
Let's see. Assume to have the following integral functions 
( )
c
x
dx
x
x
F x
+
=
+
=
3
6
2
arctan
1
3
( )
We want to calculated the definite integral between a = 2000 and b = 2004 
The analytic approach gives: 
F(b) -F(a) = arctan(b
3
) -arctan(a
3
In the following worksheet we have compared the evaluations with the exact anti-derivative and 
the numerical quadrature with the Bode's rule. In the cell C2 we have inserted the anti-
derivative function.  
=ARCTAN(B2^3)-ARCTAN(A2^3) 
In the cell C2 we have inserted the Bode formula with 20 intervals  
=Integr_nc(D1, A2, B2, 20, 4) 
In the cell C5 we have also inserted the reference integral value 
As we can see, the more accurate result is those obtained with the numerical quadrature; 
surprisingly, it is more than 200 millions times more accurate than the one of the exact method!  
It is evident from this example that only the symbolic integration could not resolve efficiently the 
problem. For numerical integration the quadrature methods are often more efficient and 
accurate. 
1
"Improving Exact Integral from Symbolic Algebra System", R.J. Fateman and W. Kaham, University of California, 
Berkeley, July 18,2000 
C# PDF insert text Library: insert text into PDF content in C#.net
String inputFilePath = Program.RootPath + "\\" 1.pdf"; PDFDocument doc = new PDFDocument(inputFilePath); // get a text manager from the document object
extract pdf metadata; change pdf metadata
Xnumbers Tutorial 
166 
Integration of oscillating functions (Filon formulas) 
=Integr_fsin(Funct, a, b, k, Intervals)   
=Integr_fcos(Funct, a, b, k, Intervals)  
Oscillating functions can reserve several problems for the common polynomial integration 
formulas. The Filon's formulas are suitable to compute efficiently the following integrals. 
b
a
dx
kx
f x
)
cos(
( )
b
a
dx
kx
f x
)
( )sin(
for  k = 1, 2, 3...N 
The parameter "Funct" is a math expression string in the variable x, such as: 
"x*cos(x)",  "1+x+x^2",  "exp(-x^2)", ecc.. . 
Remember the quote " " for passing a string to an Excel function. 
"Funct" may be also a cell containing a string formula 
The parameters "a" and "b" are the limits of integration interval 
The parameter "k" is a positive integer 
The parameter "Intervals" sets the number of sub-intervals of the integration interval. 
Remember that the total number of the evaluation nodes is: Nodes = Intervals 
×
2 + 1 
To understand the effort in this kind of numerical integration let's see this simple test. Assume 
we have to evaluate the following integral for several integer values k, with   0 < k < 25 
π
0
4
)
cos( dx
kx
x
If we perform the computation with the Cavalieri-Simpson formula (80 nodes) and with the Filon 
formula (80 nodes), we get the following result  
1.E-08
1.E-07
1.E-06
1.E-05
1.E-04
1.E-03
1.E-02
1.E-01
1.E+00
0
5
10
15
20
25
30
k
Cavalieri-Simpson
Fillon
Relative error versus k 
As we can see, the relative error 
increases with the number k much 
more for the Cavalieri-Simpson rule 
than the Filon formula.  
For k = 24 the first formula should have 
400 nodes at least, for reaching the 
same accuracy of the Filon formula. 
Example: evaluate the integral of the following oscillating function 
+
π
2
0
2
sin(8 )
1
1
x
x
that can be rearranged as 
π
2
0
sin(8 )
( )
x
g x
where 
1
1
( )
2
+
=
x
g x
The plot of the integration function and its envelope function g(x) are shown in the following 
graph 
Xnumbers Tutorial 
167 
-1.2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
0
1
2
3
4
5
6
7
1/(x^2+1)
-1/(x^2+1)
1/(x^2+1)*sin(8*x)
Below, a simple arrangement to compute the given integral 
The approximate error is less then 1E-8, with 300 intervals (default) 
Xnumbers Tutorial 
168 
Integration of oscillating functions (Fourier transform) 
= Fourier_sin(funct, k, [a], [param])   
= Fourier_cos(funct, k, [a], [param])   
These functions
1
perform the numerical integration of oscillating functions over infinite intervals 
+∞
a
k x x dx
f x
)
sin(
( )
+∞
a
k x x dx
f x
)
cos(
( )
If a = 0 (default) , these integrals are called "Fourier's sine-cosine transforms" 
The parameter "funct" is a math expression defining the function f(x), not oscillating and 
converging to 0 for x approaching to infinity: 
"1/x", " 1/(8*x^2)", " exp(-b*x)", ecc.. .  
Remember the quote " " for passing a string to an Excel function. "Funct" may be also a cell 
containing a string formula 
The parameter  "k" is a positive number 
The "Param" contains labels and values for parameters substitution (if there are) 
These functions return "?" if the integral is not converging or if they cannot compute the integral 
with sufficient accuracy 
For finite integration see also Integration of oscillating functions (Filon formulas)
Example. Prove that is 
2
sin
0
π
=
+∞
dx
x
x
The graph of the integration functions is 
at the right. 
Numerically specking, this integral is 
very difficult to calculate for many 
algorithms. 
For example, the Bode adaptive quadrature needs more than 10.000 points for getting 
accuracy of about 1E-4. The Fourier_sin function on the contrary is very efficient for this kind of 
integral. The integral can be arranged in the following form 
+∞
+∞
=
0
0
 sin
1
sin
xdx
x
dx
x
x
That is the Fourier's sine transform of  1/x 
1
These functions use the double exponential quadrature derived from the original FORTRAN subroutine INTDEO of 
the DE-Quadrature (Numerical Automatic Integrator) Package , by Takuya OOURA, Copyright(C) 1996 
Xnumbers Tutorial 
169 
We see that the accuracy is better than 1E-15. Note that the function Fourier_sin automatically 
multiply the integration function f(x) for the factor sin(k*x), so we have only to pass the f(x) 
expression. 
Example. Verify that is 
8
cos4
0
π
=
+∞
dx
x
x
The graph of the integration functions is 
Observe that the integration function goes to 
infinity for x approaching to 0. 
Numerically specking this function is "terrible". 
The integral can be arranged in the following form 
+∞
+∞
=
0
0
 cos4
1
cos4
xdx
x
dx
x
x
That is the Fourier's cosine transform of  1/x^0.5 
The accuracy is better than 1E-15 
Infinite Integration of oscillating functions 
Generally, the infinite integration of real functions having a certain type of infinite oscillating tails 
may give some problem even to the most efficient quadrature algorithms. These problems can 
be avoided adopting specific integration tricks 
Let's see some of them. 
Example. Assume to calculate the following integral 
( )
)
(
)
dx
x
x
x
cos2
cos
0
+∞
The integration function coverges to zero but it contains two oscillating terms. So we cannot 
use directly the integr or integr_de function because they returns "?" 
For solving we can use the Fourier's cosine trasform, separating each oscillating term. 
The given integral can be re-arranged in the following way 
( )
(
)
( )
(
)
( )
)
(
)
dx
x
x
dx
x
x
dx
x
x
x
dx
x
x
x
cos2
cos
cos2
cos
cos2
cos
1
1
1
0
0
+∞
+∞
+∞
+
+
=
Note that the last two integrals cannot have the lower limit 0 because they do not converge for 
x approaching to 0. 
Documents you may be interested
Documents you may be interested