Matlab Part 2

Download as pdf or txt
Download as pdf or txt
You are on page 1of 52

Computer Programming

Second Class
Part (2)

MATLAB For
Chemical Engineer
Matrices
1. Entering matrices
Entering matrices into Matlab is the same as entering a vector, except each row of
elements is separated by a semicolon (;) or a return:
>>B = [1 2 3 4; 5 6 7 8; 9 10 11 12]
B=
1 2 3 4
5 6 7 8
9 10 11 12
Alternatively, you can enter the same matrix as follows:
>>B = [ 1 2 3 4
5678
9 10 11 12]
B=
1 2 3 4
5 6 7 8
9 10 11 12
Note how the matrix is defined, using brackets and semicolons to separate the
different rows.

2. Transpose
The special character prime ' denotes the transpose of a matrix e.g.
>> A=[1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
>> B=A'
B=
1 4 7
2 5 8
3 6 9

3. Matrix operations
3.1 Addition and subtraction
Addition and subtraction of matrices are denoted by + and -. This operations are
defined whenever the matrices have the same dimensions.

45
For example: If A and B are matrices, then Matlab can compute A+B and A-B when
these operations are defined.
>> A = [1 2 3;4 5 6;7 8 9]
A=
1 2 3
4 5 6
7 8 9
>> B = [1 1 1;2 2 2;3 3 3]
B=
1 1 1
2 2 2
3 3 3
>> C = [1 2;3 4;5 6]
C=
1 2
3 4
5 6
>> A+B
ans =
2 3 4
6 7 8
10 11 12
>> A+C
??? Error using ==>+
Matrix dimensions must agree.
Matrices can be joined together by treating them as elements of vectors:
>>D=[A B]
D=
1 2 3 1 1 1
4 5 6 2 2 2
7 8 9 3 3 3
>>A - 2.3
ans =
-1.3000 -0.3000 0.7000
1.7000 2.7000 3.7000
4.7000 5.7000 6.7000

46
3.2 Matrix multiplication
Matrix operations simply act identically on each element of an array. We have
already seen some vector operations, namely + and - , which are defined for vectors the
same as for matrices. But the operators * , / and ^ have different matrix interpretations.
>> A=[1,2,3;4,5,6;7,8 0]
A=
1 2 3
4 5 6
7 8 0
>> B=[1,4,7;2,5,8;3,6,0]
B=
1 4 7
2 5 8
3 6 0
>> A*B
ans =
14 32 23
32 77 68
23 68 113

3.3 Matrix division


To recognize how the two operator / and \ work ;
X = A\B is a solution to A*X = B
X = B/A is a solution to X*A = B
>>A=[1,2,3;4,5,6;7,8 0];
>>B=[1,4,7;2,5,8;3,6,0];
>>X= A\B
ans =
-0.3333 -3.3333 -5.3333
0.6667 3.6667 4.6667
0 -0.0000 1.0000
>> X = B/A
X=
3.6667 -0.6667 0.0000
3.3333 -0.3333 0.0000
4.0000 -2.0000 1.0000

47
3.4 Element-wise operation
You may also want to operate on a matrix element-by-element. To get element-wise
behavior appropriate for an array, precede the operator with a dot. There are two important
operators here .* and ./
A.*B is a matrix containing the elements of A multiplied by the corresponding
elements of B. Obviously A and B must have the same size. The ./ operation is similar but
does a division. There is a similar operator .^ which raises each element of a matrix to
some power.
>> E = [1 2;3 4]
E=
1 2
3 4
>> F = [2 3;4 5]
F=
2 3
4 5
>> G = E .* F
G=
2 6
12 20
If you have a square matrix, like E, you can also multiply it by itself as many times as
you like by raising it to a given power.
>>E^3
ans =
37 54
81 118
If wanted to cube each element in the matrix, just use the element-by-element cubing.
>> E.^3
ans =
1 8
27 64
>> A = [1 2 3;4 5 6;7 8 9];
1./A
ans =
1.0000 0.5000 0.3333
0.2500 0.2000 0.1667
0.1429 0.1250 0.1111

48
>> A./A
ans =
1 1 1
1 1 1
1 1 1
Most elementary functions, such as sin, exp, etc., act element-wise.
>> cos(A*pi)
ans =
-1 1 -1
1 -1 1
-1 1 -1
>> exp(A)
ans =
1.0e+003 *
0.0027 0.0074 0.0201
0.0546 0.1484 0.4034
1.0966 2.9810 8.1031

4. The Colon Operator


The colon operator can also be used to create a vector from a matrix. Define:
>> A = [1 2 3;4 5 6;7 8 9];
>> B=A(:,1)
B=
1
4
7
Note that the expressions before the comma refer to the matrix rows and after the
comma to the matrix columns.
>> B=A(:,2)
B=
2
5
8
>> B=A(1,:)
B=
1 2 3

49
The colon operator is also useful in extracting smaller matrices from larger matrices.
If the 4 x 3 matrix C is defined by
>> C = [ -1 0 0;1 1 0;1 -1 0;0 0 2 ]
C=
-1 0 0
1 1 0
1 -1 0
0 0 2
>> D=C(:,2:3)
creates the following 4 x 2 matrix:
D=
0 0
1 0
-1 0
0 2
>> D= C(3:4,1:2)
Creates a 2 x 2 matrix in which the rows are defined by the 3rd and 4th row of C and
the columns are defined by the 1st and 2nd columns of the matrix, C.
D=
1 -1
0 0

5. Referencing elements
The colon is often a useful way to construct these indices.
>> A = [1 2 3;4 5 6;7 8 9];
>> A(:,3)=0
Evaluated the third column to zero.
A=
1 2 0
4 5 0
7 8 0
>> A(:,3)=[]
Deleted the third column.
A=
1 2
4 5
7 8

50
>> A(3,:)=[]
Deleted the third row.
A=
1 2
4 5
>> A(:,3)=5
Expand the matrix into 2× 3 matrix, with a the values of the third column equal to 5.
A=
1 2 5
4 5 5
>> A(3,:)=7:9
Expand the matrix into 3× 3 matrix, with a values of the third column equal to 7, 8, 9:
A=
1 2 5
4 5 5
7 8 9
An array is resized automatically if you delete elements or make assignments outside
the current size. (Any new undefined elements are made zero.)
>> A(:,5)=10
Expand the matrix into 3× 5 matrix, with a values of the fourth column equal to 0
and the last column equal to 10:
A=
1 2 5 0 10
4 5 5 0 10
7 8 9 0 10

6. Matrix Inverse
The function inv is used to compute the inverse of a matrix. Let, for instance, the
matrix A be defined as follows:
>> A = [1 2 3;4 5 6;7 8 10]
A=
1 2 3
4 5 6
7 8 10
Then,
>> B = inv(A)
B=

51
-0.6667 -1.3333 1.0000
-0.6667 3.6667 -2.0000
1.0000 -2.0000 1.0000
The inverse of matrix A can be found by using either A^(-1) or inv(A).
>> A=[2 1 1; 1 2 2; 2 1 2]
A=
211
122
212
>> Ainv=inv(A)
Ainv =
2/3 -1/3 0
2/3 2/3 -1
-1 0 1
Let’s verify the result of A*inv(A).
>> A*Ainv
ans =
100
010
001
Also let’s verify the result of inv(A)*A
>> Ainv*A
ans =
100
010
001
Note: There are two matrix division symbols in Matlab, / and \ in which
a/b = a*inv(b)
a\b = inv(a)*b.

7. Predefined Matrix
Sometimes, it is often useful to start with a predefined matrix providing only the
dimension. A partial list of these functions is:
zeros: matrix filled with 0.
ones: matrix filled with 1.
eye: Identity matrix.

52
Finally, here are some examples on this special matrices
>>A=zeros(2,3)
A=
000
000
>>B=ones(2,4)
B=
1111
1111
>>C=eye(3)
C=
100
010
001

8. Other Operations on Matrix


Define a matrix M and examine the effect of each command separately:
>>M=[23 0 3;16 8 5;13 2 4;1 10 7]
M=
23 0 3
16 8 5
13 2 4
1 10 7
>>length(M) number of rows in M
4
>>size(M) matrix size (rows, columns)
4 3
>>find(M>7) finds indices of elements greater than 7.
1
2
3
6
8
>>sum(M) sum of elements in each column
53 20 19
>>max(M) maximum element in each column.
23 10 7

53
>>min(M) minimum element in each column
1 0 3
>>mean(M) mean of elements in each column
13.2500 5.0000 4.7500
>>sort(M) sorts each column prod(M) product of elements in each column
1 0 3
13 2 4
16 8 5
23 10 7
>>all(M) 1 if all elements nonzero, 0 if any element nonzero
1 0 1
>>abs(M) vector with absolute value of all elements
23 0 3
16 8 5
13 2 4
1 10 7
>>rand returns a random value from 0 to 1.
0.9058

>>rand(2,3) returns a random matrix with 2 rows and 3 columns


0.1270 0.6324 0.2785
0.9134 0.0975 0.5469

>>rand(3) returns a random matrix 3x3


0.9575 0.9706 0.8003
0.9649 0.9572 0.1419
0.1576 0.4854 0.4218

Exercise 1:
Start with a fresh M-file editing window. Write a code to convert the temperature in
Celsius into °F and then into °R for every temperature from 0 increasing 15 to 100°C.
Combine the three results into one matrix and display them as a table.
Solution:
tc = [0:15:100]; % tc is temperature Celsius, tf is temp deg F,
tf = 1.8.*tc + 32; % and tr is temp deg Rankin.
tr = tf + 459.69;
t = [tc',tf',tr'] % combine answer into one matrix

54
The results will be
t=
0 32.0000 491.6900
15.0000 59.0000 518.6900
30.0000 86.0000 545.6900
45.0000 113.0000 572.6900
60.0000 140.0000 599.6900
75.0000 167.0000 626.6900
90.0000 194.0000 653.6900

Exercise 2:
Use vectors with the aid of interp1 command to find the bubble point of ternary
system (Ethanol 40 mol%, Water 20 mol% and Benzene 40 mol%). Knowing that the
vapor pressure for three components are calculated by:
Ethanol Poe=exp(18.5242-3578.91/(T-50.5))
Water Pow=exp(18.3036-3816.44/(T-46.13))
Benzene Pob=exp(15.9008-2788.51/(T-52.36))
Where
Ki= P oi /Pt , Pt=760 , yi =Ki×xi , At Bubble point ∑yi=∑Ki×xi =1
Solution:
Xe=0.4;
Xw=0.2;
Xb=0.4;
T=[60:5:100]+273.15;
Pe=exp(18.5242-3578.91./(T-50.5));
Pw=exp(18.3036-3816.44./(T-46.13));
Pb=exp(15.9008-2788.51./(T-52.36));
Ke=Pe/760;
Kw=Pw/760;
Kb=Pb/760;
Ye=Ke*Xe;
Yw=Kw*Xw;
Yb=Kb*Xb;
Ys=Ye+Yw+Yb;
A=[T',Ye',Yw',Yb',Ys']
TBp=interp1(Ys,T,1)
The output of the above code will be:

55
A=
333.1500 0.1850 0.0393 0.2060 0.4304
338.1500 0.2305 0.0494 0.2451 0.5250
343.1500 0.2852 0.0615 0.2899 0.6366
348.1500 0.3502 0.0761 0.3409 0.7672
353.1500 0.4271 0.0935 0.3987 0.9194
358.1500 0.5176 0.1141 0.4640 1.0958
363.1500 0.6235 0.1384 0.5373 1.2992
368.1500 0.7466 0.1668 0.6194 1.5328
373.1500 0.8890 0.2000 0.7107 1.7997
TBp =
355.4352

Practice Problems
1) Write a program to make a table of the physical properties for water in the range of
temperatures from 273 to 323 K.
The Density :  = 1200.92 – 1.0056 T + 0.001084 T2
The conductivity: K= 0.34 + 9.278 * 10-4 T
The Specific heat: CP = 0.015539 (T – 308.2)2 + 4180.9

2) Define the 5 x 4 matrix, g.


 0 .6 1 .5 2 .3  0 .5 
8.2 0.5  0.1  2.0
 
g  5.7 8.2 9 .0 1 .5 
 
 0 .5 0 .5 2 .4 0 .5 
1.2  2.3  4.5 0.5 

Find the content of the following matrices and check your results for content using
Matlab.
a) a = g(:,2)
b) a = g(4,:)
c) a = g(4:5,1:3)
d) a = g(1:2:5,:)
e) a=sum(g)

