53
Introduction to Scilab Scilab Talk Department of Chemical Engineering, IIT Bombay One Day Teacher Training Programme Sant Gadge Baba Amravati Universtiy Amravati August 08, 2009 Kannan+Mani Introduction to Scilab 1/53

Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

  • Upload
    others

  • View
    36

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Introduction to Scilab

Scilab Talk

Department of Chemical Engineering,IIT Bombay

One Day Teacher Training Programme Sant Gadge BabaAmravati Universtiy Amravati

August 08, 2009

Kannan+Mani Introduction to Scilab 1/53

Page 2: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Outline

I Introduction to ScilabI Basic FeaturesI Ordinary Differential Equations Integration Examples

Kannan+Mani Introduction to Scilab 2/53

Page 3: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Software Issues

I Last 30-40 years: Significant (order of 103) advances inhardware technology

I Software: still the same time (improvement of order of2− 3) to write programs as before

I Low programming productivityI Scientific Computing?

I No formal training to scientists and engineers inprogramming

I Maybe one or max 2 courses in Fortran or C or C++.I Aim: To solve specific engineering problems without

investing too much time or knowing "softwareprogramming".

Kannan+Mani Introduction to Scilab 3/53

Page 4: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Ideas and Implementation

I R&D Stage: Evaluation of ideasI Ability to rapidly test different ideas

I When ideas work, then production phaseI Generalize code for repeated usedI Use code repeatedlyI Need efficient code

Kannan+Mani Introduction to Scilab 4/53

Page 5: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

College Education= Idea Testing

I New things learnt in collegeI Extensive idea testing phaseI Need a tool for idea testingI Performance of code often does not matterI All of us need to be able to do some basic computations to

increase our teaching effectiveness

Scilab fits the bill

Kannan+Mani Introduction to Scilab 5/53

Page 6: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Applied Research Institutions

I High productivity platform for idea testingI Support for “research" topicsI Developing efficient codes for tested ideas

Scilab fits the bill

Kannan+Mani Introduction to Scilab 6/53

Page 7: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Scilab

I Scilab for numerical computer applicationsI Good mathematical library in compiled C codeI Interpreted high level languageI High productivity tool: Scilab:C=C:AssemblyI Can work with Fortran, C: Transition to production phase

possibleI Good graphics capabilityI Large installed baseI A lot of algorithms implemented in interpreted language as

wellI FreeI Check out www.scilab.org

Kannan+Mani Introduction to Scilab 7/53

Page 8: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Mathematical Functions

I Special FunctionsI Bessel, gamma, error function, elliptic integral

I Polynomial FunctionsI Characteristic polynomial, roots, multiplication, division

I Matrix norms, ranks, condition numberI Equation Solving

I System of linear and nonlinear equations, differentialequations, differential algebraic equations

I OptimizationI Linear Programming, Quadratic Programming

I Probability and StatisticsI Distributions, random number generators, random system

generators

Kannan+Mani Introduction to Scilab 8/53

Page 9: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Mathematical Functions Continued

I Matrix Decomposition and Factorization ToolsI Signal Processing ToolsI Control Related ToolsI Scicos: A block-diagram based environment

Kannan+Mani Introduction to Scilab 9/53

Page 10: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Scilab’s Language

I C like languageI Control flow

I ifI whileI selectI break

I ProceduresI ScriptsI Functions

I Other FeaturesI DiaryI Interface with C and Fortran routines

Kannan+Mani Introduction to Scilab 10/53

Page 11: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Features of Scilab

I Scilab made up of three distinct parts:I An interpreterI Libraries of functions (Scilab procedures)I Libraries of Fortran and C routines

I It includes hundreds of mathematical functions with thepossibility to interactively add programs from variouslanguages (C,Fortran).

I It has sophisticated data structures including polynomials,rational functions, linear systems, etc.

I Various contributed “toolboxes": eg. support vectormachines (SVM).

Kannan+Mani Introduction to Scilab 11/53

Page 12: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Where do I get Scilab?

I Can be downloaded from:http://www.scilab.org

I Available for various platforms (binaries and source codes):Windows (XP, Vista), Linux, Mac

Kannan+Mani Introduction to Scilab 12/53

Page 13: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Basic Arithmetic- I

4+6+12

ans =22.

a = 4, b = 6; c = 12

a =4.

c =12.

a+b+c

ans =22.

Kannan+Mani Introduction to Scilab 13/53

Page 14: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Useful Commands

I demosI Gives demos on several different things

I aproposI Helps locate commands associated with a word

I helpI diary

I Stores all commands and resulting outputs

Kannan+Mani Introduction to Scilab 14/53

