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