970 likes | 2.92k Views
An Introduction to Scilab. Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7. What is a Scilab?. Scilab is a mathematical software Similar software: Matlab, Mathematica, Octave, Euler Math Toolbox, Maxima, …
E N D
An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7
What is a Scilab? • Scilab is a mathematical software • Similar software: Matlab, Mathematica, Octave, Euler Math Toolbox, Maxima, … • What is special about Scilab: free, highly supported, powerful, many users, … • Home page of Scilab: www.scilab.org • A short introduction of Scilab: http://hkumath.hku.hk~nkt/Scilab/IntroToScilab.html
Using Scilab as a calculator • +, – , * (multiplication), / (division), ^ (power) Examples: • > (12.34 + 0.03) / (2.8 – 1.2 * 3) • > 2^3 or 2*2*2 • > 2^– 3 • > 2^100 • > ans^(1/100)
Using Scilab as a calculator (2) • Commonly used functions: cos, sin, tan, acos, asin, atan, sqrt, exp, log, log10 • Solving quadratic equation x^2 – x+1=0: > a = 1, b = – 1, c = 1 > (– a + sqrt(b^2 – 4*a*c))/(2*a) > (– a – sqrt(b^2 – 4*a*c))/(2*a) • A smarter way to find roots of polynomials: > p = poly([1 –1 1],"x","coeff") > roots(p)
Using Scilab as a calculator (3) • special constants: %i, %pi, %e > tan(%pi / 4) > %e ( = exp(1) ) > (1+%i)*(1--%i) • Learning how to use Scilab and getting help: Click on “?” on menu > help command See documentation on Scilab website
Vectors and matrices in Scilab • Data types: (real or complex) numbers, vectors, matrices, polynomials, strings, functions, … • Vectors in Scilab: > x = [0 1 2 – 3] > y = [2; 4; 6; 8] > z = [1 2 3 4] ’ • ’ is conjugate transpose of a matrix > 3*x, y+z, y–z > x+y, x+1
Vectors and matrices in Scilab (2) • Matrices in Scilab: > A = [0 1 0 1; 2 3 –4 0] > B = A ’ > A * y, x * B, A * B, B * A, (B*A)^2 • Special matrices (and vectors): > ones(2,3), zeros(1,2), eye(3,3) > rand, rand(3,2) • Empty vector or matrix: > a = [ ] • Building matrix by blocks: > C = [A 2*A], x = [9 x 7], a = [a 1]
Solving linear equations • 3 x1 + 2 x2 – x3 = 1 x1 + x3 = 2 2 x1 – 2 x2 + x3 = – 1 • To solve the above system of linear equations: > A = [3 2 – 1 ; 1 0 1; 2 – 2 1] > b = [1 2 – 1]’ > x = inv(A)*b (inv is inverse of a matrix) > x = A \ b • Important remark: theoretically it does not make sense to divide something by a matrix!
The colon “:” operator • > 1:10, 1:100, xx = 1:100; • Using “;” to suppress answer output • > sum(xx) • > 1:2:10, –3:3:11, 4:–1:1, 2:1:0, • > t = 0: 0.1: 2*%pi > y = sin(t) > plot(t,y), plot(t,sin(t),t,cos(t)) • Task 1: plot the straight lines y = x +1 and y = exp(x) on the same graph, from x = – 2 to x = 2
Elements of vectors and matrices • Example > v = rand(4,1) > v(1), v(3), v([2 4]), v(4:-1:1), v($) • “$” means the last entry • Example > A = [1 2 3 4 5; 6 7 8 9 10] > A(2,3), A(1,:), A(:, 2), A(:, [4 2])
Exercises • Task 2: simulate tossing of a coin: 0 = head, 1 = tail. functions to use: rand, round, … • Task 3: simulate tossing of 100 coins
Exercises (2) • Task 4: simulate throwing 3 dices, each dice has outcome from 1 to 6 with equal probabilities; functions to use: rand, floor, ceil, … • Task 5 (challenging!): simulate tossing a coin 100 times and find the longest run of consecutive H’s or T’s in the resulting sequence; functions to use: diff, find, max,
Programming in Scilab • Click on menu bar to open Scipad; then write your scilab function file. • Format of a function: function [out1, out2, ...] = name(in1, in2, ...) (body of function definition; may have many lines) endfunction • One file may contain more than one function. • To use the functions, you must load the function file by choosing File -> Execute the file from the menu.
Programming in Scilab (2) • A simple function to find the n-th term of the Fibonnaci sequence 0, 1, 1, 2, 3, 5, 8, 13, 21, … • function k = fibo(n) if n == 1, k = 0; elseif n==2, k = 1; else k = fibo(n-1) + fibo(n-2); end endfunction • Save the file as fibo.sci (or any other file name). • Execute it from Scilab menu bar • Try, say: > fibo(5), fibo(2), fibo(10), fibo(100)
Programming in Scilab (3) • An improved programme: function K = fibonacci(n) //function K = fibonacci(n) //Gives the n-th term of the Fibonacci sequence ,1,1,2,3,5,8,13,... if n==1, K = 0; elseif n==2, K = 1; elseif n>2 & int(n)==n // check if n is an integer greater than 2 K = fibonacci(n-1) + fibonacci(n-2); else disp('error! -- input is not a positive integer'); end endfunction
Programming in Scilab (4) • Programming Task (challenging!): write a programme to automate Task 5, which is to perform the following experiment m times. The experiment is to simulate tossing a coin n times and find the longest run (k) of consecutive H’s or T’s in the resulting sequence. • For each time you do the experiment, you’ll get a number k. Therefore you should get m numbers k1, k2, …, km at the end. • Inputs of the function are m, n; output is a vector k = [ k1 k2 … km].
Recap We have discussed and learned the following: • What Scilab is • Basic usage of Scilab (as a calculator) • Vectors and Matrices in Scilab • Solving linear equations • Simulation of some random events • Basic Scilab programming