You are on page 1of 7

Intro to Scilab

Developed at INRIA, SCILAB has been developed for system control and signal processing applications. It is freely distributed in source code format. High level scientific computing environments such as Matlab, RLab, Octave and Scilab are an enjoyable way to solve problems numerically. It is particularly easy to generate some results, draw graphs to look at the interesting features, explore the problem further and manipulate matrices. Scilab is made of 3 distinct parts An interpreter Libraries of functions Libraries of Fortran and C routines

- scilab prompt Up arrow key to display // - comment %pi = 3.1415 //constant pi clc = clear the screen clear = clear memory clear varname = clear specific variable xbasc() = erase the previous plot Differences between Matlab and Scilab

(-1+2+3)*5 2/3 //The four arithmetic operations


= 19.33

2^3 // Means 2 to the power 3.


=8

%pi // The mathematical constant pi


= 3.1415

exp(sin(%pi/2)) //The usual functions are provided log, log10, cos, tan, asin,
= 2.7182818

exp element-wise exponential


Calling sequence: exp(X) Parameters

Page 1 of 7

X : scalar, vector or matrix with real or complex entries.

Description exp(X) is the (element-wise) exponential of the entries of X.

%e //The mathematical constant e


Note: Scilab does all calculations correct only to about 16 significant decimal digits. This is enough accuracy for most purposes. Usually only 5 significant digits are displayed on the screen. Ex. %pi = 3.1415927 22/7 //pi is not the same as 22/7 = 3.1428571 11*(15/11)-15 //This shows there is round off error when scilab uses fractions. = 1.776D-15 cos(%pi/3) //These are familiar trigo functions = 0.5 sin(%pi/6) //These are familiar trigo functions = 0.5 Variable Scilab also uses variables to store intermediate answers. A variable can have almost any name, but is must begin with a letter. - Scilab is a case-sensitive language. Ex. X = 2+3 Y = 4+5 result = X/Y ; - echo off, suppress unwanted output. Ex. p = 2+3; q= 3+5; ratio = p/q = 0.5555556 >> A number of commands can be placed on the one line. Use comma (,) or a semicolon (;) Ex.

Page 2 of 7

p1 = 2+3 ; q1 = x+4, ratio1 = p1/q1 q1 = 9 ratio1 = 0.5555556 >>Parentheses can be used to make expressions clearer. Ex. ratio = (2+3)/(x+4) Complex Numbers - Scilab handles complex numbers as easily as real numbers - the variable %i stands for 1 Ex. x=2+3*%i, y=1-1*%i x = 2 + 3i y=1i z1= x-y, z2 = x*y, z3 = x/y z1 = 1 + 4 i z2 = 5 + i z3 = -0.5 + 2.5i abs(x) = 3.6055513 real(x) =2 imag(x) =3 sin(x) = 9.1544991 4.168907i exp(%pi * %i ) + 1 = 1.225D-16i

PLOTTING LINES AND DATA Page 3 of 7

Ex. Xk Yk

This section shows how to produce simple plots of lines and data. .5 .1 .7 .2 .9 .75 1.3 1.5 1.7 2.1 1.8 2.4

x=[.5 .7 .9 1.3 1.7 1.8] y=[.1 .2 .75 1.5 2.1 2.4] plot2d(x,y, style=-1) Ex. Y1 = 2X + 4 Y2 = x-2 x1 = [0: 0.5: 2]; x2 = [3: 0.5: 5]; y1 = (2*x1+4); y2 = (x2 2); plot (x1, y1) plot (x2, y2) plot (x1, y1, x2, y2) 0 <= x1 <=2 3 <= x2 <=5

MATRICES AND VECTORS


Although SciLab is a useful calculator, its main power is that it gives a simple way of working with matrices and vectors. Matrix Shortcuts a = eye(3,3) b = ones(4,4) c = diag([ 1 2 3 4]) d = rand(3,3) e = [1:5] f = [1:3; 4:6; 7:9] g = [1:0.1:5] h = linspace(-10, 10, 20)

linspace syntax: linspace(x1, x2,n] where: x1, x2 : real or complex scalars n : integer (no of values) default = 100

Page 4 of 7

Displaying matrix data a = [1,2,3; 4,5,6; 7,8,9]; // given data a(1,1) =1 a(:, 1) // : is used to denote all entries = 1 4 7 a(2, :) = 4 5 6 a([1 2], [1 2]) = 1 2 4 5 a([2 3], : ) = 4 5 7 8 a([1 2],[2 3]) = 2 3 5 6 MATRIX MANIPULATION + * / \ ^ .* ./ .^ addition subtraction multiplication division left division power transpose array multiply array division array power Subtraction of Matrices D=A D= 0 3 4 B -1 -2 3 2 2 2 6 9 //a([r1, r2], [c1, c2])

Addition of Matrices A= 1 4 7 2 5 8 3 6 9

B= 1 3 1 E = B-A

Page 5 of 7

1 3

7 5

4 7

C=A+B C= 2 5 5 12 10 13 F = 3*A F = 3 6 12 15 21 24 H = A H = 1 2 3

E= 0 -3 -4

1 2 -3

-2 -2 -2

4 10 16 G = 2*B G = 2 6 2 14 6 10 I = B I= 1 3 1

9 18 27

2 8 14

4 5 6

7 8 9

1 7 4

3 5 7

Matrix Multiplication A= [1 2 3; 4 5 6]; B = [2 4 6 8; 1 2 3 4; 1 3 5 7] C = A*B C= 7 19

Array Multiplication A = [2 4 6 8; 2 3 1 4] B = [1 2 3 4; 2 3 1 4] C = A.*B C= 2 8 4 9

17 44

27 69

37 94

18 1

32 16

C = B*A ERROR! Inconsistent multiplication C = A.*B ERROR! Inconsistent multiplication

C = A*B ERROR! Inconsistent multiplication

Matrix Division I

Page 6 of 7

A = [2 4 6 8; 2 4 6 8; 1:4; 5:8] B = [1 5 1 4; 1 8 3 9; 1 7 9 2; 1 0 5 9] C = A/B C= 1.6354 1.6354 0.8177 6.8385

Inverse of Matrix C = A*inv(B) C= 1.6354 -0.7500 1.6354 -0.7500 0.8177 -0.3750 6.8385 -3.8750 Left Division Given: -x1+ x2 + 2x3 = 2 3x1- x2+ x3 = 6 -x1 + 3x2 + 4x3 = 4 A = [-1 1 2; 3 -1 1; -1 3 4] B = [2; 6;4] X = inv(A)*B X= 1 -1 2 A\B X= 1 -1 2

-0.7500 -0.7500 -0.3750 -3.8750

0.2604 0.2604 0.1302 0.4010

0.8542 0.8542 0.4271 1.6354

0.2604 0.2604 0.1302 0.4010

0.8542 0.8542 0.4271 1.6354

Page 7 of 7

You might also like