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.