Computer Programming DR - Zaidoon - PDF Part 2
Computer Programming DR - Zaidoon - PDF Part 2
MATLAB For
Chemical Engineer
Introduction to MATLAB
MATLAB (Matrix Laboratory) is an interactive software system for numerical
computations and graphics. As the name suggests, MATLAB is especially designed for
matrix computations, solving systems of linear equations, computing eigenvalues and
eigenvectors, factorization of matrices, and so much.
In addition, it has a variety of graphical capabilities, and can be extended through
programs written in its own programming language. Many such programs come with the
system; these extend MATLABs capabilities to a wide range of applications, like the
solution of nonlinear systems of equations, the integration of ordinary and partial differential
equations, and many others.
1
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
MATLAB widely used in the engineering. It has many features and it could take years to
learn all of its capabilities. However, its basic functionality is quite easy to learn and in the
course of the next few weeks we will be learning how to manipulate and graph data in
MATLAB as well as writing simple programs to manipulate data. It offers a powerful
programming language, excellent graphics, and a wide range of expert knowledge.
1. Getting Started
Start Matlab by double clicking the icon on the desktop, or from the start menu. To use
Matlab you can simply enter commands after the prompt (the >> is the Matlab prompt).
Figure 1 below shows the default frame with the three standard Matlab windows.
2
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
One may enter a sequence of commands into a M-file. Entering the M-file name in the
command window executes the commands. Once a M-file is created, one can easily alter the
commands for specific problems without having to reenter the entire sequence from the
command window.
This window allows a user to enter simple commands. To perform a simple
computations type a command and next press the Enter or Return key. For instance
>> s = 1 + 2
s=
3
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
3
Note that the results of these computations are saved in variables whose names are
chosen by the user. If you need to obtain their values again, type their names and pressing
Enter key. If you type again:
>> s
s=
3
>> 2+3
Matlab returns the answer:
ans=
5
Similarly:
>> 53
ans=
125
>>2.5^2
ans =
6.2500
>>3.89*4.1
ans =
15.9490
>>99.3-25
ans =
74.3000
>> 3*(23+14.7-4/6)/3.5
ans=
31.7429
The result of these operations is assigned to a default variable called ans and displayed.
Adding a semicolon to the end of the operation suppresses the output; try it out!
>>25*3;
Also type:
>> 1/0
Warning: Divide by zero.
ans =
Inf
Another special value is NaN, which stands for not a number. NaN is used to express an
undefined value. For example,
>> Inf/Inf
ans =
NaN
5
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
3. Relational operations
Relational operators perform element-by-element comparisons between two numbers as
following meaning;
A < B Less than
A > B Greater than
A <= B Less than or equal
A >= B Greater than or equal
A == B Equal
A ~= B Not equal
Further, there is a menu of special characters that have specific uses. The main ones are:
Logical AND &
Logical OR |
Logical NOT ~
Colon :
Subscripting ( )
Brackets [ ]
Decimal point .
Continuation ...
Separator ,
Semicolon ; (suppresses the output of a calculation)
Assignment =
Quote ' statement '
Transpose '
Comment %
Note: that anything after % is a comment and will be ignored by Matlab (so you dont
need to type it here).
4. Variables
Variable names may be up to 19 characters long. Names must begin with a letter but
may be followed by any combination of letters, digits or underscores. Variables are storage
locations in the computer that are associated with an alphanumeric name. To assign a value to
a variable in MATLAB simply type the name of the variable, followed by the assignment
operator, =, followed by the value. As an example, this is one way to compute 2+2:
>> a = 2
6
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
a=
2
>> b = 2
b=
2
>> c = a + b
c=
4
It is often annoying to have Matlab always print out the value of each variable. To avoid
this, put a semicolon after the commands:
>> a = 2;
>> b = 2;
>> c = a + b;
>> c
c=
4
Only the final line produces output. Semicolons can also be used to string together more
than one command on the same line:
>> a = 2; b = 2; c = a + b; c
c=
4
Of course Matlab will also allow more complicated operations:
>> a = 2;
>> b = -12;
>> c = 16;
>> qu1 = (-b + sqrt(b^2 - 4*a*c)) / (2*a)
qu1 =
4
Understand that 'matlab' is "case sensitive", that is, it treats the name 'C' and 'c' as two
different variables. Similarly, 'MID' and 'Mid' are treated as two different variables. Assign
two different values to the variables and print them out by entering their names separated by a
comma.
>>var=1.2
7
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
var =
1.2000
>>Var=-5.1
Var =
-5.1000
>>var, Var
var =
1.2000
Var =
-5.1000
8
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
5. Reporting format
By default MATLAB returns numerical expressions as decimals with 4 digits. The
format function is used to change the format of the output. Type format rat to have MATLAB
return rational expressions.
>> format rat
>> 5.1-3.3
ans =
9/5
To eliminate the extra spacing type format compact.
>> format compact
>> 5*7
ans =
35
Now type
>> format long
>> 3*(23+14.7-4/6)/3.5
ans=
31.74285714285715
>> format short e
>> 3*(23+14.7-4/6)/3.5
ans=
3.1743e+01
Note that the answer is accurate to four decimal places. Now type
>> format long e
ans=
3.174285714285715e+01
>> format short
ans=
31.7429
Note: format short will return the numerical expression to default. Also, the format of
reporting does not change the accuracy of the calculations only the appearance of the answer
on screen.
9
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
6. Mathematical functions
The following functions are defined in MATLAB
6.1. Trigonometric Functions
Those known to Matlab are sin, cos, tan and their arguments should be in radians.
sin( ) - Sine.
sinh( ) - Hyperbolic sine.
asin( ) - Inverse sine.
asinh( ) - Inverse hyperbolic sine.
cos( ) - Cosine.
cosh( ) - Hyperbolic cosine.
acos( ) - Inverse cosine.
acosh( ) - Inverse hyperbolic cosine.
tan( ) - Tangent.
tanh( ) - Hyperbolic tangent.
atan( ) - Inverse tangent.
atanh( ) - Inverse hyperbolic tangent.
sec( ) - Secant.
sech( ) - Hyperbolic secant.
asec( ) - Inverse secant.
asech( ) - Inverse hyperbolic secant.
csc( ) - Cosecant.
csch( ) - Hyperbolic cosecant.
acsc( ) - Inverse cosecant.
acsch( ) - Inverse hyperbolic cosecant.
cot( ) - Cotangent.
coth( ) - Hyperbolic cotangent.
acot( ) - Inverse cotangent.
acoth( ) - Inverse hyperbolic cotangent.
>> x =5*cos(pi/6), y = 5*sin(pi/6)
x=
4.3301
y=
2.5000
10
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
The inverse of Trigonometric functions are called asin, acos, atan (as opposed to the
usual arcsin or sin 1 etc.).
The result is in radians.
>> acos(x/5), asin(y/5)
ans =
0.5236
ans =
0.5236
>> pi/6
ans =
0.5236
Note: Matlab uses radian scale to calculate trigonometric functions. In other
words, sin(90) is not equal to 1, but sin(pi/2) is.
6.2. Exponential
These include sqrt, exp, log, log10
exp( ) - Exponential.
log( ) - Natural logarithm.
log10( ) - Common (base 10) logarithm.
sqrt( ) - Square root.
abs( ) - Absolute value.
Note: log( ) is ln in Matlab. To get logarithm in base 10, you must write log10( ).
>> x =9;
>> sqrt(x),exp(x),log(sqrt(x)),log10(x^2+6)
ans =
3
ans =
8.1031e+03
ans =
1.0986
ans =
1.9395
>> exp(log(9)), log(exp(9))
11
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
ans =
9
ans =
9
Most common functions are available to Matlab
>>A=abs(-5), B=cos(3), C=exp(2), D=sqrt(4), E=log(40)
A=
5
B=
-0.9900
C=
7.3891
D=
2
E=
3.6889
6.3. Complex
conj( ) - Complex conjugate.
Imag( ) - Complex imaginary part.
Real( ) - Complex real part.
7. Closing Matlab
To close MATLAB type exit in the Command Window and next press Enter or Return
key. A second way to close your current MATLAB session is to select File in the MATLAB's
toolbar and next click on Exit MATLAB option. All unsaved information residing in the
MATLAB.
Workspace will be lost. You can also exit by typing:
>> quit
or
>> exit
12
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
Exercise 1:
Write a program to convert a given temperature from F to C:
Solution:
We will store a number in a variable. That number is the value of a temperature in
Fahrenheit. We will convert this value to centigrate. Enter the following commands.
>> tf=45;
>> tc=(tf-32)*5/9
the result will be
tc =
7.2222
Exercise 2:
Write a program to calculate the vapor pressure of water according to Antoine equation:
Po=exp(A-B/(T+C))
Where T is any given temperature in Kelvin and A, B, and C are Antoine coefficients:
A=18.3036
B=3816.44
C= -46.13
Solution:
Let temperature equal to 373.15 k, write the following code.
>> T=373.15;
>> A=18.3036;
>> B=3816.44;
>> C= -46.13;
>> Pw=exp(A-B/(T+C))
Pw =
759.9430
Note: you can use any variable name in your code.
13
Computer Programming Introduction To Matlab By Dr. Zaidoon M.
Exercise 3:
For the following distillation column write a code to find the value of stream B and the
compositions of stream D?
Solution:
Type the commands as m-file. Then copy it to command window.
F=100; ?% X
D=80; ?% S
D=80 ?% T
B=F-D
XF=0.15; ?% Z
SF=0.25;
TF=0.4;
ZF=0.2; F=100kg
XB=0.15;
SB=0.25; 15% X
TB=0.4; 25% S
ZB=0.2;
40% T
20% Z B=? 15% X
XD=(F*XF-B*XB)/D*100
25% S
SD=(F*SF-B*SB)/D*100
40% T
TD=(F*TF-B*TB)/D*100
20% Z
ZD=(F*ZF-B*ZB)/D*100
Then after pressing enter the result will be:
B=
20
XD =
15
SD =
25
TD =
40
ZD =
20
14
Computer Programming Algebra By Dr. Zaidoon M.
ALGEBRA
1. Symbolic Toolbox
One of the most powerful tools that can be used in Matlab is the Symbolic Toolbox.
To use Matlabs facility for doing symbolic mathematics, it is necessary to declare the
variables to be symbolic. The best way to do that is to use the syms declaration statement:
>>syms a b x y;
>>c = 5;
>>E = a*x^2 + b*x + c;
The syms statement makes all the variables listed with it into symbolic variables and
gives each of the variables a value that is equal to its own name!. Thus, the value of a is a, the
value of b is b, etc. The variable E is now symbolic because it was assigned to be equal to an
expression that contained one or more symbolic variables. Its value is a*x^2 + b*x + 5.
For example, suppose that you need factor x-3x+2. Note that you must type 3*x for 3x.
Then you type:
>> syms x
By syms you are declaring that x is a variable. Then type
>> factor(x^2-3*x+2)
ans =
(x-1)*(x-2)
To factor x2+2x+1, you write:
>> syms x
>> factor(x^2+2*x+1)
ans =
(x+1)^2
To factor the equation x^2-y^2;
>>syms x y
>> factor(x^2-y^2)
ans =
(x-y)*(x+y)
15
Computer Programming Algebra By Dr. Zaidoon M.
Expand command can be used to expand the terms of any power equation. Let's use
expand command to expand the following equation ((x^2-y^2)^3).
>> expand((x^2-y^2)^3)
ans =
x^6-3*x^4*y^2+3*x^2*y^4-y^6
2. Solving Equations
2.1 Algebraic Equations
By using Symbolic Toolbox, you can find solutions of algebraic equations with or
without using numerical values. If you need to solving equations, you can use the command
solve. For example, to find the solution of x3+x2+x+1=0 you write:
>> solve('x^3+x^2+x+1=0')
and Matlab gives you the answer in the form
ans =
[ -1]
[ i]
[ -i]
That means the three solutions for the equation are 1, j, and j.
>>solve('sin(x)+x=0.1')
ans =
5.001042187833512e-2
For example, let us solve the equation 3x-8x+2=0.
>> solve('3*x^2-8*x+2=0','x')
ans =
[ 4/3+1/3*10^(1/2)]
[ 4/3-1/3*10^(1/2)]
In expressions with more than one variable, we can solve for one or more of the
variables in terms of the others. Here we find the roots of the quadratic ax2+bx+c in x in
16
Computer Programming Algebra By Dr. Zaidoon M.
terms of a, b and c. By default solve sets the given expression equal to zero if an equation is
not given.
>> solve('a*x^2+b*x+c','x')
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
You can solve more than one equation simultaneously. For example suppose that we
need to solve the system x+ x+ y = 2 and 2x-y = 2. We can type:
>> solve( 'x^2+ x+ y^2 = 2', '2*x-y = 2')
and get the answer:
ans =
x: [2x1 sym]
y: [2x1 sym]
This answer tells us just that the solutions are two points. MATLAB interprets the
solution as two vectors. To get the solution vectors displayed, we can type:
>> [x,y] = solve( 'x^2+ x+ y^2 = 2', '2*x-y = 2')
And get the solutions
x=
[ 2/5]
[ 1]
y=
[ -6/5]
[ 0]
This means that there are two points which are (2/5, -6/5) and (1, 0).
For example to find the value of x and y from the equations: 5x+10y=46 and 28x-
32y=32, you write:
>> [x,y]=solve('5*x+10*y=46', '28*x+32*y=32')
And you get the following result screen:
x=
-48/5
y=
47/5
17
Computer Programming Algebra By Dr. Zaidoon M.
[x,y]=solve('log(x)+x*y=0', 'x*y+5*y=1')
x=
.8631121967939437
y=
.1705578823046945
Now let's find the points of intersection of the circles x2+y2=4 and (x-1)2+(y-1)2=1.
>>[x,y]=solve('x^2+y^2=4','(x-1)^2+(y-1)^2=1')
x=
[ 5/4-1/4*7^(1/2)]
[5/4+1/4*7^(1/2)]
y=
[ 5/4+1/4*7^(1/2)]
[5/4-1/4*7^(1/2)]
You can solve an equation in two variables for one of them. For example:
>> solve('y^2+2*x*y+2*x^2+2*x+1=0', 'y')
and get the answer as:
ans =
[-x+i*(x+1)]
[ -x-i*(x+1)]
In same way if you have more then two equations you can use the same command to
solve them for example:
[x,y,z]=solve('x+y+z=1','x+2*y-z=3','z=5')
x=
-16
y=
12
z=
5
18
Computer Programming Algebra By Dr. Zaidoon M.
>>dsolve('Dy+y=cos(t)')
ans =
1/2*cos(t)+1/2*sin(t)+exp(-t)*C1
>> dsolve('Dy+2*y=12*t^2')
ans =
6*t^2-6*t+3+exp(-2*t)*C1
19
Computer Programming Algebra By Dr. Zaidoon M.
3. Representing Functions
There is a way to define functions in MATLAB that behave in the usual manner. To
represent a function in Matlab, we use inline command. For example to declare
f(x)=x2+3x+1 you write:
>> f=inline('x^2+3*x+1')
f=
Inline function:
f(x) = x^2+3*x+1
Therefore to find f(2), to get the answer you write:
>> f(2)
ans =
11
The function g(x,y)=x2-3xy+2 is defined as follows.
>> g=inline('x^2-3*x*y+2')
g=
Inline function:
g(x,y) = x^2-3*x*y+2
Now we can evaluate g(2,3) in the usual way.
>>g(2,3)
ans =
-12
In this case, we can evaluate a function at more than one point at the same time. For
example, to evaluate the above function at 1, 3 and 5 we have:
>> f([1 3 5])
ans =
2 16 38
4. Differentiation
The Matlab function that performs differentiation is diff. These operations show how it
works:
>> syms x
>>diff(x^2)
ans =
2*x
>>diff(x^n)
ans =
x^n*n/x
>>diff(sin(x)^2)
ans =
2*sin(x)*cos(x)
For example, let's find the derivative of f(x)=sin(ex).
>> syms x
>> diff(sin(exp(x)))
and get the answer as:
ans =
cos(exp(x))*exp(x)
Note: Instead of using syms to declare of variables you can use two Quotes ' ' to
declare that the variable x is the interested variable in equation: you can use the same
example in otherwise
>>diff('sin(exp(x))')
ans =
cos(exp(x))*exp(x)
22
Computer Programming Algebra By Dr. Zaidoon M.
The nth derivative of f is in the written in the form diff(f,n). then to find the second
derivative we write;
>> diff(sin(exp(x)),2)
ans =
-sin(exp(x))*exp(x)^2+cos(exp(x))*exp(x)
For example to find the first derivative of x3+3x2+8x you simply write:
>> syms x
>> diff(x^3+3*x^2+8*x)
ans =
3*x^2+6*x+8
Moreover to get the 3rd derivative, write:
>> diff(x^3+3*x^2+8*x ,3)
ans =
6
Note: To get higher derivatives, you can write the degree in place of 3.
23
Computer Programming Algebra By Dr. Zaidoon M.
5. Integration
By using the Symbolic Toolbox, you can find both definitive and in-definitive integrals
of functions. We can use MATLAB for computing both definite and indefinite integrals using
the command int. If f is a symbolic expression in x, then:
int(f) f ( x)dx
For the indefinite integrals, consider the following example:
>> int('x^2')
ans =
1/3*x^3
Similarly as for diff command, we do not need the quotes if we declare x to be a
symbolic variable. Therefore the above command can be re-written in otherwise such as:
>> syms x
>> int(x^2)
ans =
1/3*x^3
Try these examples:
int(x)
int(a^x)
int(a^x^2)
int(x*sin(x))
A definite integral can be taken by giving three arguments. The second and third
arguments in that case are the first and second limits of integration.
x =b
int(f, a, b) x = a f ( x)dx
For the definitive integrals:
>> int(x^2, 0, 1)
ans =
1/3
Try these examples,
int(x,1,2)
int(x*sin(x),-2,7)
int(a^x,a,3,4)
24
Computer Programming Algebra By Dr. Zaidoon M.
6. Limits
You can use limit to compute limits. For example, to evaluate the limit when x goes to 2
of the function (x2-4)/(x-2),we have:
>> syms x
>> limit((x^2-4)/(x-2), x, 2)
ans =
4
Limits at infinity:
>> limit(exp(-x^2-5)+3, x, Inf)
ans =
3
Exercise 1:
Find the slope of a tangent line to x+3x-2 at x=2.
Solution:
To find the slope of a tangent line to x+3x-2 at point 2, we need to find the derivative
and to evaluate it at x=2.
First we find the derivative of the function;
>> diff(x^2+3*x-2)
ans =
2*x+3
Then we representative the derivative as inline function
>>f = inline('2*x+3')
25
Computer Programming Algebra By Dr. Zaidoon M.
f=
Inline function:
f(x) = 2*x+3
And, finally, we evaluate the derivative at 2
>> f(2)
ans =
7
Exercise 2:
For the mixer shown below write a code to find the values of streams A, B and C?
W= 100 Kg/hr
100% Benzene
A= ? B= ?
50% Xylene 30% Xylene
20% Toluene 30% Toluene
30% Benzene 40% Benzene
C= ?
40% Xylene
20% Toluene
40% Benzene
Solution:
By making component material balance on each component within the mixer you can
reach to a system of three equations which can be solve by using the command solve to find
the unknowns A, B, C.
Type the following command:
[A,B,C]=solve('.5*A+.3*B=.4*C','.2*A+.3*B=.2*C','.3*A+.4*B+100=.4*C')
The results will be:
A=
600.
B=
200.
C=
900.
26
Computer Programming Algebra By Dr. Zaidoon M.
Practice problems:
1. Factor x+3xy+3xy+y.
2. Simplify (x-8)/(x-2).
3. Expand (x+1)(x-5)(2x+3).
4. Solve sin x = 2-x for x.
5. Solve 5x+2y+4z = 8, -3x+y+2z = -7, 2x+y+z = 3 for x, y and z.
6. Solve y-5xy-y+6x+x = 2 for x.
7. Find the first derivative of the function (sinx/(ln(x2+1))-ex and evaluate it at x=3.
8. Find the 12th derivative of the function (x/2+1)65
9. Find the first and second partial derivatives of the function ex2sinxy
27
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
28
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
>> v3 =[3 +4 5]
v3 =
3 4 5
We can do certain arithmetic operations with vectors of the same length, such as v and
v3 in the previous section.
>> v + v3
ans =
4.0000 7.0000 7.2361
>> v4 =3*v
v4 =
3.0000 9.0000 6.7082
>> v5 =2*v -3*v3
v5 =
-7.0000 -6.0000 -10.5279
We can build row vectors from existing ones:
>> w =[1 2 3], z = [8 9]
w=
1 2 3
z=
8 9
>> v6=[w z]
v6 =
1 2 3 8 9
A vector can be defined by previously defined vectors.
>> x = [2 4 -1]
x=
2 4 -1
>> x1 = [x 5 8 ]
x1 =
2 4 -1 5 8
An special array is the empty matrix, which is entered as [] .and can be used to delete a
part of any matrix or vector.
29
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
>> w=[4 5 6 7]
w=
4 5 6 7
>>w(4)=[];w
w=
4 5 6
The elements of a matrix can be defined with algebraic expressions placed at the
appropriate location of the element. Thus
>> a = [ sin(pi/2) sqrt(2) 3+4 6/3 exp(2) ]
a=
1.0000 1.4142 7.0000 2.0000 7.3891
2. Column Vectors
The column vectors have similar constructs to row vectors. When defining them, entries
are separated by ; or newlines.
Note how the column vector is defined, using brackets and semicolons to separate the
different rows. To define a column vector x:
x=[1; -2; 4]
x=
1
-2
4
or write
>>x=[1
2
3]
x=
1
-2
4
>> c =[ 1; 3; sqrt(5)]
c=
30
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
1.0000
3.0000
2.2361
3. Transposing
We can convert a row vector into a column vector (and vice versa) by a process called
transposing, denoted by '
> A=[ 1 2 3]
A=
1 2 3
>>B= A'
B=
1
2
3
31
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
b=
2
4
6
>> v+b
ans =
3
6
9
>> v-b
ans =
-1
-2
-3
>> sin(v)
ans =
0.8415
0.9093
0.1411
>> log(v)
ans =
0
0.6931
1.0986
>> pi*v
ans =
3.1416
6.2832
9.4248
32
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
5. Vectors multiplication
Multiplication of vectors and matrices must follow special rules. In the example above,
the vectors are both column vectors with three entries. You cannot add a row vector to a
column vector. In the case of multiplication vectors, the number of columns of the vector on
the left must be equal to the number of rows of the vector on the right.
>> b = [2; 4; 6];
>> v = [1; 2; 3];
>> v*b
??? Error using ==> *
Inner matrix dimensions must agree.
>> v*b'
ans =
2 4 6
4 8 12
6 12 18
>> v'*b
ans =
28
6. element-wise operation
There are many times where we want to do an operation to every entry in a vector or
matrix. Matlab will allow you to do this with "element-wise" operations. For example,
suppose you want to multiply each entry in vector v with its corresponding entry in vector b.
In other words, suppose you want to find v(1)*b(1), v(2)*b(2), and v(3)*b(3). It would be
nice to use the "*" symbol since you are doing some sort of multiplication, but since it
already has a definition, we have to come up with something else. The programmers who
came up with Matlab decided to use the symbols ".*" to do this.
>> v.*b
ans =
2
8
18
Also for division we must use "./"
33
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
>> v./b
ans =
0.5000
0.5000
0.5000
Note that
v .* b multiplies each element of v by the respective element of b.
v ./ b divides each element of v by the respective element of b.
v .\ b divides each element of b by the respective element of v.
v .^ b raise each element of v by the respective b element.
34
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
>>w= -1.4:-0.3:-2
w=
-1.4000 -1.7000 -2.0000
The format is first:step:last . The result is always a row vector.
A negative step is also allowed. The command has similar results; it creates a vector
with linearly spaced entries.
8. Referencing elements
It is frequently necessary to call one or more of the elements of a vector. Each
dimension is given a single index. Some examples using the definitions above:
Evaluate a vector A:
>> A=0:10:100
A=
0 10 20 30 40 50 60 70 80 90 100
Now after definition of a vector A, try to type:
>> A(10)
ans =
90
>> B=A(1:5)
B=
0 10 20 30 40
>> C=A(1:2:10)
C=
0 20 40 60 80
>> A(6:2:10)
ans =
50 70 90
35
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
Exercise 1:
Estimate the average boiling point of a Water/Ethanol system at different water
compositions (0, 0.1, 0.2 ,0.3.1.0) knowing that.
Boiling point of water =100 o C
Boiling point of Ethanol =78.35 o C
Mixture boiling point= Xwater TBpwater+ Xethanol TBpethanol
Solution:
Write the code as m-file then copy it to command window.
TBPwater=100;
TBPethanol=78.35;
Xwater=0:.1:1
Xethanol=1-Xwater
T=TBPwater*Xwater+TBPethanol*Xethanol
Then press enter, then the output will be:
Xwater =
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000
0.8000 0.9000 1.0000
Xethanol =
1.0000 0.9000 0.8000 0.7000 0.6000 0.5000 0.4000 0.3000
0.2000 0.1000 0
T=
78.3500 80.5150 82.6800 84.8450 87.0100 89.1750 91.3400 93.5050
95.6700 97.8350 100.0000
Exercise 2:
Calculate the Reynold Number at two different diameters D=0.2 and 0.5 m, using
different velocity's as u=0.1,0.2,0.3 1 m/s knowing that:
Re= (ud)/ , =0.001 , =1000
Solution:
Type the code
d1=0.2;
d2=0.5;
36
Computer Programming Vectors and Matrices By Dr. Zaidoon M.
u=0.1:.1:1;
m=0.001;
p=1000;
Re1=u*p*d1/m
Re2=u*p*d2/m
The results will be
Re1 =
1.0e+005 *
0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000
1.8000 2.0000
Re2 =
1.0e+005 *
0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000
4.5000 5.0000
Practice Problems
1. Create a vector of the even whole numbers between 31 and 75.
2. Let x = [2 5 1 6].
a. Add 16 to each element.
b. Add 3 to just the odd-index elements.
c. Compute the square root of each element.
d. Compute the square of each element.
37
Computer Programming Vectors and matrices By Dr. Zaidoon M.
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 a 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
38
Computer Programming Vectors and matrices By Dr. Zaidoon M.
3. Matrix operations
3.1 Addition and subtraction
Addition and subtraction of matrices are denoted by + and -. The operations are defined
whenever the matrices have the same dimensions.
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.
39
Computer Programming Vectors and matrices By Dr. Zaidoon M.
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
41
Computer Programming Vectors and matrices By Dr. Zaidoon M.
>>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
>> 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
42
Computer Programming Vectors and matrices By Dr. Zaidoon M.
43
Computer Programming Vectors and matrices By Dr. Zaidoon M.
>> 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
>> 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
44
Computer Programming Vectors and matrices By Dr. Zaidoon M.
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=
-0.6667 -1.3333 1.0000
-0.6667 3.6667 -2.0000
1.0000 -2.0000 1.0000
45
Computer Programming Vectors and matrices By Dr. Zaidoon M.
A=
211
122
212
>> Ainv=inv(A)
Ainv =
2/3 -1/3 0
2/3 2/3 -1
-1 0 1
Lets verify the result of A*inv(A).
>> A*Ainv
ans =
100
010
001
Also lets 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
Some times, 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.
Finally, here are some examples on this special matrices
>>A=zeros(2,3)
46
Computer Programming Vectors and matrices By Dr. Zaidoon M.
A=
000
000
>>B=ones(2,4)
B=
1111
1111
>>C=eye(3)
C=
100
010
001
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 100C.
Combine the three results into one matrix and display them as a table.
Solution
Write the code
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
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
47
Computer Programming Vectors and matrices By Dr. Zaidoon M.
Exercise 2:
Estimate the average boiling point of a Water/Ethanol system at different water
compositions (0, 0.1, 0.2 ,0.3.1.0) knowing that.
Boiling point of water =100 o C
Boiling point of Ethanol =78.35 o C
Mixture boiling point= Xwater TBpwater+ Xethanol TBpethanol
Note: Make a matrix of three columns; first and second for water and ethanol
compositions and the third for average density.
Solution:
Write the code
WD=1000;
ED=789;
Xw=0:.1:1;
Xe=1:-.1:0;
AD=WD*Xw+ED*Xe;
A=Xw';
A(:,2)=Xe';
A(:,3)=AD';
A
The output of the above code will be
A=
1.0e+003 *
0 0.0010 0.7890
0.0001 0.0009 0.8101
0.0002 0.0008 0.8312
0.0003 0.0007 0.8523
0.0004 0.0006 0.8734
0.0005 0.0005 0.8945
0.0006 0.0004 0.9156
0.0007 0.0003 0.9367
0.0008 0.0002 0.9578
0.0009 0.0001 0.9789
0.0010 0 1.0000
48
Computer Programming Vectors and matrices By Dr. Zaidoon M.
Exercise 3:
Make a table of (x vs. y) values for the three component ethanol, water and benzene a
T=373.15 k. Knowing that the vapor pressure of these 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 =Kixi
Solution:
T=373.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;
Xe=0:.1:1; Ye=Ke*Xe;
Xw=0:.1:1; Yw=Kw*Xw;
Xb=0:.1:1; Yb=Kb*Xb;
A=[Xe',Ye',Xw',Yw',Xb',Yb']
The output of the above code will be:
A=
0 0 0 0 0 0
0.1000 0.2223 0.1000 0.1000 0.1000 0.1777
0.2000 0.4445 0.2000 0.2000 0.2000 0.3554
0.3000 0.6668 0.3000 0.3000 0.3000 0.5331
0.4000 0.8890 0.4000 0.4000 0.4000 0.7107
0.5000 1.1113 0.5000 0.5000 0.5000 0.8884
0.6000 1.3335 0.6000 0.6000 0.6000 1.0661
0.7000 1.5558 0.7000 0.6999 0.7000 1.2438
0.8000 1.7780 0.8000 0.7999 0.8000 1.4215
0.9000 2.0003 0.9000 0.8999 0.9000 1.5992
1.0000 2.2225 1.0000 0.9999 1.0000 1.7769
49
Computer Programming Vectors and matrices By Dr. Zaidoon M.
Practice Problems
Q/ 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.
1. a = g(:,2)
2. b = g(4,:)
3. c = g(4:5,1:3)
4. d = g(1:2:5,:)
50
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
Matrix Algebra
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 of solving these 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 explained and demonstrated it.
Remember, you always should work in an m-file.
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
51
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
Where
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.
52
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
Example: Solve the system of linear equations given below using Matlab.
3.5u+2v =5
-1.5u+2.8v+1.9w=-1
-2.5v+3w=2
Solution
A=[3.5 2 0;-1.5 2.8 1.9;0 -2.5 3];
B=[5;-1;2]
X=A\B
X=
1.4421
-0.0236
0.6470
53
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
Exercise 1:
For the following separation system, we know the inlet mass flowrate (in Kg/hr) and
the mass fractions of each species in the inlet (stream 1) and each outlet (streams 2, 4, and
5). We want to calculate the unknown mass flow rates of each outlet stream.
Solution:
If we define the unknowns as F1=?
54
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
Polynomials
Polynomials in Matlab
The equation p(x) = anxn + an1xn1 + + a1x + a0 is called a polynomial in x. The
terms of this polynomial are arranged in descending powers of x while the ais are called
the coefficients of the polynomial and are usually real or complex numbers. The degree of
the polynomial is n (the highest available power of x).
In Matlab, a polynomial is represented by a vector. To create a polynomial in Matlab,
simply enter each coefficient of the polynomial into the vector in descending order (from
highest-order to lowest order). Let's say you have the following polynomial:
y=x4+3x3-15x2-2x+9
To enter this polynomial into Matlab, just enter it as a vector in the following
manner:
y = [1 3 -15 -2 9]
Also to represent the polynomial y=2x3 + 2x2 + 4x + 1.
y = [2 2 4 1];
Matlab can interpret a vector of length n+1 as an nth order polynomial. Thus, if your
polynomial is missing any coefficients, you must enter zeros in the appropriate place in the
vector. For example, p(x) = x62x4x3+2x2+5x8 is a polynomial that is arranged in
descending powers of x. The coefficients of the polynomial are 1, 0, 2, 1, 2, 5, and 8.
In this case, there is an understood term of x5. However, Matlab doesnt understand that
a term is missing unless you explicitly tell it so.
For other example, the polynomial y=x4+1 would be represented in Matlab as:
y = [1 0 0 0 1]
Roots
You can also extract the roots of a polynomial. To calculate the roots of a polynomial
given the coefficients, enter the coefficients in an array in descending order. Be sure to
include zeroes where appropriate.
For example to find the roots of the polynomial y= x4 + 6x3 + 7x2 - 6x - 8 = 0 type
the command
>>p = [ 1 6 7 -6 -8 ];
>>r = roots(p)
yields
r=
-4.0000
55
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
-2.0000
-1.0000
1.0000
Note: The coefficients could be entered directly in the roots command. The same
answer as above would be obtained using the following expression.
>> r = roots([ 1 6 7 -6 -8 ])
r=
-4.0000
1.0000
-2.0000
-1.0000
56
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
-2.0000 - 0.0000i
1.0000
PolyVal
You can use polyval and the fitted polynomial p to predict the y value of the data
you've fitted for some other x values.
The syntax for determining the value of a polynomial y=x4 + 6x3 + 7x2 - 6x - 8 at
any point is as follows.
>> p = [ 1 6 7 -6 -8 ];
>> y= polyval(p, 3)
y=
280
Where p is the vector containing the polynomial coefficients, (see above). Similarly,
the coefficients can be entered directly in the polyval command.
>> y = polyval([1 6 7 -6 -8], 3)
y=
280
The polynomial value at multiple points (vector) can be found.
>> z = [ 3 5 7];
>> y = polyval(p,z)
y=
280 1512 4752
Poly fit
To determining the coefficients of a polynomial that is the best fit of a given data you
can use polyfit command. The command is
polyfit(x, y, n)
where x, y are the data vectors and 'n' is the order of the polynomial for which the
least-squares fit is desired.
For example to fit x, y vectors to 3 rd order polynomial
>> 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,3)
coeff =
0.3124 1.5982 -7.3925 -1.4759
57
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
After determining the polynomial coefficients, the polyval command can be used to
predict the values of the dependent variable at each value of the independent variable.
>> ypred = polyval(coeff,x)
ypred =
-6.9579 -7.6990 -5.6943 8.8733 10.6506 43.8273
Its clear that there is a deviation between the actual y points and predicted y points
because that the polynomial is best fit to this actual points.
Exercise 2:
Fit the following data describing the accumulation of species A over time to a second
order polynomial, then by using this polynomial, predict the accumulation at 15 hours.
Time (hr) 1 3 5 7 8 10
Mass A acc. 9 55 141 267 345 531
Solution:
First, input the data into vectors, let:
a = [9, 55, 141, 267, 345, 531];
time = [1, 3, 5, 7, 8, 10];
Now fit the data using polyfit
coeff = polyfit(time,a,2)
coeff =
5.0000 3.0000 1.0000
So, Mass A = 5*(time)2 + 3 * (time) + 1
Therefore to calculate the mass A at 15 hours
MApred = polyval(coeff,15)
MApred =
1.1710e+003
Exercise 3:
Use matlab to fit the following vapor pressure vs temperature data in fourth order
polynomial. Then calculate the vapor pressure when T=100 C. O
Temp (C) -36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1
Pre. (kPa) 1 5 10 20 40 60 100 200 400 760
Solution:
vp = [ 1, 5, 10, 20, 40, 60, 100, 200, 400, 760];
T = [-36.7, -19.6, -11.5, -2.6, 7.6, 15.4, 26.1, 42.2, 60.6, 80.1];
58
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
p=polyfit(T,vp,4)
%evaluate the polynomial at T=100
pre= polyval(p,100)
the results will be
p=
0.0000 0.0004 0.0360 1.6062 24.6788
pre =
1.3552e+003
PRACTICE PROBLEMS
1) Solve each of these systems of equations by using the matrix inverse ( Gaussian
Elimination ) method.
A) -2x1+x2=-3
-2x1+x2=3.00001
B) x1 + x2 + x3 = 4
2x1 + x2 + 3x3 = 7
3x1 + x2 +6x3 = 2
C ) x1+2x2-x3=3
3x1-x2+2x3=1
2x1-2x2+3x3=2
x1-x2+x4=-1
D) 5x1+3x2+7x3-4=0
3x1+26x2-2x3-9=0
7x1+2x2+10x3-5=0
59
Computer Programming Matrix Algebra and Polynomials By Dr. Zaidoon M.
4. Find the 3rd order polynomial that satisfies the above data of water for saturation
temperature and pressure. Using the predicted polynomial, compute the saturation pressure
at 65 C.
Temp 0 10 20 30 40 50 60 70 80 90 100
(C)
Pre. .6108 1.227 2.337 4.241 7.375 12.335 19.92 31.16 47.36 70.11 101.33
(kPa)
60
Computer Programming Condition and Loop By Dr. Zaidoon M.
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
b = 3;
if a<b
j = -1
end
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
62
Computer Programming Condition and Loop By Dr. Zaidoon M.
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
Loop
2. 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
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
Example
Assume n has a given value. Create the square matrix of nn elemnets, using a(i,j) =
1/(i+j -1);:
for i = 1:n
for j = 1:n
a(i,j) = 1/(i+j -1);
end
end
Example
Find summations of even numbers between 0 and 100
sum = 0;
for i = 0 : 2 : 100
sum = sum + i;
end
64
Computer Programming Condition and Loop By Dr. Zaidoon M.
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.
3. 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:
x=1;
while x < 10
x = x+1;
end
>> x
x=
10
The statements will be repeatedly executed as long as the relation remains true.
Example
x=10;
while x > 1
x = x/2;
end
>>x
x=
65
Computer Programming Condition and Loop By Dr. Zaidoon M.
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:
sum = 0;
x = 1;
while x < 4
sum = sum + 1/x;
x = x + 1;
end
>>sum
sum = 1.8333
4. Break statement
Its 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;
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.
66
Computer Programming Condition and Loop By Dr. Zaidoon M.
Exercise 1:
Write a program to calculate average density, conductivity and specific heat for water in
the range of temperatures from 0 to 50 C. Knowing that this parameters for water are a
function of temperature such as the following equations.
The Density
= 1200.92 1.0056 TKo + 0.001084 * (TKo)2
The condactivity
K= 0.34 + 9.278 * 10-4 .TKo
The Specific heat
CP = 0.015539 (TKo 308.2)2 + 4180.9
Note: take 11 point of temperatures
Solution:
ap=0;
aKc=0;
aCp=0;
for T=273:5:323
p= 1200.92 - 1.0056*T+ 0.001084 * T^2;
Kc = 0.34 + 9.278 * 10^-4 *T;
Cp = 0.015539*(T - 308.2)^2 + 4180.9;
ap=ap+p;
aKc=aKc+Kc;
aCp=aCp+Cp;
end
Averagedensity=ap/11
Averageconductivity=aKc/11
Averagespecificheat=aCp/11
Gives the results
Averagedensity =
997.7857
Averageconductivity =
0.6165
Averagespecificheat =
4.1864e+003
67
Computer Programming Condition and Loop By Dr. Zaidoon M.
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 =Kixi
At Bubble point yi=Kixi =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
% The condition to find the boiling point
sum=Ke*Xe+Kw*Xw+Kb*Xb;
if sum>1
break
end
end
T
Gives the result
T=
355.5300
68
Computer Programming Condition and Loop By Dr. Zaidoon M.
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 6 th trail the value of Vi is constant and further trails does not have
any effect on its value.
69
Computer Programming Condition and Loop By Dr. Zaidoon M.
Practice problems:
1/ evaluate the output of a given MATLAB code for each of the cases indicated below.
if z < 5
w = 2*z
elseif z < 10
w=9-z
elseif z < 100
w = sqrt(z)
else
w=z
end
a. z = 1 w = ?
b. z = 9 w = ?
c. z = 60 w = ?
d. z = 200 w = ?
Test cases:
a. y = 5,000 t = ?
b. y = 17,000 t = ?
b. y = 25,000 t = ?
c. y = 75,000 t = ?
70
Computer Programming Graphics By Dr. Zaidoon M.
Graphics
One of 'matlab' most powerful features is the ability to create graphic plots. There are so
many methods of generating graphics in Matlab.
If you want to sketch the same function in between 2 and 2 you simply write:
ezplot('x^2+x+1', [-2, 2])
2. 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
71
Computer Programming Graphics By Dr. Zaidoon M.
(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 2.
72
Computer Programming Graphics By Dr. Zaidoon M.
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 3.
73
Computer Programming Graphics By Dr. Zaidoon M.
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. 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.
74
Computer Programming Graphics By Dr. Zaidoon M.
6. Annotation
The last step before printing or saving a plot is usually to put a title and label the axes.
The graphs can be given titles, axes labeled, and text placed within the graph with the
following commands;
t = 0:0.02*pi:2*pi;
plot(t,sin(t))
xlabel('time')
ylabel('amplitude')
title('Simple Harmonic Oscillator')
The re resulting plot is shown in figure 4.
7. Multiplots
There is two ways to make multiple plots on a single graph are illustrated by.
75
Computer Programming Graphics By Dr. Zaidoon M.
y2=sin(2*x);
y3=sin(4*x);
plot(x,y1,x,y2,x,y3)
The re resulting plot is shown in figure 5.
76
Computer Programming Graphics By Dr. Zaidoon M.
Example
x1=0:.05*pi:pi;
y1=sin(x1);
y2=cos(x1);
plot(x1,y1);
hold on
plot(x1,y2)
hold off
The "hold" command will remain active until you turn it off with the command 'hold
off'.
8. 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 rowwise, starting
77
Computer Programming Graphics By Dr. Zaidoon M.
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 re resulting plot is shown in figure 7.
78
Computer Programming Graphics By Dr. Zaidoon M.
9. Three-Dimensional Plots
Three-dimensional plots completely analogous to plot in two dimensions, the command
plot3 produces curves in three-dimensional space. If x, y, and z are three vectors of the same
size, then the command plot3(x,y,z) will produce a perspective plot of the piecewise linear
curve in 3-space passing through the points whose coordinates are the respective elements of
x, y, and z. These vectors are usually defined parametrically. For example,
t=.01:.01:20*pi;
x=cos(t);
y=sin(t);
z=t.^3;
plot3(x,y,z)
The re resulting plot is shown in figure 8.
79
Computer Programming Graphics By Dr. Zaidoon M.
Exercise 1:
The laminar velocity profile in a pipe, can be given in equation Vx=Vmax(1-(2*r/di)2)
Where
r= distance from pipe center
di: Inner diameter of pipe (di=0.2 m)
Vmax: maximum velocity in pipe (Vmax=2 m)
Plot the velocity profile in a pipe?
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.
80
Computer Programming Graphics By Dr. Zaidoon M.
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
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
m=0;
for T=373:Ts:600
m=m+1
Temp(m)=T
K(m)=A*exp(B-(C/T)-log(D*T)-E*T+F*T^2)
end
plot(Temp, K)
xlabel('Temperature')
ylabel('K value')
Exercise 3:
Plot Txy diagram for ethanol/water system. 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))
Where
Vapor y,T
Ki= P oi /Pt
Pt=760 Liquid x,T
yi =Kixi
At Bubble point yi=Kixi =1
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
82
Computer Programming Graphics By Dr. Zaidoon M.
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')
83
Computer Programming Graphics By Dr. Zaidoon M.
Practice Problems
1. Plot the log of the values from 1 to 100.
2. Plot the parametric curve x = t cos(t), y = t sin(t) for 0 < t < 10.
3. Plot the cubic curve y = x. Label the axis and put a title "a cubic curve" on the top of
the graph.
4. Plot y=(x3+x+1)/x, for 4< x <4 and 10< y < 10.
5. Plot y=ln(x+1) and y=1-x on the same window for -2 < x <6 and 4 <y <4.
6. Plot the expression (determined in modeling the growth of the US population)
P(t) = 197,273,000/(1 + e-0.0313(t - 1913.25))
where t is the date, in years AD, using t = 1790 to 2000.
84
Computer Programming Practice Problems By Dr. Zaidoon M.
Practice Problems
Q1: write program to calculate the volumetric and mass flow rate of a liquid flowing in a pipe
with a velocity equal to 0.5 m/s. Knowing that the diameter of this pipe is 0.1 m and the
density of this liquid is 890 kg/m3 ?
Solution:
d=0.1;p=890;u=.5;
A=(pi/4)*d^2;
Volflow=u*A
Massflow=Volflow*p
A=
0.0079
Volflow =
0.0039
Massflow =
3.4950
85
Computer Programming Practice Problems By Dr. Zaidoon M.
Q3: Write a program to calculate the cost of iron used in manufacturing a cylindrical tank,
where.
A = 0 .5 D 2
+ DL
Cost = 2000 T A
in which:
T: Thickness= 0.01 m
D: Diameter=2 m
A: Surface area
L: length = 5 m
Cost in $ dollar
Solution:
T=0.01;
L=5;
D=2;
A=0.5*pi*D^2+pi*D*L;
% Cost in $ dollar
Cost=2000*T*A
Cost =
753.9822
Q4: Calculate the heat required to increase the temperature of 1 mol of methane from 533.15
K to 873.15 C in a flow process at a pressure approximately 1 bar. where
Cp 2
= A + BT + CT 2 + DT
R
A=1.702 , B=9.081*10-3 , C=-2.164*10-6 , D=0
R=8.314
and
Tout
Q = n Cpdt
Tin
Solution:
syms T;
T1=533.15;
T2=873.15;
A=1.702;
B=9.081e-3;
C=-2.164e-6;
86
Computer Programming Practice Problems By Dr. Zaidoon M.
R=8.314;
Cp=(A+B*T+C*T^2);
Q=R*int(Cp,T1,T2)
Q=
1.9778e+004
Q5: For the following distillation column calculate the values of F1, F3 and F4?
F3=?
F1=? 50%A
20%A 30%B
30%B 20%D
50%D
F2=500
50%A
50%B
F4=?
20%A
40%B
solution: 40%D
[F1,F3,F4]=solve('.2*F1+250=.5*F3+.2*F4','.3*F1+250=.3*F3+.4*F4','.
5*F1=.2*F3+.4*F4')
F1=
1000
F3=
500
F4 =
1000
87
Computer Programming Practice Problems By Dr. Zaidoon M.
Q6: Estimate the average density of a Water/Ethanol mixture at different water compositions
knowing that.
Water density =1000 kg/m3
Ethanol density =780 kg/m3
Mixture density= Xwater Water density + Xethanol Ethanol density
Solution:
Pwater=1000;
Pethanol=780;
Xwater=0:.1:1
Xethanol=1-Xwater
Pav=Pwater*Xwater+Pethanol*Xethanol
Xwater =
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000
0.7000 0.8000 0.9000 1.0000
Xethanol =
1.0000 0.9000 0.8000 0.7000 0.6000 0.5000 0.4000
0.3000 0.2000 0.1000 0
Pav =
780 802 824 846 868 890 912
934 956 978 1000
Q7: Write a program to calculate the vapor pressure for the following system and to calculate
and tabulate its k-values.
P1=exp(14.2724-2945.47/(T+224))
P2= exp(14.2043-2972.64/(T+209))
Temperature range =75-125 Co Use 11 point for temperature
Pt=101.3
Ki= Pi /Pt
Solution:
T=75:5:125;
P1=exp(14.2724-2945.47./(T+224))
P2= exp(14.2043-2972.64./(T+209))
Pt=101.3
K1= P1/Pt
K2= P2/Pt
A=[T,P1,P2,K1,K2]
88
Computer Programming Practice Problems By Dr. Zaidoon M.
Q8: Write a program to estimate 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
Note: take 101 points of temperatures
Solution:
T=273:.5:323 ;
%The Density
P = 1200.92 - 1.0056*T + 0.001084*T.^2 ;
%The conductivity
K= 0.34 + 9.278* 10^-4*T;
%The Specific heat
CP = 0.015539*(T-308.2).^2 + 4180.9;
A=[T',P',K',CP']
Q9: Solve the following system of equations for x, y and z by using matrix method.
10x+3y+5z = 8
8x+2y+2z = 7
3x+4y-z = 6 .
Solution:
A=[10,3,5;8,2,2;3,4,-1];
B=[8;7;6];
X=A\B;
x=X(1),y=X(2),z=X(3)
Gives the results
x=
0.7917
y=
0.7917
z=
-0.4583
89
Computer Programming Practice Problems By Dr. Zaidoon M.
Q11: Make a table of (x vs. y) values for the three component ethanol, water and benzene a
T=373.15 k. Knowing that the vapor pressure of these three components are calculated by:
Note: take 11 point for each component form 0 to 1
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 =Kixi
Solution:
T=373.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;
Xe=0:.1:1;
90
Computer Programming Practice Problems By Dr. Zaidoon M.
Ye=Ke*Xe;
Xw=0:.1:1;
Yw=Kw*Xw;
Xb=0:.1:1;
Yb=Kb*Xb;
A=[Xe',Ye',Xw',Yw',Xb',Yb']
A=
Xe Ye Xw Yw Xb Yb
0 0 0 0 0 0
0.1000 0.2223 0.1000 0.1000 0.1000 0.1777
0.2000 0.4445 0.2000 0.2000 0.2000 0.3554
0.3000 0.6668 0.3000 0.3000 0.3000 0.5331
0.4000 0.8890 0.4000 0.4000 0.4000 0.7107
0.5000 1.1113 0.5000 0.5000 0.5000 0.8884
0.6000 1.3335 0.6000 0.6000 0.6000 1.0661
0.7000 1.5558 0.7000 0.6999 0.7000 1.2438
0.8000 1.7780 0.8000 0.7999 0.8000 1.4215
0.9000 2.0003 0.9000 0.8999 0.9000 1.5992
1.0000 2.2225 1.0000 0.9999 1.0000 1.7769
Q12: Calculate the pressure of and ideal gas (with two digits accuracy) if the temperature of
ideal gas is calculated from the equation;
T=A*T^.3+B*T^.7
A= 0.452
B= 0.736
Where this gas is follow ideal gas law
PV=RT
V=1
R=8.314
Solution:
clear all
clc
A= 0.452; B= 0.736; V=1; R=8.314;
T(1)=273.15;
91
Computer Programming Practice Problems By Dr. Zaidoon M.
P(1)=R*T(1)/V
for m=1:100
T(m+1)=A*T(m)^.3+B*T(m)^.7;
P(m+1)=R*T(m+1)/V ;
if abs(P(m+1)-P(m))<.01
break
end
end
P'
The result will be
ans =
2.2710e+003
3.3080e+002
9.1981e+001
4.0645e+001
2.4633e+001
1.8294e+001
1.5388e+001
1.3936e+001
1.3172e+001
1.2759e+001
1.2531e+001
1.2405e+001
1.2335e+001
1.2295e+001
1.2273e+001
1.2261e+001
1.2254e+001
Q13: Write a program to calculate the volmetric flow rate of the fluid in a pipe, in which the
velocity is calculated by the equation.
u=A*u^.3+B*u^.6+C*u^.9;
A=0.35 , B=0.98 , C=0.342;
Q= Area* u
diameter=0.2 meter
92
Computer Programming Practice Problems By Dr. Zaidoon M.
93
Computer Programming Practice Problems By Dr. Zaidoon M.
Q14: For the vapor liuqid seperater shown in fig. Write a program to calculate the values of
XA,XB,YA,YB, L and V
If you know: V=?
XA+XB=1 YA=?
YA+YB=1 YB=?
YA=KA*XA=2XA
Vapor
F=100 Kg/hr
YB=KB*XB=2XB 40% A
liquid 60% B
L=?
XA=?
Solution: XB=?
A=[1,1,0,0;0,0,1,1;-2,0,1,0;0,-.5,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.3333
xb =
0.6667
ya =
0.6667
yb =
0.3333
L=
80
V=
20.0000
Q15: 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.
94
Computer Programming Practice Problems By Dr. Zaidoon M.
Solution
By making material balances 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.
95
Computer Programming Practice Problems By Dr. Zaidoon M.
Solution;
clear all
clc
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 =
96
Computer Programming Practice Problems By Dr. Zaidoon M.
8.7500
B2 =
17.5000
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
Q16: The experiemental values calculated for the heat capacity of ammonia from 0 to 500 are
T (C) Cp ( cal /g.mol C)
0 8.371
18 8.472
25 8.514
100 9.035
200 9.824
300 10.606
400 11.347
500 12.045
1. Fit the data for the following function
97
Computer Programming Practice Problems By Dr. Zaidoon M.
Cp = a + bT + CT 2 + DT 3
Where T is in C
2. Then calculate amount of heat Q required to increase the temperature of 150 mol/hr of
ammonia vapor from 0 C to 200 C if you know that:
Tout
Q = n
Tin
Cpdt
Solution:
T=[0,18,25,100,200,300,400,500]
Cp=[8.371, 8.472, 8.514, 9.035, 9.824, 10.606, 11.347, 12.045]
P=polyfit(T,Cp,3)
n=150;
syms t
Cpf=P(4)+P(3)*t+P(2)*t^2+P(1)*t^3;
Q= n*int(Cpf, 0,200)
2.7180e+005
Q17: A simple force balance on a spherical particle reaching terminal velocity in a fluid is
given by;
Vt=((4g( p- )Dp)/(3CDp))^.5
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.93110-4 kg/m.s.
Dp=0.000208 m
98
Computer Programming Practice Problems By Dr. Zaidoon M.
0.0160
0.0159
0.0158
0.0158
0.0158
Q18: Unsteady-state ball loss 10% of its last height after each strike in ground. If this ball has
initial height equal to 2 m and stop when its height reaches lower than 0.2 m. Plot its height
as a function of strike no.
Solution:
clear all ,clc
h(1)=2;
m=1
while h(m)> .2
h(m+1)=.9*h(m);
m=m+1
end
plot(1:m,h,'k')
xlabel ('Strike No.')
ylabel('Ball Height m')
100
Computer Programming Practice Problems By Dr. Zaidoon M.
Q19: a tree raise in different raising rate, when its initial height is 5 meter write a program to
plot a tree height as a function of time within ten years.
Raising rate = (1/time).
Solution:
clear all, clc
m=1
L(1)=5
Time(1)=0
for tim=1:10
L(m+1)=L(m)+(1/tim)
Time(m+1)=tim
m=m+1
end
plot(Time,L,k)
xlabel ('Time (year)')
ylabel('Tree height m')
101
Computer Programming Practice Problems By Dr. Zaidoon M.
Q20: A naphthalene sphere loss each day amount of weight equal to 0.2*(survace area)^0.5.
If its initial diameter is 2 cm. write a program to plot naphthalene diameter, as a function of
time until the diameter is reach 0.2 m.
Note:
Naphthalene density=0.890 gm/cm3
A=d2
V=(4/3) d3
Solution:
clear all
clc
p=.89;
m=1;
ti=0;
time(1)=0
d(1)=2;
V(1)=(4/3)*pi*d(1)^3;
W(1)=V(1)*p;
while d(m)>.2;
ti=ti+1;
time(m+1)=ti;
A=pi*d(m)^2;
W(m+1)=W(m)-.2*A^.5;
V(m+1)=W(m+1)/p;
d(m+1)=(V(m+1)*(3/4)*(1/pi))^(1/3);
m=m+1;
end
plot(time,d,'k');
xlabel('Time (day)')
ylabel('Sphere diameter (cm)')
102
Computer Programming Practice Problems By Dr. Zaidoon M.
Q21: Plot Pxy diagram for the Binary system of acetonitrile(1)/nitromethane(2). Vapor
pressures for the pure species are given by the following equations.
For acetonitrile(1) Po1=exp(14.2724-2945.47/(T+224))
For nitromethane(2) Po2= exp(14.2043-2972.64/(T+209))
In which
T=75 Co
P1 and P2 in kpa
Ki= Poi /Pt
At Bubble point yi=Kixi =1
Solution:
Write the following code
X1=0:.1:1;
X2=1-X1;
T=75;
P1=exp(14.2724-2945.47/(T+224));% Vapor pressure of acetonitrile
P2=exp(14.2043-2972.64/(T+209));% Vapor pressure of nitromethane
for m=1:11
for Pt=.1:.01:120;
K1=P1/Pt; % acetonitrile
103
Computer Programming Practice Problems By Dr. Zaidoon M.
K2=P2/Pt; % nitromethane
sum=K1*X1(m)+K2*X2(m);
if sum<1
break
end
end
Press(m)=Pt;
Y1(m)=K1*X1(m);
end
plot(X1,Press,'k-+',Y1,Press,'k-*')
axis ([0 1 20 100])
xlabel('x,y for acetonitrile')
ylabel('Pt (kpa)')
title('Pxy diagram of system acetonitrile/nitromethane system')
104