for i=x - ETH Zürich

advertisement
851-0585-04L – Modelling and Simulating
Social Systems with MATLAB
Lesson 1
© ETH Zürich |
Anders Johansson and Wenjian Yu
2010-02-22
Lesson 1 - Contents
 Introduction
 MATLAB environment
 What is MATLAB?
 MATLAB basics:

Variables and operators
 Data structures
 Loops and conditional statements

Scripts and functions
 Exercises
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
2
Modelling and Simulating Social Systems
with MATLAB
Weekly lecture with computer exercises. The two
hours will be split into 30 minutes lecture and 60
minutes exercises.
We will put the lecture slides and other material
on the web page: www.soms.ethz.ch/matlab
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
3
Aims of the course
 Learning the basics of MATLAB.
 Learning how to implement models of various
social processes and systems.
 In the end of the course, all students (in pairs)
should hand in a Seminar Thesis describing the
implementation of a social-science model. The
thesis should be about 20 pages long (including
figures and source code) and be accompanied
by a 10-minutes presentation.
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
4
Seminar thesis
Studying a
scientific paper
2010-02-22
Reproducing
results in MATLAB
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
Writing a report
and giving a talk
5
Projects from previous semesters
Sugarscape
Civil violence
Group dynamics
Trust
Facebook social
networks
Space syntax
Pedestrian dynamics Cycling strategies
Tumour growth
Segregation
Cancer
Traffic dynamics
Swarms
Sailing strategies
Migration
Flocks
Cockroaches
Size of wars
Civil war
Queuing models
Synchronized
clapping
Game theory
tournament
Game theory
Language formation
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
6
Contents of the course
 The two first lectures will be spent on introducing
the basic functionality of MATLAB: matrix
operations, data structures, conditional
statements, statistics, plotting, etc.
 In the later lectures, we will introduce various
modeling approaches from the social sciences:
dynamical systems, cellular automata, game
theory, networks, multi-agent systems, …
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
7
Contents of the course
Introduction to
MATLAB
22.02.
01.03.
08.03.
15.03.
22.03.
29.03.
Working on
projects
(seminar
theses)
12.04.
26.04.
03.05.
10.05.
17.05.
31.05.
2010-02-22
Introduction to
social-science
modeling and
simulation
Handing in seminar
thesis and giving a
presentation
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
8
MATLAB
 Why MATLAB?
Quick to learn, easy to use, rich in functionality,
good plotting abilities.
 MATLAB is commercial software from The
MathWorks, but there are free MATLAB clones
with limited functionality (octave and Scilab).
 MATLAB can be downloaded from ides.ethz.ch
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
9
MATLAB environment
 Command window
- Where the
user enters
commands.
- Where
MATLAB
displays its
results.
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
10
MATLAB environment
 Command History
- Store the
typed
commands.
- A double click
on a line
execute it on
the Command
window.
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
11
MATLAB environment
 Directory and workspace window
- Current
directory shows
local hard
drive.
- Workspace
displays current
variables and
their value.
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
12
What is MATLAB?
 MATLAB derives its name from matrix laboratory
 Interpreted language


2010-02-22
No compilation like in C++ or Java
The results of the commands are immediately
displayed
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
13
Overview - What is MATLAB?
 MATLAB derives its name from matrix laboratory



2010-02-22
Matrices
Vectors
Scalars
x11 x12 x13
x21 x22 x23
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
14
Overview - What is MATLAB?
 MATLAB derives its name from matrix laboratory



Matrices
Vectors
Scalars
x11
x11 x12 x13
x12
x13
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
15
Overview - What is MATLAB?
 MATLAB derives its name from matrix laboratory



2010-02-22
Matrices
Vectors
Scalars
x11
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
16
Overview - What is MATLAB?
 MATLAB derives its name from matrix laboratory


Matrices
Vectors
Scalars
x111 x121 x131

Multi-dimensional
x211 x221 x231

2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
17
Pocket calculator
 MATLAB can be used as a pocket calculator:
>> 1+2+3
ans=
6
>> (1+2)/3
ans=
1
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
18
Variables and operators
 Variable assignment is made with ‘=’
>> num=10
num =
10
 Variable names are case sensitive:

Num, num, NUM are all different to MATLAB
 The semicolon ‘;’ cancel the validation display
>> B=5;
>> C=10*B
C =
50
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
19
Variables and operators
 Basic operators:



+ - * / : addition subtraction multiplication division
^ : Exponentiation
sqrt() : Square root
>> a=2;
>> b=5;
>> c=9;
>> R=a*(sqrt(c) + b^2);
>> R
R =
56
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
20
Data structures: Vectors
 Vectors are used to store a set of scalars

