0% found this document useful (0 votes)
11 views

Class8 Lab

Uploaded by

w8cvyxkz4p
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Class8 Lab

Uploaded by

w8cvyxkz4p
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

MATLAB Tutorial

ECE 002
Professor S. Ahmadi
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.
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.
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.m

answer = (arg1+arg2+arg3)/3;
How to call a function in matlab
X = sin(pi);
% call the interior function of Matlab, sin

Y = input(“How are you?”)


% call the interior function of Matlab, input
% input is a function that requests information from
% the user during runtime

Y=average3(1, 2, 3);.
% average3 is a user-defined function.
% The average value of 1,2 and 3 will be stored in Y
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)]
Numerical Integration
• General Approximation Made With Num. Integration:
b n

∫ f(x) dx ≈ ∑ ci f(xi)
a i=0

• Trapezoidal rule: • Integration finds the “Area” under


y a curve, between two points (a and b ).
• To approximate the area under a curve,
f(b) use a familiar shape whose area we
already know how to calculate easily.
f(a) • In this case, we’ll use a trapezoid shape.
• Area of trapezoid = ½ (b1 + b2) h
base 2 (b1)
x
a b h
base 2 (b2)
Numerical Integration
• Trapezoidal
y
Rule (con’t) :
• Area under curve ≈ Area of trapezoid
f(b) under the curve
f(a) • Area of trapezoid = ½ h [ b1 + b2 ]
• Area under curve ≈ ½ (b-a) [ f(a) + f(b) ]

• Therefore, Trapezoidal Rule:


x b
a b ∫ f(x) dx ≈ ½ (b-a) [ f(a) + f(b) ]
a

• How can we get a better approximation of


the area under the curve?
• Answer: Use More Trapezoids
Numerical Integration
• More trapezoids give a better
approximation of the area under curve
y
• Add area of both trapezoids together,
f(b) more precise approx. of area under curve
f(x1)
f(a) • Area of trapezoid = ½ h [ b1 + b2 ]
• Area under curve ≈

x Area of Trapezoid 1 Area of Trapezoid 2

a x1 b ½ (x1-a) [ f(a) + f(x1) ] + ½ (b-x1) [ f(x1) + f(b) ]

Simplify:
½ ((b-a)/2) [ f(a) + f(x1) + f(x1) + f(b) ]

Area under curve ≈ (b-a) [ f(a) + 2 * f(x1) + f(b) ]


Numerical Integration
• Using more trapezoids to approximate
area under the curve is called: Composite
Trapezoidal Rule
• The 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.
Composite Trapezoidal Rule
• Divide interval [a,b] into n equally spaced
subintervals (Add area of the n trapezoids)

b x1 x2 b

∫ f(x) dx ≈ ∫ f(x) dx + ∫ f(x) dx + … + ∫ f(x) dx


a a x1 xn-1

≈ (b-a)/2n [ f(x) + f(x1) + f(x1) + f(x2) +…+ f(xn-1) + f(b)


]
≈ (b-a)/2n [ f(x) + 2 f(x1) + 2 f(x2) +…+ 2 f(xn-1) + f(b) ]
b

∫ f(x) dx ≈ Δx/2 [ y0 + 2y1 + 2y2 + … + 2yn-1 + yn ]


a
Composite Trapezoidal Rule
Example 1 on Numerical Integration
• Implementing Composite Trapezoidal Rule in Matlab
• Example Curve: f(x) = 1/x , let’s integrate it from [e,2e] :
2e 2e
∫ 1/x dx = ln (x) | = ln (2e) – ln (e) = ln (2) = 0.6931
e e
Area under curve: 1/x, from [e,2e]
• Matlab Equivalent Inline(‘1/x’)

function I=Trapez(f, a, b, n) % take f, add n trapezoids,from a to b


% Integration using composite trapezoid rule
h = (b-a)/n ; % increment
s = feval(f,a) ; % starting value
for i=1:n-1
x(i) = a + i*h ; In our case, input to the function will be:
s = s+2 * feval (f,x(i)) ; f = inline (’1/x’)
end a = e = 2.7182818
s = s + feval(f,b) ; b = 2e
I = s*h/2 ;
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 value


s=feval(f, a); % Starting value

in=1:n-1;
xpoints=a+in*h; % Defining the x-points
ypoints=feval(vectorize(f),xpoints); % Get corresponding y-points
sig=2*sum(ypoints); % Summing up values in ypoints, and mult. by 2
s=s+sig+feval(f,b); % Evaluating last term
I=s*h/2;
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.
Example 3: Continuation
• Try two different values of N
– N=1,000
– N=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).
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) dt


0

• Calculate Int(i) for all values, i = 1, … , 101


• Plot y( i) and Int(i) versus x( i), for i =1, …, 101

You might also like