Page 15: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

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+Mani Introduction to Scilab 15/53

Page 16: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Simple Arithmetic

format(’v’,10)x = sqrt(2)/2, y = asin(x)

x =

0.7071068y =

0.7853982

y_deg = y * 180 /%pi

y_deg =

45.

Kannan+Mani Introduction to Scilab 16/53

Page 17: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Rounding, Truncation, etc.

x = 2.6, y2 = floor(x), y3 = ceil(x), ...y4 = round(x)

x =

2.6y2 =

2.y3 =

3.y4 =

3.

Kannan+Mani Introduction to Scilab 17/53

Page 18: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

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+Mani Introduction to Scilab 18/53

Page 19: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

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+Mani Introduction to Scilab 19/53

Page 20: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Vector Operation - 2

-->a = 1:5, b = 1:2:7

a =! 1. 2. 3. 4. 5. !b =! 1. 3. 5. 7. !

-->c = [b a]

c =! 1. 3. 5. 7. 1. 2. 3. 4. 5. !

-->d = [b(1:2:4) 1 0 1]

d =! 1. 5. 1. 0. 1. !

Kannan+Mani Introduction to Scilab 20/53

Page 21: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Vector Operation - 3

-->a, b

a =! 1. 2. 3. 4. 5. !b =! 1. 3. 5. 7. !

-->a - 2

ans =! - 1. 0. 1. 2. 3. !

-->2*a-[b 1]

ans =! 1. 1. 1. 1. 9. !

Kannan+Mani Introduction to Scilab 21/53

Page 22: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Vector Operation - 4

-->a

a =! 1. 2. 3. 4. 5. !

-->a.^2

ans =! 1. 4. 9. 16. 25. !

-->a.^a

ans =! 1. 4. 27. 256. 3125. !

Kannan+Mani Introduction to Scilab 22/53

Page 23: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Transpose

-->c = [1;2;3]

c =! 1. !! 2. !! 3. !

-->a=1:3

a =! 1. 2. 3. !

-->b = a’

b =! 1. !! 2. !! 3. !

Kannan+Mani Introduction to Scilab 23/53

Page 24: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Submatrix -1

-->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+Mani Introduction to Scilab 24/53

Page 25: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Submatrix-2

-->A

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+Mani Introduction to Scilab 25/53

Page 26: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Submatrix-3

-->A

A =! 1. 2. 3. !! 1. 4. 7. !! 7. 8. 0. !

-->B=A(:,2)

B =! 2. !! 4. !! 8. !

Kannan+Mani Introduction to Scilab 26/53

Page 27: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Logical Operators

== equal to< less than> greater than<= less than or equal to>= greater than or equal to<> or ∼= not equal to

Kannan+Mani Introduction to Scilab 27/53

Page 28: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Submatrix-4

-->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+Mani Introduction to Scilab 28/53

Page 29: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

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+Mani Introduction to Scilab 29/53

Page 30: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

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+Mani Introduction to Scilab 30/53

Page 31: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Script File

I Diary to keep record of all executed commandsI Script file: write all working commands

I When required, simply execute script fileI No need to work on command prompt

Kannan+Mani Introduction to Scilab 31/53

Page 32: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Plots

Go through the Demos!

Kannan+Mani Introduction to Scilab 32/53

Page 33: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

1 t = (0 :0 .1 :6∗%pi ) ;2 plot2d ( t ’ , sin ( t ) ’ ) ;3 x t i t l e ( ’ p lo t2d and xg r i d ’ , ’ t ’ , ’ s i n ( t ) ’ ) ;4 xgrid ( ) ;

6 82 12t

14104 180 2016

1.0

0.8

0.6

0.4

0.2

0.0

-0.2

-0.4

-0.6

-0.8

-1.0

sin(t)

plot2d and xgrid

Kannan+Mani Introduction to Scilab 33/53

Page 34: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Weight Reduction Model

I Weight of person = x kgI Tries to reduce weightI Weight loss per month = 10% of weightI Starting weight = 100 kg

dxdt

= −0.1x

Initial conditions:

x = 100 at t=0

Determine x(t) as a function of t .

Kannan+Mani Introduction to Scilab 34/53

Page 35: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Analytical Solution of Simple ModelRecall the model:

dxdt

= −0.1x ; x(t = 0) = 100

Cross multiplying,dxx

= −0.1dt

Integrating both sides from 0 to t ,∫dxx

= −0.1∫

dt

C + ln x(t) = −0.1t

Using initial conditions,

C = − ln 100

Thus, the final solution is,

lnx(t)100

= −0.1t or x(t) = 100e−0.1t

Kannan+Mani Introduction to Scilab 35/53

Page 36: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Solution, Continued