3) Given the arrays x = [1 3 5], y = [2 4 6] and A = [3 1 5 ; 5 9 7], Calculate;


a) x + y
b) x' + y'
c) A - [x ; y]
d) [x ; y].*A
e) A – 3
56
Matrix Algebra

1. Introduction
There are a number of common situations in chemical engineering where systems of
linear equations appear. There are at least three ways in MATLAB for solving this system
of equations;
(1) Using matrix algebra commands (Also called matrix inverse or Gaussian
Elimination method)
(2) Using the solve command (have been discussed).
(3) Using the numerical equation solver.
The first method is the preferred; therefore we will explain and demonstrate it.
Remember, you always should work in an m-file.

2. Solving Linear Equations Using Matrix Algebra


One of the most common applications of matrix algebra occurs in the solution of
linear simultaneous equations. Consider a set of n equations in which the unknowns are x1,
x2, ....... xn.
a11x1 + a12x2 + a13x3 + ............... a1nxn = b1
a21x1 + a22x2 + a23x3 + ............... a2nxn = b2
a31x1 + a32x2 + a33x3 + ............... a3nxn = b3
. . . . .
an1x1 + an2x2 + an3x3 + ............... annxn = bn
where
xj is the jth variable.
aij is the constant coefficient of the jth variable in the ith equation.
bj is constant “right-hand-side” coefficient for equation i.