Vectors are defined by using square bracket [ ]
>> x=[0 2 4 10]
x =
0 2 4 10
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
21
Data structures: Defining vectors
 Vectors can be used to generate a regular list of
scalars by means of colon ‘:’

n1:k:n2 generate a vector of values going from n1 to n2
with step k
>> x=0:2:6
x =
0 2 4 6

The default value of k is 1
>> x=2:5
x =
2 3 4 5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
22
Data structures: Accessing vectors
 Access to the values contained in a vector

x(i) return the ith element of vector x
>> x=1:0.5:3;
>> x(2)
ans =
1.5

x(i) is a scalar and can be assigned a new value
>> x=1:5;
>> x(3)=10;
>> x
x =
1 2 10 4 5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
23
Data structures: Size of vectors
 Vectors operations

The command length(x) return the size of the vector x
>> x=1:0.5:3;
>> s=length(x)
s =
5

x(i) return an error if i>length(x)
>> x=1:0.5:3;
>> x(6)
??? Index exceeds matrix dimensions.
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
24
Data structures: Increase size of vectors
 Vectors operations

Vector sizes can be dynamically increased by
assigning a new value, outside the vector:
>> x=1:5;
>> x(6)=10;
>> x
x =
1 2 3 4 5 10
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
25
Data structures: Sub-vectors
 Vectors operations


Subvectors can be addressed by using a colon
x(i:j) return the sub vector of x starting from the ith
element to the jth one
>> x=1:0.2:2;
>> y=x(2:4);
>> y
y =
1.2
2010-02-22
1.4
1.6
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
26
Data structures: Matrices
 Matrices are two dimensional vectors

Can be defined by using semicolon into square
brackets [ ]
>> x=[0 2 4 ; 1 3 5 ; 8 8 8]
x
0
1
8
=
2 4
3 5
8 8
>> x=[1:4 ; 5:8 ; 1:2:7]
x
1
5
1
2010-02-22
=
2 3 4
6 7 8
3 5 7
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
27
Data structures: Matrices
 Accessing the elements of a matrix


x(i,j) return the value located at ith line and jth column
i and j can be replaced by a colon ‘:’ to access the
entire line or column
>> x=[0 2 4 ; 1 3 5 ; 8 8 8]
x
0
1
8
=
2 4
3 5
8 8
>> y=x(2,3)
y =
5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
28
Data structures: Matrices
 Access to the values contained in a matrix


x(i,j) return the value located at ith line and jth column
i and j can be replaced by a colon ‘:’ to access the
entire line or column
>> x=[0 2 4 ; 1 3 5 ; 8 8 8]
x
0
1
8
=
2 4
3 5
8 8
>> y=x(2,:)
y =
1 3 5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
29
Data structures: Matrices
 Access to the values contained in a matrix


x(i,j) return the value located at ith line and jth column
i and j can be replaced by a colon ‘:’ to access the
entire line or column
>> x=[0 2 4 ; 1 3 5 ; 8 8 8]
x
0
1
8
=
2 4
3 5
8 8
>> y=x(:,3)
y =
4
5
8
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
30
Matrices operations: Transpose
 Transpose matrix


Switches lines and columns
transpose(x) or simply x’
>> x=[1:3 ; 4:6]
x =
1 2 3
4 5 6
>> transpose(x)
x
1
2
3
=
4
5
6
>> x’
x
1
2
3
=
4
5
6
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
31
Matrices operations
 Inter-matrices operations


C=A+B : returns C with C(i,j) = A(i,j)+B(i,j)
C=A-B : returns C with C(i,j) = A(i,j)-B(i,j)
A and B must have the same size, unless one of them is a scalar
>> A=[1 2;3 4] ; B=[2 2;1 1];
>> C=A+B
C =
3 4
4 5
>> C=A-B
C =
-1 0
2 3
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
32
Matrices operations: Multiplication
 Inter-matrices operations

C=A*B is a matrix product. Returns C with
C(i,j) = ∑ (k=1 to N) A(i,k)*B(k,j)
N is the number of columns of A which must equal the
number of rows of B
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
33
Element-wise multiplication
 Inter-matrices operations

C=A.*B returns C with C(i,j) = A(i,j)*B(i,j)
A and B must have the same size, unless one of them is a scalar
>> A=[2 2 2;4 4 4];
>> B=[2 2 2;1 1 1];
>> C=A.*B
C =
4 4 4
4 4 4
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
34
Element-wise division
 Inter-matrices operations

