an introduction to scilab tsing nam kiu 丁南僑 department of mathematics the university of hong...

17
An Introduction to Scilab Tsing Nam Kiu 丁丁丁 Department of Mathematics The University of Hong Kong 2009 January 7

Upload: tracy-spencer

Post on 25-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

An Introduction to Scilab

Tsing Nam Kiu 丁南僑Department of Mathematics

The University of Hong Kong

2009 January 7

Page 2: 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~n

kt/Scilab/IntroToScilab.html

Page 3: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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)

Page 4: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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)

Page 5: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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

Page 6: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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

Page 7: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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]

Page 8: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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 s

ense to divide something by a matrix!

Page 9: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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

Page 10: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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])

Page 11: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

Exercises

Task 2: simulate tossing of a coin:

0 = head, 1 = tail.

functions to use: rand, round, …

Task 3: simulate tossing of 100 coins

Page 12: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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,

Page 13: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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 fi

le by choosing File -> Execute the file from the menu.

Page 14: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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)

Page 15: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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 2K = fibonacci(n-1) + fibonacci(n-2);

else disp('error! -- input is not a positive integer'); end

endfunction

Page 16: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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 k

1, k2, …, km at the end. Inputs of the function are m, n; output is a vector

k = [ k1 k2 … km].

Page 17: An Introduction to Scilab Tsing Nam Kiu 丁南僑 Department of Mathematics The University of Hong Kong 2009 January 7

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