Introduction to Scilab
Kannan M. Moudgalya
IIT Bombay
www.moudgalya.org
kannan@iitb.ac.in
Scilab Workshop
Bhaskaracharya Pratishtana
4 July 2009
Kannan Moudgalya Introduction to Scilab 1/52
Outline
I Software engineering
I Implication to scientific computations
I Scilab as a possible solution
I Scilab - a tutorial introduction
I Simple arithmetic
I Matrix operations
I Vector arithmetic
I Conditionals
I Plots
I Installation
Kannan Moudgalya Introduction to Scilab 2/52
Software - Bottleneck
I In the past 40 years hardware technology advanced more than
1,000 times
I Software technology about same - people take same time to
write programs as before - perhaps twice or thrice faster, with
good editors, etc.
I Productivity: 5 lines/man day at IBM with 1 error/mloc
(million lines of code)
I The above includes testing, debugging and documentation
I Such a low productivity with sophisticated software tools and
that too by experienced programmers
I Others will produce even less
Kannan Moudgalya Introduction to Scilab 3/52
Shortcomings in Science Education
I Scientists and engineers often have no formal course in
programming
I Perhaps one course mainly Fortran, perhaps some C
I Objective: to solve engineering problems. Good programming
is not a must
I Computer science departments do not spend much time on
numerical programming (e.g. does not teach Fortran)
I Shortage of computer scientists
I Scientists and engineers teach programming to their students
I Many of them would have had no formal course in
programming
Kannan Moudgalya Introduction to Scilab 4/52
Gap between Computer Scientists and Engineers
I Numerical software is not of interest to computer scientists
I Computers scientists do not carry out numerical simulations
I Their programs work mostly with characters - may be integers
I This, combined with shortcomings in science education, as
mentioned in the last slide, makes scientific computations a
difficult problem
Kannan Moudgalya Introduction to Scilab 5/52
Idea to Implementation
I R&D Stage: Evaluation of ideas
I Need rapid idea testing workbench
I Come up with idea
loop
Test it
Modify it
end loop
I When idea works, go to production phase:
I Convert code for repeated use
I Use code repeatedly
I Need efficient code
Kannan Moudgalya Introduction to Scilab 6/52
College Education = Idea Testing
I College teaches new things
I Extensive idea testing phase
I Need a tool for idea testing
I Performance of code often does not matter
I Scilab fits the bill
Kannan Moudgalya Introduction to Scilab 7/52
Applied Research Institutions
I High productivity platform for idea testing
I Developing efficient code for tested ideas
I Scilab is one such tool
Kannan Moudgalya Introduction to Scilab 8/52
Scilab
I Environment for numerical computer applications
I Good mathematical library in compiled C code
I Interpreted high level language
I High productivity tool Scilab:C = C:Assembly
I Can work with Fortran, C: Transition to production phase
possible
I Good graphics capability
I Large installed base
I A lot of algorithms implemented in interpreted language as
well
I Free
I Check out www.scilab.org or www.scilab.in
Kannan Moudgalya Introduction to Scilab 9/52
History of Scilab
I Idea of Cleve Moler, CS Prof. New Mexico State University
I Was in Linpack, Eispack (robust algorithms) projects
I NSF sponsored project to develop Matlab in Fortran - Free
I Many companies started using this idea
I Matrixx
I CTRL-C
I Matlab
I Scilab
I Used extensively for linear algebra, simulation, control system
design
Kannan Moudgalya Introduction to Scilab 10/52
Mathematical Library
I Special functions
I Bessel
I Gamma
I Error function
I Elliptic integral
I Polynomials
I Characteristic polynomial
I Roots
I Multiplication
I Division
I Curve fitting
I Matrix condition
I Condition number
I 1,2,F and ∞ norms
I rank
Kannan Moudgalya Introduction to Scilab 11/52
Mathematical Library - Continued
I Matrix functions
I Exponential
I Powers
I Log
I Square root
I Decomposition & factorisation
I LU
I QR
I SVD
I Cholesky
I Schur
I Inverse
I Signal processing
I FFT, FFT2, IFFT, IFFT2
I Convolution
I Deconvolution
I Correlation coefficient
Kannan Moudgalya Introduction to Scilab 12/52
Scilab’s Language
I C like langugae
I Control flow
I if
I while
I select
I break
I Procedures
I Scripts
I Functions
I Other features
I Diary
I Can call C and Fortran programs
Kannan Moudgalya Introduction to Scilab 13/52
Features of Scilab
I Scilab is made up of three distinct parts:
I An interpreter
I Libraries of functions (Scilab procedures)
I Libraries of Fortran and C routines
I It includes hundreds of mathematical functions with the
possibility to interactively add programs from various
languages (C, Fortran).
I It has sophisticated data structures including lists,
polynomials, rational functions, linear systems, etc.
Kannan Moudgalya Introduction to Scilab 14/52
How to Download Scilab?
I Scilab can be downloaded from
ftp://ftp.iitb.ac.in/misc packages/Scilab/
I The website of Scilab is www.scilab.org
I It is distributed in source code format.
I Binaries for Windows95/NT, Unix/Linux/Mac OS/X are also
available. All the binary versions include tk/tcl interface.
Kannan Moudgalya Introduction to Scilab 15/52
Usage of Scilab
Kannan Moudgalya Introduction to Scilab 16/52
Simple Arithmetic - 1
4+6+12
ans =
22.
a = 4, b = 6; c = 12
a =
4.
c =
12.
a+b+c
ans =
22.
Kannan Moudgalya Introduction to Scilab 17/52
Useful Commands
I demos
I Gives demos on several different things
I apropos
I Helps locate commands associated with a word
I help
I functional invocation with no arguments
I Helps draw plots
I diary
I Stores all commands and resulting outputs
Kannan Moudgalya Introduction to Scilab 18/52
Simple Arithmetic & Display
a = 4; b = 6; c = 12;
d = a+b+c
d =
22.
d = a+b+c;
d =
22.
Kannan Moudgalya Introduction to Scilab 19/52
Simple Arithmetic
format(’v’,10)
e = 1/30
e =
0.0333333
format(’v’,20)
e
e =
0.03333333333333333
format(’e’,20)
e
e =
3.3333333333333E-02
Kannan Moudgalya Introduction to Scilab 20/52
Simple Arithmetic
format(’v’,10)
x = sqrt(2)/2, y = asin(x)
x =
0.7071068
y =
0.7853982
y_deg = y * 180 /%pi
y_deg =
45.
Kannan Moudgalya Introduction to Scilab 21/52
Rounding, Truncation, etc.
x = 2.6, y1 = fix(x), y2 = floor(x), y3 = ceil(x), ...
y4 = round(x)
x =
2.6
y1 =
2.
y2 =
2.
y3 =
3.
y4 =
Kannan Moudgalya Introduction to Scilab 22/52
Different Ways to Specify a List
The following three commands produce identical result:
x = [0 .1*%pi .2*%pi .3*%pi .4*%pi .5*%pi .6*%pi ...
.7*%pi .8*%pi .9*%pi %pi];
x = (0:0.1:1)*%pi;
x = linspace(0,%pi,11);
Kannan Moudgalya Introduction to Scilab 23/52
Vector Operation - 1
-->x = (0:0.1:1)*%pi;
-->y = sin(x)
y =
column 1 to 6
! 0. 0.3090170 .5877853 0.8090170 0.9510565 1. !
column 7 to 11
! 0.9510565 0.8090170 0.5877853 0.3090170 1.225E-16 !
-->y(5)
ans =
0.9510565
Kannan Moudgalya Introduction to Scilab 24/52
Vector Operation - 2
-->a = 1:5, b = 1:2:9
a =
! 1. 2. 3. 4. 5. !
b =
! 1. 3. 5. 7. 9. !
-->c = [b a]
c =
! 1. 3. 5. 7. 9. 1. 2. 3. 4. 5. !
-->d = [b(1:2:5) 1 0 1]
d =
! 1. 5. 9. 1. 0. 1. !
Kannan Moudgalya Introduction to Scilab 25/52
Vector Operation - 3
-->a, b
a =
! 1. 2. 3. 4. 5. !
b =
! 1. 3. 5. 7. 9. !
-->a - 2
ans =
! - 1. 0. 1. 2. 3. !
-->2*a-b
ans =
! 1. 1. 1. 1. 1. !
Kannan Moudgalya Introduction to Scilab 26/52
Vector Operation - 5
-->a
a =
! 1. 2. 3. 4. 5. !
-->a.^2
ans =
! 1. 4. 9. 16. 25. !
-->a.^a
ans =
! 1. 4. 27. 256. 3125. !
Kannan Moudgalya Introduction to Scilab 27/52
Vector Operation - 6
-->a, b
a =
! 1. 2. 3. 4. 5. !
b =
! 1. 3. 5. 7. 9. !
-->a./b
ans =
! 1. 0.6666667 0.6 0.5714286 0.5555556 !
-->b.\a
ans =
! 1. 0.6666667 0.6 0.5714286 0.5555556 !
Kannan Moudgalya Introduction to Scilab 28/52
Vector Operation - 7
-->a, b
a =
! 1. 2. 3. 4. 5. !
b =
! 1. 3. 5. 7. 9. !
-->a/b
ans =
0.5757576
Kannan Moudgalya Introduction to Scilab 29/52
Vector Operation - 8
-->a, b
a =
! 1. 2. 3. 4. 5. !
b =
! 1. 3. 5. 7. 9. !
-->a\b
ans =
! 0. 0. 0. 0. 0. !
! 0. 0. 0. 0. 0. !
! 0. 0. 0. 0. 0. !
! 0. 0. 0. 0. 0. !
! 0.2 0.6 1. 1.4 1.8 !
Kannan Moudgalya Introduction to Scilab 30/52
Machine Epsilon
-->num=0; EPS=1;
-->while (1+EPS)>1
--> EPS = EPS/2;
--> num = num+1;
-->end
-->num
num =
53.
-->EPS=2*EPS
EPS =
2.220E-16
Kannan Moudgalya Introduction to Scilab 31/52
Logical Operators
== equal to
< less than
> greater than
<= less than or equal to
>= greater than or equal to
<> or ∼= not equal to
Kannan Moudgalya Introduction to Scilab 32/52
Use of Machine Epsilon
-->x = (-2:2)/3
x =
! - 0.6666667 - 0.3333333 0. 0.3333333 0.6666667 !
-->sin(x)./x
!--error 27
division by zero...
Kannan Moudgalya Introduction to Scilab 33/52
Use of Machine Epsilon
-->x = x+(x==0)*%eps
x =
! -0.6666667 -0.3333333 2.22E-16 0.3333333 0.6666667 !
-->sin(x)./x
ans =
! 0.9275547 0.9815841 1. 0.9815841 0.9275547 !
Kannan Moudgalya Introduction to Scilab 34/52
Vector Operations Using Logical Operators
-->A = 1:9, B = 9-A
A =
! 1. 2. 3. 4. 5. 6. 7. 8. 9. !
B =
! 8. 7. 6. 5. 4. 3. 2. 1. 0. !
-->tf = A==B
tf =
! F F F F F F F F F !
-->tf = A>B
tf =
! F F F F T T T T T !
Kannan Moudgalya Introduction to Scilab 35/52
Transpose
-->c = [1;2;3]
c =
! 1. !
! 2. !
! 3. !
-->a=1:3
a =
! 1. 2. 3. !
-->b = a’
b =
! 1. !
! 2. !
! 3. !
Kannan Moudgalya Introduction to Scilab 36/52
Submatrix
-->A=[1 2 3;4 5 6;7 8 9]
A =
! 1. 2. 3. !
! 4. 5. 6. !
! 7. 8. 9. !
-->A(3,3)=0
A =
! 1. 2. 3. !
! 4. 5. 6. !
! 7. 8. 0. !
Kannan Moudgalya Introduction to Scilab 37/52
Submatrix
A =
! 1. 2. 3. !
! 4. 5. 6. !
! 7. 8. 0. !
-->B=A(3:-1:1,1:3)
B =
! 7. 8. 0. !
! 4. 5. 6. !
! 1. 2. 3. !
Kannan Moudgalya Introduction to Scilab 38/52
Submatrix
-->A
A =
! 1. 2. 3. !
! 1. 4. 7. !
! 7. 8. 0. !
-->B=A(:,2)
B =
! 2. !
! 4. !
! 8. !
Kannan Moudgalya Introduction to Scilab 39/52
Submatrix
-->b=[5 -3;2 -4]
b =
! 5. - 3. !
! 2. - 4. !
-->x=abs(b)>2
x =
! T T !
! F T !
-->y=b(abs(b)>2)
y
=
! 5. !
! - 3. !
! - 4. !
Kannan Moudgalya Introduction to Scilab 40/52
Special Matrices
-->zeros(3,3)
ans =
! 0. 0. 0. !
! 0. 0. 0. !
! 0. 0. 0. !
-->ones(2,4)
ans =
! 1. 1. 1. 1. !
! 1. 1. 1. 1. !
-->rand(2,1)
ans =
! 0.2113249 !
! 0.7560439 !
Kannan Moudgalya Introduction to Scilab 41/52
Go for Vector Computation
Kannan Moudgalya Introduction to Scilab 42/52
Go for Vector Computation
-->a = ones(10000,1);
-->timer()
ans =
0.02
-->for i = 1:10000, b(i)=a(i)+a(i); end
-->timer()
ans =
0.31
-->c = a+a;
-->timer()
ans =
0.03
Kannan Moudgalya Introduction to Scilab 43/52
Plots
Go through the Demos!
Kannan Moudgalya Introduction to Scilab 44/52
1 t = ( 0 : 0 . 1 : 6 ∗ %pi ) ;
2 plot2d ( t ’ , s i n ( t ) ’ ) ;
3 x t i t l e ( ’ p l o t 2 d and x g r i d ’ , ’ t ’ , ’ s i n ( t ) ’ ) ;
4 xgrid ( ) ;
Kannan Moudgalya Introduction to Scilab 45/52
1 plot2d1 ( ’ e n l ’ , 1 , ( 1 : 1 0 : 1 0 0 0 0 ) ’ ) ;
2 x t i t l e ( ’ plot2d1 log scale ’ , ’ t ’ , ’ y log scale ’ );
3 xgrid ( 3 ) ;
Kannan Moudgalya Introduction to Scilab 46/52
1 subplot ( 2 ,2 ,1); plot3d ( ) ;
2 subplot ( 2 ,2 ,2); plot2d ( ) ;
3 subplot ( 2 ,2 ,3); histplot ();
4 subplot ( 2 ,2 ,4); grayplot ( ) ;
Kannan Moudgalya Introduction to Scilab 47/52
1 plot3d ( ) ;
2 T i t l e =[ ’ p l o t 3 d : z=s i n ( x ) ∗ c o s ( y ) ’ ] ;
3 xtitle ( Title , ’ ’ , ’ ’ );
Kannan Moudgalya Introduction to Scilab 48/52
System requirements
I Source version
I Scilab requires approximately 130 MB of disk storage to
unpack and install (all sources included).
I Also, X Window (X11R4, X11R5 or X11R6), C and Fortran
compilers are needed.
I Binary version
I The minimum requirement for running Scilab (without
sources) is about 40 MB when decompressed.
I Being partially and statically linked, these versions do not
require a Fortran compiler.
Kannan Moudgalya Introduction to Scilab 49/52
How to install Scilab?
I Windows
I Download scilab-4.1.exe
I Click this file and follow the instructions
I Launch from its icon on the Desktop.
I Linux
I Download scilab-4.1.bin.linux-i686.tar.gz
I Issue the following commands
I tar zxvf scilab-4.1.bin.linux-i686.tar.gz
I cd scilab-4.1
I make
I The binary is at bin/scilab
Kannan Moudgalya Introduction to Scilab 50/52
Conclusions
I Scilab is ideal for educational institutions, including schools
I Built on a sound numerical platform
I It is free
I Also suitable for industrial applications
I Standard tradeoff between free and commercial applications
Kannan Moudgalya Introduction to Scilab 51/52
Thank you
Kannan Moudgalya Introduction to Scilab 52/52