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

Introduction To Scilab: Kannan M. Moudgalya IIT Bombay Kannan@iitb - Ac.in

The document provides an introduction and overview of Scilab, an open-source numerical computational software. It outlines Scilab's features such as its mathematical library, programming language capabilities, and usage. The document also discusses how Scilab can help address shortcomings in scientific education by providing a tool for testing and developing ideas through its high productivity and interpreted language.

Uploaded by

bluemoon9090
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Introduction To Scilab: Kannan M. Moudgalya IIT Bombay Kannan@iitb - Ac.in

The document provides an introduction and overview of Scilab, an open-source numerical computational software. It outlines Scilab's features such as its mathematical library, programming language capabilities, and usage. The document also discusses how Scilab can help address shortcomings in scientific education by providing a tool for testing and developing ideas through its high productivity and interpreted language.

Uploaded by

bluemoon9090
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

Introduction to Scilab

Kannan M. Moudgalya
IIT Bombay
www.moudgalya.org
[email protected]

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

You might also like