The system of equations given above can be expressed in the matrix form as.
 a 11 a 12 a 13 : a 1n   x 1   b 1 
a a 22 a 23 : :   x 2   b 2 
 21
 : : : : : x 3   b 3 
    
 : : : : :  :   : 
a n1 a n2 a n3 : a nn   x n  b n 

Or
AX = b
Where

57
 a 11 a 12 a 13 : a 1n   b1   x1 
a x 
 21 a 22 a 23 : a 2n  b 
 2  2
A : : : : :  b  b3  X  x 3 
     
 : : : : :  :  : 
a n1 a n2 a n3 : a nn   b n   x n 

To determine the variables contained in the column vector 'x', complete the following
steps.
(a) Create the coefficient matrix 'A'. Remember to include zeroes where an equation
doesn't contain a variable.
(b) Create the right-hand-side column vector 'b' containing the constant terms from
the equation. This must be a column vector, not a row.
(c) Calculate the values in the 'x' vector by left dividing 'b' by 'A', by typing x = A\b.
Note: this is different from x = b/A.

As an example of solving a system of equations using the matrix inverse method,


consider the following system of three equations.
x1 - 4x2 + 3x3 = -7
3x1 + x2 - 2x3 = 14
2x1 + x2 + x3 = 5
These equations can be written in matrix format as;
1  4 3   x1   7
3 1  2  x    14 
  2   
2 1 1   x 3   5 

To find the solution of the following system of equations type the code.
A =[1,-4, 3; 3, 1, -2; 2, 1, 1]
B = [ -7;14; 5]
x = A\B
the results will be results in
x=[3
1
-2 ]
In which x1=3, x2=1, x3= -2
To extract the value of each of x1, x2, x3 type the command:
x1=x(1)
x2=x(2)
x3=x(3)
The results will be:
58
x1 =
3
x2 =
1
x3 =
-2

Exercise 1:
For the following separation system, we know the inlet mass flow rate (in Kg/hr) and
the mass fractions of each species in the inlet flow (F) and each outlet flow (F1, F2 and
F3). We want to calculate the unknown mass flow rates of each outlet stream.
Solution:
If we define the unknowns as x1=F1, x2=F2 , x3=F3 F1=?

and set up the mass balances for A=4 %


1. the total mass flow rate B=93%
C=3 %
x1 +x2 +x3 =10
F=10 F2=?
2. the mass balance on species 1
0.04x1+0.54x2+0.26x3=0.2*10 A=20% A=54%
B=60% B=24%
3. the mass balance on species 2
C=20% C=22%
0.93x1+0.24X2 =0.6*10
These three equations can be written in matrix form
 1 1 1   x1  10
0.04 0.54 0.26  x 2   2 
    
0.93 0.24 0   x3  6 

To find the values of unknown flow rates write the code: F3=?
A=[1, 1, 1; .04, .54, .26; .93, .24 ,0]; A=26%
B=[10; .2*10; .6*10]; B=0 %
C=74%
X=A\B;
F1=X(1),F2=X(2),F3=X(3)
The results will be:
F1 =
5.8238
F2 =
2.4330
F3 =
1.7433

59
Exercise 2:
Write a program to calculate the values of XA, XB,YA, YB, L and V for the vapor
liquid separator shown in fig.
If you know: V=?
XA+XB=1 YA=?
YA+YB=1 YB=?
Vapor
YA=KA*XA=1.9XA F=100 Kg/hr
YB=KB*XB=0.6XB 40% A
liquid 60% B
L=?
XA=?
XB=?
Solution:
A=[1,1,0,0;0,0,1,1;-1.9,0,1,0;0,-0.6,0,1];
B=[1;1;0;0];
X=A\B;
xa=X(1)
xb=X(2)
ya=X(3)
yb=X(4)
a=[xa,ya;xb,yb];
b=[.4*100;.6*100];
x=a\b;
L=x(1),
V=x(2)
Gives the results
xa =
0.3077
xb =
0.6923
ya =
0.5846
yb =
0.4154
L=
66.6667
V=
33.3333

60
Exercise 3:
Xylene, styrene, toluene and benzene are to be separated with the array of distillation
columns that is shown below. Write a program to calculate the amount of the streams D,
B, D1, B1, D2 and B2 also to calculate the composition of streams D and B.

Solution:
By making material balance on individual components on the overall separation train
yield the equation set
Xylene: 0.07D1+ 0.18B1+ 0.15D2+ 0.24B2= 0.15× 70
Styrene: 0.04D1+ 0.24B1+ 0.10D2+ 0.65B2= 0.25× 70
Toluene: 0.54D1+ 0.42B1+ 0.54D2+ 0.10B2= 0.40× 70
Benzene: 0.35D1+ 0.16B1+ 0.21D2+ 0.01B2= 0.20× 70
Overall material balances and individual component balances on column 2 can be
used to determine the molar flow rate and mole fractions from the equation of stream D.
Molar Flow Rates: D = D1 + B1
Xylene: XDxD = 0.07D1 + 0.18B1
Styrene: XDsD = 0.04D1 + 0.24B1
Toluene: XDtD = 0.54D1 + 0.42B1
Benzene: XDbD = 0.35D1 + 0.16B1
where
XDx = mole fraction of Xylene.
XDs = mole fraction of Styrene.
XDt = mole fraction of Toluene.
XDb =mole fraction of Benzene.
61
Similarly, overall balances and individual component balances on column 3 can be
used to determine the molar flow rate and mole fractions of stream B from the equation
set.
Molar Flow Rates: B = D2 + B2
Xylene: XBxB = 0.15D2 + 0.24B2
Styrene: XBsB = 0.10D2 + 0.65B2
Toluene: XBtB = 0.54D2 + 0.10B2
Benzene: XBbB = 0.21D2 + 0.01B2
where F, D, B, D1, B1, D2 and B2 are the molar flow rates in mol/min.
Now type the following code in command window
A=[0.07, 0.18, 0.15, 0.24; 0.04, 0.24, 0.10, 0.65; 0.54, 0.42, 0.54, 0.1;0 .35,
0.16, 0.21, 0.01];
B=[0.15*70; 0.25*70; 0.4*70; 0.2*70];
X=A\B;
D1=X(1)
B1=X(2)
D2=X(3)
B2=X(4)
D=D1+B1
B=D2+B2
XDx=(.07*D1+.18*B1)/D
XDs=(.04*D1+.24*B1)/D
XDt=(.54*D1+.42*B1)/D
XDb=(.35*D1+.16*B1)/D
XBx=(.15*D2+.24*B2)/B
XBs=(.1*D2+.65*B2)/B
XBt=(.54*D2+.1*B2)/B
XBb=(.21*D2+.01*B2)/B
The results will be
D1 =
26.2500
B1 =
17.5000
D2 =
8.7500
B2 =
17.5000

