Scilab - Dipartimento di Informatica

Scilab
Corso di Informatica
CdL: Chimica
Introduzione a Scilab - Vettori
Claudia d'Amato
[email protected]
Introduzione
 Scilab



Ambiente matematico e di simulazione
numerica
sviluppato per la realizzazione di sistemi di
controllo
distribuito gratuitamente
 Permette

operazioni di base su matrici



la manipolazione di matrici
concatenazione, trasposizione, somma,
moltiplicazione, ...
funzioni di libreria per calcoli complessi
possibilità di definire nuove funzioni

ambiente di programmazione
Avvio di Scilab
Tipi di Dati
 Matrice n-dimensionale (di reali, complessi,
caratteri, booleani, strutture più complesse …)
 Lista (di svariati tipi di dati)
 Stringa
 Booleano
 Polinomio
 In
SCILAB non esistono dichiarazioni di
tipo (o dimensioni nel caso di matrici)

SCILAB alloca direttamente la memoria
necessaria ogni volta che si dichiara o si
modifica una variabile
Avvio modalità console
 Avviare l'applicazione Scilab
 Le variabili sono case-sensitive
 Il nome di una variabile deve
cominciare con una lettera e può contenere
lettere, numeri, “_”
 Assegnare un valore ad una variabile


utilizzare l'istruzione di assegnamento al
prompt dei comnadi
Le istruzioni di assegnamento in Scilab
prendomo la forma

variabile = valore o espressione
Esercizi: semplici operazioni
 a = 3.2 <return>
 b = 6.4 <return>
 a + b <return>
 a – b <return>
 a * b <return>
 a / b <return>
 a ^ b <return>
 who <return>

restituisce la lista delle variabili attive
Costanti speciali
 SCILAB ha un numero di costanti speciali






%i unità immaginaria
%pi pi greca
%e base del log naturale
%nan not-a-number
%t valore booleano vero
%f valore booleano falso
Esercizi
 Eseguire le seguenti istruzioni







%i <return>
%pi <return>
%e <return>
%inf <return>
%nan <return>
%t <return>
%f <return>
I commenti
 I commenti in Scilab sono rappresentati dal
doppio slash //
 Esempio

scrivere la seguente istruzione
a = 4.5 // ridefinizione di a <return>
 Scilab restituisce il valore 4.5 ed ignora il commento
dopo //

Scalari
 Gli scalari

reali, logici, stringhe, polinomi, razionali, ...
 Esempi





a = 2 // costante reale <return>
2 > 1 // costante booleana <return>
'mionome' // stringa <return>
r = poly(1.,'x') // polinomio con variabile x e
// radice in 1.0 <return>
q = y/r
// espressione razionale <return>
Semplici operazioni scalari
 a = 2 <return>
 b = 3 <return>
 Save a <return> //salva a in file di nome a
 Save nomeFile, a <return>
 Save nomeFile <return>
//salva tutte le
var della sessione corrente in nomeFile
 clear a <return> // elimina la var. a
 a <return>
b <return>
 load a <return>
a <return>
 exp(a) + exp(b) <return> // e^a + e^b
 sin(a*%pi/b) <return>
Vettori: definizione esplicita
 Per
definire vettori in modo esplicito:
usare le parentesi quadre e separare
gli elementi con delle virgole o degli
spazi (vettore riga)

 Il

v = [-1. , 2. , %pi] <return>
vettore trasposto si ottiene con '
v' <return>
A (nxm)
A'=AT
A' (mxn)
a'ij = aji
Vettori ad incremento
costante...
 E' possibile creare un vettore specificando il
valore iniziale, un incremento (passo) e il
valore finale



x = -10.0 : 0.1: 10; <return>
sintassi:
nomeVar = valIniziale:incremento:valFinale
Se il passo non è specificato l'incremento è di
default posto uguale a 1

x = -10:10

...Vettori ad incremento
costante
Se l'incremento è negativo e/o il limite è minore
del valore iniziale si ottiene vettore vuoto
 --> i = 3:-1:4
i = []
 -->i = 1:0
i = []
 r = 1: -3: 10
r=[]
 r = 10: -3: 1
r = 10 7 4 1
Vettore per Decomposizione



per inserire un vettore riga x ad n componenti
ripartiti nell'intervallo [inf sup]
 --> x = linspace(0,1,11)
x = 0. 0.1. 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.
 --> x = linspace(0,1,11)' //crea vett. colonna
Sintassi: [v]=linspace(x1,x2 [,n])
 v = Vettore riga, x1,x2 = risp. Lim. Inf. e Sup
dell'intervallo, n = numero di partizioni
dell'intervallo (valore di default = 100)
linspace(x1,x2) genera un vettore riga di n punti
linearmente distribuiti alla stessa distanza
nell'intervallo [x1, x2]
Vettore Trasposto e Funzioni
 memorizzare il vettore riga come vettore
colonna

xt = x'
 Applicare una funzione ad un vettore

y = sin(x*%pi/10) <return>
Vettore colonna
 Per definire un vettore colonna usare uno
dei seguenti modi


w = [1 ; 2; -1; -2] <return> oppure
w=
[1 <return>
2 <return>
-1 <return>
-2] <return>
 Le colonne sono separate da ritorni a capo
o “;”
Operazioni tra Vettori...
 Visualizzare i vettori x,y

plot(x,y) <return>
 Dati u=[-1,2,1] e v=[5,10,0] eseguire:





u + v <return>
u – v <return>
u * v <return>
u * v' <return>
u' * v <return>
//err per dim vettori
//no err, dim compatibili
//no err, dim compatibili
...Operazioni tra Vettori








--> x = linspace(0,1,5)'
--> y = (1:5)'
--> p = y' *x
p = 10.
--> P = y*x'
// matrice (5,5)
--> P / 0.25
// divisione per uno scalare
--> P^2
// elevamento a potenza
--> sqrt(P)
// radice quadrata
--> exp(P)
Estrazione Elementi da Vettore
 Per estrarre gli elementi dal vettore



u(3) <return>
// terzo elemento
u($) <return>
// ultimo elemento
u(2) + v(1) <return>
Vettori: Elementi
 Gli elementi di un vettore possono essere di
qualsiasi tipo

--> x = [1 sin(0.7*%pi) sqrt(2) 1+2*(4+3)/5]

x = [1 o.8090170 1.4142136 3.8]
 --> x(4)

Ans = 3.8
 --> x(6) = sin(x(1))

Ans =
x = [1 sin(0.7*%pi) sqrt(2) 1+2*(4+3)/5 0
0.8414710]
 Scilab ha automaticamente adattato il vettore alla
nuova situazione aggiungendo 0 nel valore x(5) non
ancora assegnato
Esempi
 Se terminiamo una istruzione con il
simbolo “;” il risultato non viene
visualizzato a video
 Esempio:




--> b = [2 10 44 190];
definisce il vettore riga b
Dato il comando
--> b
la risposta di Scilab sarà:
b=
2.
10.
44.
190.