C=A./B returns C with C(i,j) = A(i,j)/B(i,j)
A and B must have the same size, unless one of them is a scalar
>> A=[2 2 2;4 4 4];
>> B=[2 2 2;1 1 1];
>> C=A./B
C =
1 1 1
4 4 4
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
35
Matrices operations: Division
 Inter-matrices operations

x=A\b returns the solution of the linear equation A*x=b
A is a n-by-n matrix and b is a column vector of size n
>> A=[3 2 -1; 2 -2 4; -1 0.5 -1];
>> b=[1;-2;0];
>> x=A\b
x =
1
-2
-2
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
36
Matrices: Creating
 Matrices can also created by these commands:
rand(n, m)
a matrix of size n x m, containing random
numbers [0,1]
zeros(n, m), ones(n, m)
a matrix containing 0 or 1 for all elements
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
37
The for loop
 Vectors are often processed with loops in order
to access and process each value, one after the
other:

Syntax :
for i=x
….
end

With
- i the name of the running variable
- x a vector containing the sequence of values assigned to i
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
38
The for loop

MATLAB waits for the keyword end before computing
the result.
>> for i=1:3
i^2
end
i =
1
i =
4
i =
9
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
39
The for loop

MATLAB waits for the keyword end before computing
the result.
>> for i=1:3
y(i)=i^2;
end
>> y
y =
1
2010-02-22
4
9
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
40
Conditional statements: if
 The keyword if is used to test a condition

Syntax :
if (condition)
..sequence of commands..
end
 The condition is a Boolean operation
 The sequence of commands is executed if the tested
condition is true
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
41
Logical operators
 Logical operators


<,>
==
&&
||
~

(1 stands for true, 0 stands for false)



2010-02-22
: less than, greater than
: equal to
: and
: or
: not ( ~true is false)
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
42
Conditional statements: Example
 An example:
>> threshold=5;
>> x=4.5;
>> if (x<threshold)
diff = threshold - x;
end
>> diff
diff =
0.5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
43
Conditional statements: else
 The keyword else is optional

Syntax :
if (condition)
..sequence of commands n°1..
else
..sequence of commands n°2..
end
>> if (x<threshold)
diff = threshold - x ;
else
diff = x – threshold;
end
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
44
Scripts and functions
 External files used to store and save sequences
of commands.
 Scripts:


Simple sequence of commands
Global variables
 Functions:

Dedicated to a particular task

Inputs and outputs

Local variables
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
45
Scripts and functions
 Should be saved as .m files :
From the
Directory Window
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
46
Scripts and functions
 Scripts :



Create .m file, e.g. sumVector.m.
Type commands in the file.
Type the file name, .e.g sumVector, in the command
window.
sumVector.m
%sum of 4 values in x
>> sumVector
x=[1 3 5 7];
R=x(1)+x(2)+x(3)+x(4);
R
R =
16
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
47
Scripts and functions
 Make sure that the file is in your working
directory!
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
48
Scripts and functions
 Functions :


Create .m file, e.g. absoluteVal.m
Declare inputs and outputs in the first line of the file,
function [out1, out2, …] = functionName (in1, in2, …)
e.g. function [R] = absoluteVal(x)

Use the function in the command window
functionName(in1, in2, …)
e.g. absoluteVal(x)
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
49
Scripts and functions
absoluteVal.m
function [R] = absoluteVal(x)
% Compute the absolute value of x
if (x<0)
R = -x ;
else
R = x ;
end
>> A=absoluteVal(-5);
>> A
A =
5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
50
Scripts and functions
absoluteVal.m
function [R]= absoluteVal(x)
% Compute the absolute value of x
if (x<0)
R = -x ;
else
R = x ;
end
>> A=absoluteVal(-5);
>> A
A =
5
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
51
Exercise 1
 Compute:
a)
c)
100
18  107
5  25
10
 (i
2
b)
i
i 0
 i)
i 5
 Slides/exercises: www.soms.ethz.ch/matlab
(use Firefox!)
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
52
Exercise 2
 Solve for x:
2 x1  3x2  x3  4 x4  1
2 x1  3x2  3x3  2 x4  2
2 x1  x2  x3  x4  3
2 x1  x2  2 x3  5 x4  4
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
53
Exercise 3
 Fibonacci sequence: write a function which
compute the Fibonacci sequence of a given
number n and return the result in a vector.
 The Fibonacci sequence F(n) is given by :
2010-02-22
A. Johansson & W. Yu / andersj@ethz.ch yuwen@ethz.ch
54
Download