62
D=
43.7500
B=
26.2500
XDx =
0.1140
XDs =
0.1200
XDt =
0.4920
XDb =
0.2740
XBx =
0.2100
XBs =
0.4667
XBt =
0.2467
XBb =
0.0767

Exercise 4:
Balance the following chemical equation:
x1 CH4 + x2 O2 x3 CO2 + x4 H2O
Solution:
There are three elements involved in this reaction: carbon (C), hydrogen (H), and
oxygen (O). A balance equation can be written for each of these elements:
Carbon (C): 1x1 + 0x2 = 1x3 + 0x4
Hydrogen (H): 4x1 + 0x2 = 0x3 + 2x4
Oxygen (O): 0x1 + 2x2 = 2x3 + 1x4
Re-write these as homogeneous equations, each having zero on its right hand side:
x1 – x3 = 0
4x1 – 2x4 = 0
2x2 – 2x3 – x4 = 0
At this point, there are three equations in four unknowns.
To complete the system, we define an auxiliary equation by arbitrarily choosing a
value for one of the coefficients:
x4 = 1
To solve these four equations write the code:

63
A =[1,0,-1,0;4,0,0,-2;0,2,-2,-1;0,0,0,1];
B=[0;0;0;1];
X=A\B
The result will be
X=
0.5000
1.0000
0.5000
1.0000
Finally, the stoichiometric coefficients are usually chosen to be integers.
Divide the vector X by its smallest value:
X =X/min(X)
X=
1
2
1
2
Thus, the balanced equation is
CH4 + 2O2 CO2 + 2H2O

Exercise 5:
Balance the following chemical equation:
x1 P2I4 + x2 P4+ x3 H2O x4 PH4I + x5 H3PO4
Solution:
We can easily balance this reaction using MATLAB:
A = [2 4 0 -1 -1
4 0 0 -1 0
0 0 2 -4 -3
0 0 1 0 -4
0 0 0 0 1];
B= [0;0;0;0;1];
X = A\B;
X=
0.3125
0.4063
4.0000
1.2500
1.0000
We divide by the minimum value (first element) of x to obtain integral coefficients:
X=X/min(X)
X=

64
1.0000
1.3000
12.8000
4.0000
3.2000
This does not yield integral coefficients, but multiplying by 10 will do the trick:
x = x * 10
X=
10
13
128
40
32
The balanced equation is
10P2I4 + 13 P4 + 128 H2O 40 PH4I + 32 H3PO4

3.Two-Dimensional Interpolation
The interp2 command performs two-dimensional interpolation between data points.
It finds values of a two-dimensional function underlying the data at intermediate points>

Its most general form is:


Zi = interp2(X, Y, Z, Xi, Yi)
Zvector = interp2(X, Y, Z, Xvector, Yvector)
Note: the number of elements of the X vector and Z matrix rows must be the same,
while the number of elements of the Y vector and Z matrix columns must be the same.

Exercise 6:
Calculate the values of z corresponding to (x,y)=(1.3, 1.5) and (1.5,2.3) from data as
following:
x=1, 2
y= 1, 2, 3
z = 10 20
40 50
70 80
65
Solution
x = [1 2];
y = [1 2 3];
z = [10 20
40 50
70 80];
z1 = interp2(x,y,z,1.3,1.5)
The results will be
z1 =
28000
To interpolate a vector of x, y points repeat the same code with small change:
z12 = interp2(x,y,z,[1.3,1.5],[1.5,2.3])
z12 =
28.0000 54.0000

Practice Problems
1) Solve each of these systems of equations by using the matrix inverse method.

A) r + s + t + w = 4
2r - s + w = 2
3r + s - t - w = 2
r - 2s - 3t + w = -3

B) x1+2x2-x3=3
3x1-x2+2x3=1
2x1-2x2+3x3=2
x1-x2+x4=-1

C) 5x1+3x2+7x3-4=0
3x1+26x2-2x3-9=0
7x1+2x2+10x3-5=0

D) 2x1 + x2 - 4x3 + 6x4 + 3x5 - 2x6 = 16


-x1 + 2x2 + 3x3 + 5x4 - 2x5 = -7
x1 - 2x2 - 5x3 + 3x4 + 2x5 + x6 = 1
4x1 + 3x2 - 2x3 + 2x4 + x6 = -1
3x1 + x2 - x3 + 4x4 + 3x5 + 6x6 = -11
5x1 + 2x2 - 2x3 + 3x4 + x5 + x6 = 5

66
2) For the following figure calculate the values of the unknown flow rates A, B, C
by using matrix inverse method.
P1=? P2=?
1% Toluene 95% Toluene
99% Benzene 5% Benzene

F=1000 kg/hr

Tower 1

Tower 2
40% Toluene
40% Benzene
20% Xylene

B=?
10% Toluene
90% Xylene
3) In a process producing KNO3 salt, 1000 kg/h of a feed solution containing 20 wt
% KNO3 is fed to an evaporator, which evaporates some water at 422 K to
produce a 50 wt % KNO3 solution. This is then fed to a crystallizer at 311 K,
where crystals containing 96 wt % KNO3 is removed. The saturated solution
containing 37.5 wt % KNO3 is recycled to the evaporator. Write a code to
calculate the amount of recycle stream R in kg/h and the product stream of
crystals P in kg/h.

4) For the following figure, write a program to calculate the values of the unknown
flow rates F1, F2, F3, F4 and F5 using matrix inverse method
F5=?
0.983 air
0.017 water

F1=? F2=? F3=? F6=100 mole


0.96 air 0.977 air 0.983 air 0.983 air
0.04 water 0.023 water 0.017 water 0.017 water

F4=?
1.0 water

