2 Tutorial Outline Functions using M-files. Numerical Integration using the Trapezoidal Rule.Example #1: Numerical Integration using Standard Programming (Slow).Example #2: Numerical Integration using Vectorized MATLAB operations (Fast).Student Lab Exercises.
3 What Are Function M-Files Function M-files are user-defined subroutines that can be invoked in order to perform specific functions.Input arguments are used to feed information to the function.Output arguments store the results.EX: a = sin(d).All variables within the function are local, except outputs. NOTE: Local variables are variables that are only used within the function. They are not saved after the M-file executes.
4 Example of a Function M-File function answer = average3(arg1,arg2, arg3)% A simple example about how MATLAB deals with user% created functions in M-files.% average3 is a user-defined function. It could be named anything.% average3 takes the average of the three input parameters: arg1,% arg2, arg3% The output is stored in the variable answer and returned to the% user.% This M file must be saved as average3.manswer = (arg1+arg2+arg3)/3;
5 How to call a function in matlab X = sin(pi);% call the interior function of Matlab, sinY = input(“How are you?”)% call the interior function of Matlab, input% input is a function that requests information from% the user during runtimeY=average3(1, 2, 3);.% average3 is a user-defined function.% The average value of 1,2 and 3 will be stored in Y
6 Example: Calling a Function from within the Main program. % Example1: This is a main program example to illustrate how functions are called.% input is a function that requests information from% the user during runtime.VarA = input('What is the first number?');VarB = input('What is the second number?');VarC = input('What is the third number?');VarAverage=average3(VarA, VarB, VarC);% num2str converts a number to a string.result=[‘The average value was’, num2str(VarAverage)]
7 Numerical Integration General Approximation Made With Num. Integration:b n∫ f(x) dx ≈ ∑ ci f(xi)a i=0Trapezoidal rule:Integration finds the “Area” undera curve, between two points (a and b).To approximate the area under a curve,use a familiar shape whose area wealready know how to calculate easily.In this case, we’ll use a trapezoid shape.Area of trapezoid = ½ (b1 + b2) hxyf(b)f(a)base 2 (b1)abhbase 2 (b2)
8 Numerical Integration Trapezoidal Rule (con’t):xyArea under curve ≈ Area of trapezoidunder the curveArea of trapezoid = ½ h [ b1 + b2 ]Area under curve ≈ ½ (b-a) [ f(a) + f(b) ]Therefore, Trapezoidal Rule:b∫ f(x) dx ≈ ½ (b-a) [ f(a) + f(b) ]af(b)f(a)abHow can we get a better approximation of the area under the curve?Answer: Use More Trapezoids
9 Numerical Integration More trapezoids give a better approximation of the area under curvexyAdd area of both trapezoids together,more precise approx. of area under curveArea of trapezoid = ½ h [ b1 + b2 ]Area under curve ≈½ (x1-a) [ f(a) + f(x1) ] + ½ (b-x1) [ f(x1) + f(b) ]Simplify:½ ((b-a)/2) [ f(a) + f(x1) + f(x1) + f(b) ](b-a)/4* [ f(a) + 2 * f(x1) + f(b) ]f(b)f(x1)f(a)Area of Trapezoid 1Area of Trapezoid 2abx1Area under curve ≈
10 Numerical Integration Using more trapezoids to approximate area under the curve is called: Composite Trapezoidal RuleThe more trapezoids, the better, so instead of two trapezoids, we’ll use n trapezoids.The greater the value of n, the better our approximation of the area will be.
11 Composite Trapezoidal Rule Divide interval [a,b] into n equally spaced subintervals (Add area of the n trapezoids)b x x b∫ f(x) dx ≈ ∫ f(x) dx + ∫ f(x) dx + … + ∫ f(x) dxa a x xn-1≈ (b-a)/2n [ f(a) + f(x1) + f(x1) + f(x2) +…+ f(xn-1) + f(b) ]≈ (b-a)/2n [ f(a) + 2 f(x1) + 2 f(x2) +…+ 2 f(xn-1) + f(b) ]b∫ f(x) dx ≈ Δx/2 [ y0 + 2y1 + 2y2 + … + 2yn-1 + yn ]aComposite Trapezoidal Rule
12 Example 1 on Numerical Integration Implementing Composite Trapezoidal Rule in MatlabExample Curve: f(x) = 1/x , let’s integrate it from [e,2e] :2e e∫ 1/x dx = ln (x) | = ln (2e) – ln (e) = ln (2) =e eMatlab Equivalentfunction I=Trapez(f, a, b, n) % take f, add n trapezoids,from a to b% Integration using composite trapezoid ruleh = (b-a)/n ; % increments = feval(f,a) ; % starting valuefor i=1:n-1x(i) = a + i*h ;s = s+2 * feval (f,x(i)) ;ends = s + feval(f,b) ;I = s*h/2 ;Area under curve: 1/x, from [e,2e]Inline(‘1/x’)In our case, input to the function will be:f = inline (’1/x’)a = e =b = 2e
13 Example 2 on Numerical Integration: Using MATLAB Vectorized Operations This function carries out the same function as the previous example, but by using MATLAB Vectorized operations, it runs much faster.function I=FastTrap(f, a, b, n)% Same as the previous Trapezoidal function example, but using more% efficient MATLAB vectorized operations.h=(b-a)/n; % Increment values=feval(f, a); % Starting valuein=1:n-1;xpoints=a+in*h; % Defining the x-pointsypoints=feval(vectorize(f),xpoints); % Get corresponding y-pointssig=2*sum(ypoints); % Summing up values in ypoints, and mult. by 2s=s+sig+feval(f,b); % Evaluating last termI=s*h/2;
14 Example 3: Integrating Trapezoidal/FastTrap Function into Main Program Main program to test numerical integration function, and to measure difference in speed between the two previous functions.% Example 3: Main program to run the numerical integration function,% using the user-created Trapezoidal/FastTrap methods.fon=inline('log‘); % Defines the function we wish to integrate.a=exp(1); % Starting point.b=2*a; % Ending point.n=1000; % Number of intervals.tic % Start counter.OutValue=Trapez (fon, a, b, n) % Calling Trapezoidal function.toc % Stop counter, and print out counters value.% Try replacing the Trapez function with the vectorized FastTrap% function, and notice the difference in speeds between the two.
15 Example 3: Continuation Try two different values of NN=1,000N=100,000.For both N values, test the code using both functions for the Trapezoidal method: The normal Trapez Method, and the FastTrap Method.Compare the difference in execution time between the standard way (Trapez), and the vectorized approach (FastTrap).
16 Additional MATLAB Exercise Function: y(i) = sin [ x(i) ]Where x(i) is “defined” by 101 uniformly spaced points in [0, 2π].Define the integral:x(i)Int (i) = ∫ sin (t) dtCalculate Int(i) for all values, i = 1, … , 101Plot y(i) and Int(i) versus x(i), for i =1, …, 101