I Weight of person = x kgI Tries to reduce weightI Weight loss per month = 10% of weightI Starting weight = 100 kg

x(t) = 100e−0.1t

Compute and plot for two years, i.e. for 24 months:

1 T=0 :0 .1 :24 ;2 plot2d (T,100∗exp(−0.1∗T ) ) ;3 x t i t l e ( ’ Weight vs . month ’ , ’ Time i n months ’ , . .4 ’ Weight ( kg ) ’ )

Kannan+Mani Introduction to Scilab 36/53

Page 37: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

0 4 8 12 16 20 240

10

20

30

40

50

60

70

80

90

100

Weight vs. month

Time, in months

Weight (kg)

Kannan+Mani Introduction to Scilab 37/53

Page 38: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Need for Numerical Solution

I Exact solution is ok for simple modelsI What if the model is complicated?I Consider integrating the more difficult problem:

dxdt

=2 + 18t + 68t2 + 180t3 + 250t4 + 250t5

x2

with initial condition,

x(t = 0) = 1

I Analytical (i.e. exact) solution difficult to find

Kannan+Mani Introduction to Scilab 38/53

Page 39: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Simplest Numerical Solution: Explicit Euler

I Suppose that we want to integrate the following system:

dxdt

= g(x , t)

with initial condition:

x(t = 0) = x0

I Approximate numerical method - divide time into equalintervals: t0, t1, t2, etc.

xn − xn−1

∆t= g(xn−1, tn−1)

I Simplifying,

xn − xn−1 = ∆t g(xn−1, tn−1)

xn = xn−1 + ∆t g(xn−1, tn−1)

I Given x0, march forward and determine xn for all future n.

Kannan+Mani Introduction to Scilab 39/53

Page 40: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Functions

Online function definition

1 deff ( ’ [ y ]= avgfunc ( x1 , x2 ) ’ , ’ y =( x1+x2 ) / 2 ’ )2 a=avgfunc (3 ,5 )

Answer will be 4

Kannan+Mani Introduction to Scilab 40/53

Page 41: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Functions in Files

Create a file myavgfunc.sci with the following three lines:

1 function y=myavgfunc ( x1 , x2 )2 y =( x1+x2 ) / 2 ;3 endfunction

usage

--> getf(’myavgfunc.sci’) \\-->a=myavgfunc(3,5);

Answer: a=4

Kannan+Mani Introduction to Scilab 41/53

Page 42: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Example revisited

Recall the problem statement for numerical solution:

dxdt

=2 + 18t + 68t2 + 180t3 + 250t4 + 250t5

x2

with initial condition,

x(t = 0) = 1

Recall the Euler method:

dxdt

= g(x , t)

Solution for initial condition, x(t = 0) = x0 is,

xn = xn−1 + ∆t g(xn−1, tn−1)

Kannan+Mani Introduction to Scilab 42/53

Page 43: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Scilab Code

1 getf ( " d i f f 1 . s c i " ) ;2 getf ( " Euler . s c i " ) ;3 x0 =1; t0 =0; T=0 :0 .1 :24 ;4 so l = Euler ( x0 , t0 , T , d i f f 1 ) ;5 / / s o l = o d e ( x0 , t 0 , T , d i f f 1 ) ;6 plot2d (T , so l )7 x t i t l e ( ’ x vs . t : Polynomial Problem ’ , ’ t ’ , ’ x ’ )

1 function x = Euler ( x0 , t0 , t , g )2 n = length ( t ) , x = x0 ;3 for j = 1 :n−14 x0 = x0 + ( t ( j +1)− t ( j ) ) ∗ g ( t ( j ) , x0 ) ;5 x = [ x x0 ] ;6 end ;

1 function xdot = d i f f 1 ( t , x )2 xdot = (2+18∗ t +68∗ t ^2+180∗ t ^3+250∗ t ^4+250∗ t ^ 5 ) / x ^2 ;

Kannan+Mani Introduction to Scilab 43/53

Page 44: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Numerical Solution

t2520151050

3000

2500

2000

1500

1000

500

0

x

x vs. t: Polynomial Problem

Kannan+Mani Introduction to Scilab 44/53

Page 45: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Predator-Prey Problem

I Population dynamics of predator-preyI Prey can find food, but gets killed on meeting predatorI Examples: parasites and certain hosts; wolves and rabbitsI x1(t) - number of prey; x2(t) - number of predator at time tI Prey, if left alone, grows at a rate proportional to x1

I Predator, on meeting prey, kills it⇒ proportional to x1x2

dx1

dt= 0.25x1 − 0.01x1x2

I Predator, if left alone, decrease by natural causesI Predators increase their number on meeting prey