67
5) Balance the following chemical equations using the matrix inverse method:
a) Pb(NO3)2 → PbO + NO2 + O2
b) MnO2 + HCl → MnCl2 + H2O + Cl2
c) As + NaOH → Na3AsO3 + H2
d) C4H10 + O2 → CO2 + H2O
e) BaCl2 + Al2(SO4)3 → BaSO4 + AlCl3

6) Use interp2 to calculate the enthalpy, internal energy and specific volume of
superheated steam when pressure is 2 bar ant temperature is 120 oC.

68
Condition
1. If Statement
What are you doing if you want certain parts of your program to be executed only in
limited circumstances? The way to do that is by putting the code within an "if" statement.
The most basic structure for "if" statement is as following:
if (relation)
(matlab commands)
end
More complicated structures are also possible including combinations like the
following:
if (relation)
(matlab commands)
elseif (relation)
(matlab commands)
elseif (relation)
(matlab commands)
.
.
else
(matlab commands)
end

Standard comparisons can be made by using relations. The relational operators in


MATLAB are;
< less than
> greater than
<= less than or equal
>= greater than or equal
== equal
~= not equal.
For example, the following code will set the variable j to be –1 if a less than b:

a = 2;
b = 3;
if a<b
j = -1
end

69
Additional statements can be added for more decision. The following code sets the
variable j to be 2 when a greater than b.
a = 4;b = 3;
if a < b
j = -1
elseif a > b
j=2
end
The else statement provides all that will be executed if no other condition is met. The
following code sets the variable j to be 3 when a is not greater and less than b.
a = 4;b = 4;
if a<b
j = -1
elseif a>b
j=2
else
j=3
end
Matlab allows you to write together multiple condition expressions using the standard
logic operators, "&" (and), "¦" (or), and "˜" (not).
For example to check if a is less than b and at the same time b is greater than or equal
to c you would use the following commands:
if a < b & b >= c
Matlab commands
end
For example
x=1; y=0;
if x < 0 & y < 0
z = -x * y
elseif x == 0 ¦ y == 0
z=0
else
z = x^2
end
The output of the above code is
z=
0

70
2.Loop
Many programs require iteration, or repetitive execution of a block of statements.
MATLAB has two loop statements: for and while statements. All of the loop structures in
matlab are started with a keyword such as "for" or "while" and all of them end with the
word "end".

2.1 For loop


If you want to repeat a certain commands in a predetermined way, you can use the
"for" loop. The "for" loop will loop around some statement, and you must tell Matlab
where to start and where to end. Basically, you give a vector in the "for" statement, and
Matlab will loop through for each value in the vector:
The for statements have the following structure:
For variable = expression
statement
end
For example, a simple loop will go around four times:
for j=1:4
j
end
The output of the above code is
j=
1
j=
2
j=
3
j=
4
For another example, if we define a vector and later want to change it elements, we
can step though and change each individual entry:
v = [1:3:10];
for j=1:4
v(j) = j;
end
>>v
v=
1 2 3 4

71
Matrices may also be constructed by loop. Here is an example using two "for" loops.
for i=1:10
for j=1:10
t(i,j) = i*j;
end
end
Notice that there isn't any output, since the only line that would produce any (t(i,j) =
i/j;) ends in a semi-colon. Without the semi-colon, Matlab would print the matrix t 100
times!

Example 1

Find summations of even numbers between 0 and 100


sum = 0;
for i = 0 : 2 : 100
sum = sum + i;
end
sum
sum =
2550
Note: if the increment is one you may write the first and the last limit without writing
a step. In this case, the for-line above would become for i = 0:100.
warning: If you are using complex numbers, you cant use i as the loop index.

2.2 While Loop


If you don't like the "for" loop, you can also use a "while" loop. It is sometimes
necessary to repeat statements based on a condition rather than a fixed number of times.
The "while" loop repeats a sequence of commands as long as some condition is met. The
general form of a while loop is
while relation
statements
end

Example 2
x=1;
while x < 10
x = x+1;
end
72
>> x
x=
10
The statements will be repeatedly executed as long as the relation remains true.

Example 3
x=10;
while x > 1
x = x/2;
end
>>x
x=
0.6250
The condition is evaluated before the body is executed, so it is possible to get zero
iteration when x equal to 1 or less.

Example 4
sum = 0;
x = 1;
while x < 4
sum = sum + 1/x;
x = x + 1;
end
>>sum
sum =
1.8333

2.3 Break statement


It’s often a good idea to limit the number of repetitions, to avoid infinite loops (as
could happen in above example if x=Inf). This can be done using break. A break can be
used whenever you need to stop the loop (break statement can be used to stop both for and
while loops in same way), for example.
n = 0;
x=100
while x > 1
x = x/2;
n = n+1;

73
if n > 50
break
end
end
>> x
x=
0.7813
A break immediately jumps execution to the first statement after the loop.
Note: When using programs with loops, you should also know how to stop a program
in the middle of its execution, such as in the case of your programs contains an infinite
loop. During a program is running, the Ctrl+C command will stop it.

Exercise 1:
Use loop in 20 iteration to calculate x in equation x=2sin(x)?
Solution:
format long
x=1
for i=1:20
x=2*sin(x)
end
The results will be:
x= 1
x = 1.682941969615793
x = 1.987436530272152
x = 1.828907552623580
x = 1.933747642340163
x = 1.869706153630775
x = 1.911316179125262
x = 1.885162348212226
x = 1.901985209663949
x = 1.891312851651419
x = 1.898145620030117
x = 1.893795924017278
x = 1.896575152213355
x = 1.894803506466833
x = 1.895934551140671
x = 1.895213162228076

74
x = 1.895673549670181
x = 1.895379846173585
x = 1.895567260289186
x = 1.895447688999369
x = 1.895523983862163
You can see the convergence through the digits after the dot. The best guess for x is
x = 1.895523983862163

Exercise 2:
Use loop to find the bubble point of ternary system (Ethanol 40 mol%, Water 20
mol% and Benzene 40 mol%). Knowing that the vapor pressure for three components are
calculated by:
Ethanol Poe=exp(18.5242-3578.91/(T-50.5))
Water Pow=exp(18.3036-3816.44/(T-46.13))
Benzene Pob=exp(15.9008-2788.51/(T-52.36))
Where
Ki= P oi /Pt , Pt=760 , yi =Ki×xi
At Bubble point ∑yi=∑Ki×xi =1
Solution:
Xe=.4;Xw=.2;Xb=.4;
for T=273.15:.01:450;
Pe=exp(18.5242-3578.91/(T-50.5)); % Vapor pressure of Ethanol
Pw=exp(18.3036-3816.44/(T-46.13)); % Vapor pressure of Water
Pb=exp(15.9008-2788.51/(T-52.36)); % Vapor pressure of Benzene
% evaluation of equilibrium constants
Ke=Pe/760; % Ethanol
Kw=Pw/760; % Water
Kb=Pb/760; % Benzene
sum=Ke*Xe+Kw*Xw+Kb*Xb; % The condition to find the boiling point
if sum>1
break
end
end
T
Gives the result
T=
355.5300

