Numerical Quadrature (Integration)

advertisement
Numerical Differentiation and
Quadrature (Integration)
df ( x)
dx
b
,

f ( x )d x
a
Daniel Baur
ETH Zurich, Institut für Chemie- und Bioingenieurwissenschaften
ETH Hönggerberg / HCI F128 – Zürich
E-Mail: daniel.baur@chem.ethz.ch
http://www.morbidelli-group.ethz.ch/education/index
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
1
Numerical Differentiation
 Problem:
Though an analytical derivative can be found for all
differentiable functions, it is often impractical to calculate it
 Solution:
Approximate the derivative numerically
 Method of finite differences:
 Remember that:
df ( x)
dx
 Therefore:
 lim
x  x0
h 0
h
f ( x0  h )  f ( x0 )
df ( x)
dx
f ( x0  h )  f ( x0 )
x  x0
for small h
h
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
2
Numerical Quadrature (Integration)
 Problem:
Generally, it is not possible to find the antiderivative
(Stammfunktion) of a function f(x) in order to solve a
definite integral in the interval [a,b]
 Solution:
Approximate the area under the curve numerically
 Trapezoidal rule:
Divide the interval into sub-intervals and approximate the
integral by the sum of the areas of the resulting trapezoids
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
3
Trapezoidal rule
h
h
b  a 
A
2
n
a
b

a
f ( x )d x
h
2
h
x1
( f ( a )  f ( x1 )) 
b

a
f ( x )d x
h
2
x2
h
2
( f ( a )  f ( x1 ))
xn-1 b
( f ( x1 )  f ( x 2 )) 

h
2
( f ( x n 1 )  f ( b ))
n 1
( f ( a )  f ( b ))  h   f ( x i )
i 1
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
4
How does Matlab do it?
 quad: Low accuracy, non-smooth integrands, uses
adaptive recursive Simpson rule
 quadl: High accuracy, smooth integrands, uses adaptive
Gauss/Lobatto rule (degree of integration routine related to
number of points)
 quadgk: High accuracy, oscillatory integrands, can handle
infinite intervals and singularities at the end points, uses
Gauss/Konrod rule (re-uses lower degree results for higher
degree approximations)
 Degree p of an integration rule = Polynomials up to order p
can be integrated accurately (assuming there is no
numerical error)
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
5
Matlab Syntax Hints
 All the integrators use the syntax
result = quadl(int_fun, a, b, ...);
 int_fun is a function handle to a function that takes one input x and
returns the function value at x; it must be vectorized
 Use parametrizing functions to pass more arguments to
int_fun if needed
f_new = @(x)int_fun(x, K);
 f_new is now a function that takes only x as input and returns the
value that int_fun would return when K is used as second input
 Note that K must be defined in this command
 This can be done directly in the integrator call:
result = quadl(@(x)int_fun(x, K), a, b);
 Matlab 2012a and newer: integral(...)
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
6
Assignment 1
 Consider the function
f ( x )  log  x 
df ( x)
dx

x  x0
1
x0
1. Use the method of finite differences to approximate the
derivative of f(x) at x = 1. Vary h between 10-15 and
10-1 using logspace(-15, -1, 200), and calculate
the error of the finite differences approximation compared
to the analytical solution for each h.
2. Plot the error vs. h using loglog. What do you observe?
What could be the cause for this behavior?
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
7
Exercise
 Mass Transfer into Semi-Infinite Slab
 Consider a liquid diffusing into a solid material
 The liquid concentration at the interface is constant
 The material block is considered to be infinitely long, the
concentration at infinity is therefore constant and equal to the starting
concentration inside the block
c(z, t)
c0 = const.
c∞ = const.
z
0
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
8
Exercise (continued)
 Using a local mass balance, we can formulate an ODE
 A ccum ulation    M ass In    M ass O ut 
jin
jout
dm
V
dt
dc
z+Δz
z
dt
dc
 A  z
dt

dc
dt
 A  jz  A  jz  z
jz  jz  z
z
 where j is the diffusive flux in [kg m-2 s-1]
 With Δz  0, we arrive at a PDE in two variables
c
t

j
z
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
9
Exercise (continued)
 By combining this local mass balance with Fick’s law, a
PDE in one variable is found:
j D
dc

dz
c
t
 c
2
 D
z
2
 The analytical solution of this equation (found by
combination of variables) reads:
c  c0
c  c0
 
 erf  

2


 exp   s
2
 ds
0
z
4Dt
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
10
Assignment 2
1. Write a Matlab program to calculate and plot the
concentration profile in the slab



Use the following values:
c∞ = 0; c0 = 1
Create a vector zeta = linspace(1e-6, 3), calculate the
value of c for each zeta, then plot c vs. zeta
Use integral or quadl for the integration
2. Create a function which calculates an integral with the
trapezoidal rule
 Use the form: function F = trapInt(f, n, a, b)
 Where f is a function handle to the function that is to be integrated,
n is the number of points and a and b denote the interval
 Use your function to solve the diffusion problem and compare it to
the result you obtained with quadl or integral.
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
11
Assignment 2 (continued)
3. Improve your function by adding a convergence check:
 In addition to computing the integral with n points, simultaneously
calculate it with 2n points
 while the results differ by more than 10-6, double n and iterate the
calculation
 Terminate the calculation and issue a warning if n exceeds 106
Daniel Baur / Numerical Methods for Chemical Engineers / Numerical Quadrature
12
Download