dx2

dt= −x2 + 0.01x1x2

I Determine x1(t), x2(t) when x1(0) = 80, x2(0) = 30

Kannan+Mani Introduction to Scilab 45/53

Page 46: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Explicit Euler for a System of Equations

dx1

dt= g1(x1, . . . , xn, t)

...dxn

dt= gn(x1, . . . , xn, t)

ddt

x1...

xn

=

g1(x1, . . . , xn, t − 1)...

gn(x1, . . . , xn, t − 1)

x1

...xn

t

=

x1...

xn

t−1

+ ∆t

g1((x1, . . . , xn)|t−1, t − 1)...

gN((x1, . . . , xn)|t−1, t − 1)

Solution in vector form:

x t = x t−1 + ∆tg(x t−1)

Kannan+Mani Introduction to Scilab 46/53

Page 47: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Scilab Code for Predator-Prey Problem1 getf ( " pred . s c i " ) ;2 getf ( " Euler . s c i " ) ;3 x0 = [ 8 0 , 3 0 ] ’ ; t0 =0; T=0 :0 .1 :20 ; T=T ’ ;4 so l = Euler ( x0 , t0 , T , pred ) ;5 / / s o l = ode ( x0 , t0 , T , p r e d ) ;6 plot2d (T , sol ’ )7 xset ( ’ window ’ ,1 )8 plot2d ( so l ( 2 , : ) , so l ( 1 , : ) )

1 function x = Euler ( x0 , t0 , t , g )2 n = length ( t ) , x = x0 ;3 for j = 1 :n−14 x0 = x0 + ( t ( j +1)− t ( j ) ) ∗ g ( t ( j ) , x0 ) ;5 x = [ x x0 ] ;6 end ;

1 function xdot = pred ( t , x )2 xdot ( 1 ) = 0.25∗x (1)−0.01∗x (1 )∗ x ( 2 ) ;3 xdot ( 2 ) = −x (2)+0.01∗ x (1 )∗ x ( 2 ) ;

Kannan+Mani Introduction to Scilab 47/53

Page 48: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Predator-Prey Problem: Solution by Euler

10 14 18 22 26 30 34 38 42 4660

70

80

90

100

110

120

130

140

10 14 18 22 26 30 34 38 42 4660

70

80

90

100

110

120

130

140

Predator−Prey by Euler for different step sizes, Black = 0.25, Red = 0.1

Predator

Prey

As step size increases, solution diverges more from actual.

Kannan+Mani Introduction to Scilab 48/53

Page 49: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Better Integration Techniques

I Use other integration techniques (Runge-Kutta 4).I Use Scilab’s ode integrator: "ode" (has various integration

routines)I Its derived from ODEPACK which has been widely used for

last several years

Kannan+Mani Introduction to Scilab 49/53

Page 50: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Predator-Prey Problem by Scilab Integrator

Execute the following code, after commenting out Euler and uncommentingode:

1 getf ( " pred . s c i " ) ;2 getf ( " Euler . s c i " ) ;3 x0 = [ 8 0 , 3 0 ] ’ ; t0 =0; T=0 :0 .1 :20 ; T=T ’ ;4 / / s o l = E u l e r ( x0 , t0 , T , p r e d ) ;5 so l = ode ( x0 , t0 , T , pred ) ;6 plot2d (T , sol ’ )7 xset ( ’ window ’ ,1 )8 plot2d ( so l ( 2 , : ) , so l ( 1 , : ) )

1 function xdot = pred ( t , x )2 xdot ( 1 ) = 0.25∗x (1)−0.01∗x (1 )∗ x ( 2 ) ;3 xdot ( 2 ) = −x (2)+0.01∗ x (1 )∗ x ( 2 ) ;

Kannan+Mani Introduction to Scilab 50/53

Page 51: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Predator-Prey Problem: Solution by Scilab Integrator

15 19 23 27 31 35 3970

80

90

100

110

120

130

Predator−Prey by Scilab integrator

Predator

Prey

Use the Scilab built-in integrator to get the correct solution

Kannan+Mani Introduction to Scilab 51/53

Page 52: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Conclusions

I Scilab is ideal for educational institutions, including schoolsI Built on a sound numerical platformI It has especially good integrators for differential equationsI It is especially good for polynomial matrix computationsI It is freeI Also suitable for industrial applicationsI Scilab:Matlab= Linux:Windows

Kannan+Mani Introduction to Scilab 52/53

Page 53: Introduction to Scilab · Script File I Diary to keep record of all executed commands I Script file: write all working commands I When required, simply execute script file I No

Thank you

Kannan+Mani Introduction to Scilab 53/53