75
Exercise 3:
Given that the vapor pressure of methyl chloride at 333.15 K is 13.76 bar,
write a code to calculate the molar volume of saturated vapor at these conditions
using Redlich/Kwong equation. Knowing;
a=0.42748*R2Tc2.5 /Pc
b=0.08664*RTC/PC
Vi+1=(RT/P)+b- (a*(Vi-b))/(T1/2PVi(Vi+b))
R=83.14 , Tc= 416.3 k , Pc= 66.8 bar
Solution:
T=333.15;
Tc=416.3;
P=13.76;
Pc=66.8;
R=83.14;
a=0.42748*R^2*Tc^2.5/Pc;
b=0.08664*R*Tc/Pc;
V(1)=R*T/P;
for i=1:1:10
V(i+1)=(R*T/P)+b-(a*(V(i)-b))/(T^.5*P*V(i)*(V(i)+b));
end

V'
The program results as follows
ans =
1.0e+003 *
2.0129
1.7619
1.7219
1.7145
1.7131
1.7129
1.7128
1.7128
1.7128
1.7128
1.7128
Note that after the 7 th trail the value of Vi is constant and further trails does not have
any effect on its value.
76
Exercise 4:
A simple force balance on a spherical particle reaching terminal velocity in a fluid is
given by; 4g(  P - )Dp
Vt =
3C D
Where
Vt : Terminal velocity in m/s
g : Acceleration of gravity
pp: Particle density
Dp: The diameter of the spherical particle in m
CD: Dimensionless drag coefficient.
The drag coefficient on a spherical particle at terminal velocity varies with Reynolds
number (Re) as followings:
CD=24/Re for Re< 0.1
CD=24*(1+0.14* Re^0.7)/Re for 0.1=<Re=< 1000
CD=0.44 for 1000<Re=< 350000
CD=0.19-8*10^4/Re for 350000 <Re
Where
Re =(Dp vtp)/µ
g=9.80665 m/s2
ρ=994.6 kg/m3
pp=1800 kg/m3
µ=8.931×10-4 kg/m.s.
Dp=0.000208 m
Calculate the terminal velocity of spherical particle?
Solution:
The above problem cannot be solved without using trial and error method. Therefore
you must assume a velocity to calculate the C D which is a important to calculate new
velocity. Write the following code:
g=9.80665;
p=994.6; pp=1800;
mu=8.931e-4;
Dp=0.000208;
vt=1; Velocity(1)=vt;
for m=1:1:20
Re=(Dp*vt*p)/mu;
if Re < 0.1
CD=24/Re;
77
elseif Re >= 0.1 & Re <= 1000
CD=24*(1+0.14*Re^0.7)/Re;
elseif Re >1000 & Re <= 350000
CD=0.44;
elseif Re>350000
CD=0.19-8*10^4/Re;
end
vt=((4*g*(pp-p)*Dp)/(3*CD*p))^.5;
Velocity(m+1)=vt;
if abs (Velocity(m+1)-Velocity(m))<.0001
break
end
end
Velocity'
This code gives the result:
ans =
1.000000000000000
0.053845727997707
0.025084090993404
0.018981846393486
0.017008369140870
0.016271175897107
0.015980109059108
0.015862612988699
0.015814754689716
Note: the loop will stop when the desired accuracy is reached

Practice Problems

1) Provide the right answers and use MATLAB to check them.


if 0 < x < 10
y = 2*x
elseif 10 < x < 50
y = 3*x
else
y = 200
end

78
a) x = -1 y=?
b) x=5 y=?
c) x=10 y=?
d) x = 45 y=?
e) x = 100 y=?

2) Write a computer program to calculate molar volume and compressibility factor


for gaseous ammonia by using of the Redlich-Kwong equation of state. The equations and
variables are listed below.
RT a  R 2T 5 2   RTC 
P  a  0.42747 C  b  0.08664  
(V  b) V (V  b) T  PC   C 
P
 

The variables are defined by


P= 56 atm
V= molar volume in L/g-mol
T=450 K
R= gas constant (R = 0.08206 atm·L/g-mol·K)
Tc= the critical temperature (405.5 K for ammonia)
Pc= the critical pressure (111.3 atm for ammonia)
Compressibility factor is given by
PV
Z 
RT

3) If x is a row or column vector, the function sum(x) returns the sum of the
elements of x . Assuming that x is a column vector of length m and k is a row
vector containing the integers from 1 to n , for each of the following, write
MATLAB code employing for loops to evaluate the expression, and then
write single line MATLAB statements employing the function sum that
duplicates the calculation.
m m
1

n

4)  xi e
m
1

xi

 xi
2

1) 2) 3)
i 1 xi k 1 1  k i 1 1  sin xi i 1

79
2D Graphics
One of Matlaba most powerful features is the ability to create graphic plots. There are
so many methods of generating graphics in Matlab.
1. X-Y Plots
A Cartesian or x,y plot is based on plotting the x,y data pairs from the specified
vectors. Clearly, the vectors x and y must have the same number of elements. Given a
vector x of x-coordinates x1 through xn and a vector y of y-coordinates y1 through yn,
plot(x,y) graphs the points (x1,y1) through (xn,yn).
For example, to plot the two dimensions corresponding to (0,0), (1,1), (4,2) , (5,1) and (0,0) points .

x=[0 1 4 5 0]; y=[0 1 2 -1 0];


plot(x,y)
The command plot(x,y) opens a graphics window and draws an x-y plot of the
elements of x versus the elements of y.
To plot the graph of y=x3 on the interval [2,2], first define a row vector whose
components range from -2 to 2 in increments of .05. Then define a vector y; of the same
size as x whose components are the cubes of the components of x. Finally use the plot
function to display the graph.
x=-2:.05:2; y=x.^3;
plot(x,y)
You can, also for example, draw the graph of the sine function over the interval -4 to
4 with the following commands:
x = -4:.01:4; y = sin(x);
plot(x,y)
The resulting plot is shown in figure 1.

Figure 1. Plotting sine over the interval -4 to 4

80
Plots of parametrically defined curves can also be made. Try, for example,
t=0:.001:2*pi;
x=cos(3*t);
y=sin(2*t);
plot(x,y)
The resulting plot is shown in figure 2.

Figure 2. Plotting parametrically curves


2. Grid
A dotted grid may be added to the plot by:
grid on
This grid can be removed using grid off.
grid off

3. Controlling Axes
Once a plot has been created in the graphics window you may wish to change the
range of x and y values, this can be done by using the command “axis” as follows:
x =0:.01:1;
y =sin(3*pi*x);
plot(x,y)
axis([-0.5 1.5 -1.2 1.2])
The axis command has four parameters, the first two are the minimum and maximum
values of x to use on the axis and the last two are the minimum and maximum values of y.

81
4. Plotting Line Style
Matlab connects a line between the data pairs described by the vectors. You may
wish to present data points and different type of connecting lines between these points.
Data points can be described by a variety of characters such as ( . , + , * , o and x .).
Various line types, plot symbols and colors may be obtained with plot(x,y,S) where S
is a character string made from one element from any or all the following 3 columns:
Character color Character symbol character line style
b blue . . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
For example,
plot(x,y,'k+:') plots a black dotted line with a plus at each data point.
plot(x,y,'bd') plots blue diamond at each data point but does not draw any line.
plot(x,y,'y-',x,y,'go') plots the data twice, with a solid yellow line interpolating
green circles at the data points.

5. Annotation
The last step before printing or saving a plot is usually to put a title and label the
axes. You can put labels, titles, and text on a plot by using the commands:
xlabel('text')
ylabel('text')
zlabel('text')
title('text')
text(x,y,'text') places text at position x,y
gtext('text') use mouse to place text
For example the graphs can be given titles, axes labeled, and text placed within the
graph with the following commands;

82
t = 0:0.02*pi:2*pi;
plot(t,sin(t))
xlabel('time');ylabel('amplitude');title('Simple Harmonic Oscillator')
The resulting plot is shown in figure 3.

Figure 3. Using annotation in plot


6. Multi–plots
There are two ways to make multiple plots on a single graph are illustrated by.
6.1 Multiple Data Vectors Plots
You can create multiple graphs by using multiple data vectors, for example:
x=0:.01:2*pi;
y1=sin(x);y2=sin(2*x);y3=sin(4*x);
plot(x,y1,x,y2,x,y3)
The re resulting plot is shown in figure 4.

Figure 4. Multiple plots of sine vectors

83
6.2 Multiple Plots with Hold
Another way is with hold on. The command "hold on" holds the old graph when the
new one is plotted. The axes may, however, become rescaled. "hold on" holds the current
picture; "hold off" releases it (but does not clear the window).
Here is an example. Suppose we want to compare the log function with the square
root function graphically. We can put them on the same plot. By default, both plots will
appear in blue, so we will not know which log. We could make them different colors using
options. Here is the final answer,
x=1:100;
y=log(x);
z=sqrt(x);
plot(x,y,’r’); % plot log in red
hold on;
plot(x,z,’b’); % plot log in blue
hold off;
The resulting plot is shown in figure 5.

Figure 5. Multiple plots with hold

The "hold" command will remain active until you turn it off with the command 'hold
off'.

84
7. Subplot
The graphics window may be split into an m by n array of smaller windows into
which we may plot one or more graphs. The windows are numbered 1 to m by n row–wise,
starting from the top left. All of plot properties such as hold and grid work on the current
subplot individually.
x=0:.01:1;
subplot(221), plot(x,sin(3*pi*x))
xlabel('x'),ylabel('sin (3pix)')
subplot(222), plot(x,cos(3*pi*x))
xlabel('x'),ylabel('cos (3pix)')
subplot(223), plot(x,sin(6*pi*x))
xlabel('x'),ylabel('sin (6pix)')
subplot(224), plot(x,cos(6*pi*x))
xlabel('x'),ylabel('cos (6pix)')

The resulting plot is shown in figure 6.

Figure 7. Using subplot


Subplot(221) (or subplot(2,2,1)) specifies that the window should be split into a 2 by
2 array and we select the first sub-window.

85
Exercise 1:
The laminar velocity profile in a pipe, can be given in equation Vx=Vmax(1-(2*r/di)2)
Plot the velocity profile in a pipe? If you know that:s
r= distance from pipe center
di: Inner diameter of pipe (di=0.2 m)
Vmax: maximum velocity in pipe (Vmax=2 m)
Solution
Write the following code
di=.2; Vmax=2
r=-.1:.001:.1
Vx=Vmax*(1-((2*r)/di).^2)
plot(Vx,r)
xlabel('Velocity (m/s)')
ylabel('Distance from pipe center (m)')

The result will be the figure.

Exercise 2:
Plot k as a function of temperature from 373 to 600 k (use 50 point of Temperature).
If you know:
K=A exp(B-(C/T)-ln(D*T)-E*T+F*T2)
Where
A=3.33 , B=13.148 , C=5639.5 , D=1.077 , E=5.44*10-4 , F=1.125*10-7
Solution:
Write the following code

86
A=3.33;
B=13.148;
C=5639.5;
D=1.077;
E=5.44e-4;
F=1.125e-7;
Ts=(600-373)/49;%Ts means temperature increment
T=373:Ts:600
K=A*exp(B-(C./T)-log(D*T)-E*T+F*T.^2)
plot(T,K)
xlabel('Temperature')
ylabel('K value')
The result will be the figure.

Exercise 3:
Plot Txy diagram for ethanol/water system. Knowing that the vapor pressures for
three components are calculated by:
Ethanol Poe=exp(18.5242-3578.91/(T-50.5))
Water Pow=exp(18.3036-3816.44/(T-46.13))
Where Vapor
Ki= P oi /Pt y,T
Pt=760
Liquid x,T
yi =Ki×xi
At Bubble point ∑yi=∑Ki×xi =1
87
Solution:
Xe=0:.1:1;
Xw=1-Xe;
for m=1:11
for T=273.15:.01:450;
Pe=exp(18.5242-3578.91/(T-50.5)); % Vapor pressure of Ethanol
Pw=exp(18.3036-3816.44/(T-46.13)); % Vapor pressure of Water
Ke=Pe/760; % Ethanol
Kw=Pw/760; % Water
sum=Ke*Xe(m)+Kw*Xw(m);
if sum>1
break
end
end
Temp(m)=T;
ye(m)=Ke*Xe(m);
end
plot(Xe,Temp,'k-+',ye,Temp,'k-*')
axis ([0 1 340 380])
xlabel('x,y for ethanol')
ylabel('Temperatre K')
title('Txy diagram of ethanol/ water system')

88
Practice Problems

1) The heat capacity for a mixture of ethanol and water is given as follows:
Cpm = x CpE(T) + (1-x) Cpw(T)
where x is the mole fraction of ethanol. The pure component heat capacities can be
computed uing the following correlation:
2 3
Cp(T) = a + bT + cT + dT
where T in degree Kelvin and Cp in J/(mole K)
Draw a plot for CpE , Cpw and Cpm covering mole fraction range of 0-1 for T=100
degree Kelvin. Knowing that:
Ethanol: a = -3.25137e+2 b = 4.13787e+0 c = -1.40307e-2 d = 1.70354e-5
Water: a = 1.82964e+1 b = 4.72118e-1 c = -1.33878e-3 d = 1.31424e-6

2) Plot the log of the values from 1 to 100.


3) Plot the parametric curve x = t cos(t), y = t sin(t) for 0 < t < 10.
4) Plot the cubic curve y = x³. Label the axis and put a title "a cubic curve" on the top
of the graph.
5) Plot y=(x3+x+1)/x, for –4< x <4 and –10< y < 10.
6) Plot y=ln(x+1) and y=1-x² on the same window for -2 < x <6 and –4 <y <4.
2
7) Plot cos(x +1) on [-2pi,2pi].

89
8. Specialized 2-D plotting functions
MATLAB includes a variety of specialized plotting in addition to the ones described
above. The following below briefly describes some of the other plotting functions
available in MATLAB.

fplot: evaluates a function and plots 1


the results
Example:
0.5
fplot('sin(1/x)', [0.02 0.2]);

-0.5

-1
0.05 0.1 0.15 0.2

ezplot: simplest way to graph a x2+x+1


function (easy plot). 50
Example: to graph the function
y=x²+x+1, you write: 40
ezplot('x^2+x+1') 30

20

10

0
-5 0 5
x

x2+x+1
If you want to sketch the same
function in between –2 and 2 you simply
write: 6
ezplot('x^2+x+1', [-2, 2])
4

-2 -1 0 1 2
x
90
area Filled area plot. 1
area(X,Y) produces a stacked area
plot suitable for showing the contributions 0.5
of various components to a whole. For
vector X and Y, area(X,Y) is the same as
plot(X,Y) except that the area between 0 0
and Y is filled.
Example: -0.5
t = 0:.01:5*pi;
area(t,sin(t))
-1
0 5 10 15

Example:
x = 0:0.01:1.5; 15
area(x,[(x.^2)',(exp(x))',(exp(x.^2))'])

10

0
0 0.5 1 1.5

semilogx: log-scaled x axis 1


semilogx is the same as plot, except
a logarithmic (base 10) scale is used for 0.8
the X-axis.
Example: 0.6
x=0:0.05:5;
0.4
y=exp(-x.^2);
semilogx(x,y);
0.2
grid
0 -2 -1 0 1
10 10 10 10

91
0
semilogy: log-scaled y axis 10
semilogy is the same as plot, except
a logarithmic (base 10) scale is used for
-5
the Y-axis. 10
Example:
x=0:0.05:5;
-10
y=exp(-x.^2); 10
semilogy(x,y);
grid
-15
10
0 1 2 3 4 5

0
10
Loglog: Log-log scale plot.
Loglog is the same as plot, except
logarithmic scales are used for both the X- -5
and Y- axes. 10
Example:
x=0:0.05:5;
-10
y=exp(-x.^2); 10
loglog(x,y);
grid
-15
10 -2 -1 0 1
10 10 10 10

bar: creates a bar graph. 1


bar(X,Y) draws the columns of the
M-by-N matrix Y as M groups of N 0.8
vertical bars. The vector X must be
monotonically increasing or decreasing 0.6
Example:
x = -2.9:0.2:2.9; 0.4
bar(x,exp(-x.*x));
0.2
grid on
0
-4 -2 0 2 4

92
Example: 1
x = 0:0.5:2*pi;
bar(x, sin(x)); 0.5

-0.5

-1
-5 0 5 10

barh: horizontal bar graph 3


barh(X,Y) draws the columns of the
2
M-by-N matrix Y as M groups of N
horizontal bars. 1
Example:
x = -2.9:.2:2.9; 0
y = exp(-x.*x); -1
barh(x,y);
-2

-3
0 0.2 0.4 0.6 0.8 1

errorbar: creates a plot with error bars 60


errorbar (X,Y,L) plots the graph of
vector X vs. vector Y with error bars 40
specified by the vectors L and U.
Example:
20
x = [ 1.0 1.3 2.4 3.7 3.8 5.1 ];
y = [ -6.3 -8.7 -5.2 9.5 9.8 43.9 ];
coeff = polyfit(x,y,1) 0
yp=polyval(coeff,x)
e=abs(yp-y) -20
errorbar(x,y,e); grid 1 2 3 4 5
e=
7.6079 1.8509 6.9582 6.8052 7.6242 11.9288

93
90 0.5
polar: creates a plot in polar 120 60
coordinates of angles versus radin
150 0.25 30
polar(theta,rho) makes a plot
using polar coordinates of the angle
theta, in radians, versus the radius rho. 180 0
Example:
t=0:.01:2*pi;
210 330
polar(t,sin(2*t).*cos(2*t));
240 300
270

stem: generates stems at each data point


0.6
Example:
x = 0:0.1:4;
y = sin(x.^2).*exp(-x); 0.4
stem(x,y);
grid 0.2

-0.2
0 1 2 3 4

plotyy: graphs with y tick labels on 0.4 1


the left and right
plotyy(X1,Y1,X2,Y2) plots Y1
versus X1 with y-axis labeling on the left
0.2 0.5
and plots Y2 versus X2 with y-axis
labeling on the right.
Example:
x=-2:0.1:2; 0 0
y1=sin(x);
y2=cos(x);
plotyy(x,y,x,y2); -0.2 -0.5
-2 -1 0 1 2
grid

94
stairs: creates a graph similar to a 1
bar graph, but without internal lines
Example: 0.8
x = -2.9:.2:2.9;
y = exp(-x.*x); 0.6
stairs(x,y);
title('Stair Chart'); 0.4

0.2

0
-4 -2 0 2 4

UK
pie: Pie chart.
pie(X) draws a pie plot of the data in
the vector X. The values in X are USA
normalized via X/sum(X) to determine NL
the area of each slice of pie.
Example:
x = [1 6 2 1 3 9];
label = {'UK','USA','CH','Dk','SU','NL'};
CH
pie(x, label)
Dk
SU

hist: creates a histogram 15


Example:
x=rand(1,100);
hist(x); 10
grid

0
0 0.2 0.4 0.6 0.8 1

95

You might also like