|
Wiki
Tools
Categorie
Help
edit SideBar
|
|
Utenti.IntroduzioneAlMatlab History
Hide minor edits - Show changes to output
Changed line 66 from:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, mentre con il ''format long e'' si impone l'utilizzo della notazione esponenziale.
to:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, e si impone l'utilizzo della notazione esponenziale.
Changed line 66 from:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, e si impone l'utilizzo della notazione esponenziale.
to:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, mentre con il ''format long e'' si impone l'utilizzo della notazione esponenziale.
Changed line 66 from:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, mentre con il ''format long e'' si impone l'utilizzo della notazione esponenziale.
to:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, e si impone l'utilizzo della notazione esponenziale.
Changed line 1 from:
(:title Introduzione a Matlab:)
to:
(:title Introduzione al Matlab:)
Changed lines 3-4 from:
%titolo%''':: Introduzione a Matlab ::'''
to:
%titolo%''':: Introduzione al Matlab ::'''
Added line 59:
Added line 187:
Added line 200:
Added line 212:
Added line 228:
Added line 366:
Added line 379:
Added line 419:
Added line 426:
Added line 433:
Added line 445:
Added line 454:
Added line 467:
Added line 559:
Changed line 483 from:
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#fbf3ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 496 from:
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#fbf3ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 505 from:
>>left bgcolor=#f6f6ff width=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#fbf3ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 514 from:
>>left bgcolor=#f6f6ff width=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#fbf3ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 533 from:
>>left bgcolor=#f6f6ff width=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#fbf3ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 505 from:
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#f6f6ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 514 from:
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#f6f6ff width=auto border='2px solid #cccccc' padding=5px<<
Changed line 533 from:
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<<
to:
>>left bgcolor=#f6f6ff width=auto border='2px solid #cccccc' padding=5px<<
Deleted lines 2-4:
(:include Servizi.DaModificare:)
->[[!'''DaModificare''']]: manca la parte di programmazione
Added line 20:
# [[#m9|Scrivere un programma]]
Added lines 473-501:
[[#m9]] !!Scrivere un programma !!!M-files Abbiamo detto nel primo capitolo che Matlab può essere considerato anche linguaggio di programmazione, che attraverso l'uso di strutture sintattiche tradizionali consente di sfruttare le funzioni e gli operatori visti finora per codificare algoritmi di varia complessità.
I programmi vengono scritti nei cosiddetti '''m-files''', chiamati così per la loro estensione '''.m'''. Ogni m-files contiene una serie di istruzioni scritte dall'utente, ed è caratterizzato da un nome che dal momento del salvataggio in poi lo identificherà come un comando Matlab a tutti gli effetti. Se quindi creo un programma e lo chiamo "guido", per eseguirlo basterà scrivere [@guido@] nel prompt e premere il tasto invio. A questo proposito alcune dovute osservazioni: * posso eseguire i miei programmi solo se si trovano nella cartella corrente * Matlab ha una precedenza di esecuzione, e in particolare le variabili nel workspace hanno priorità sulle funzioni. Se quindi ho una variabile con lo stesso nome di un m-files, quello che apparirà sullo schermo scrivendo quel nome sarà il contenuto della variabile stessa * se ho creato un programma con lo stesso nome di una funzione predefinita di Matlab, richiamandolo si eseguirà il primo bypassando la seconda
!!!Strutture sintattiche Prima di vedere le principali strutture sintattiche, segnaliamo che per scrivere un commento bisogna iniziare la riga con il carattere di percentuale '''%'''.
!!!!Strutture condizionali: >>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<< [@if condizione1 ... elseif condizione2 ... else ... end@] >><<
Notare che i gruppi di istruzioni non sono racchiusi tra parentesi graffe, ma sono delimitati dalla dichiarazione del blocco e dal comando [@end@]. Volendo si può risparmiare di andare a capo usando la virgola, ma poi si perderebbero i vantaggi dell'indentazione.
!!!!Cicli controllati da un contatore: >>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<< [@for i = limite1:passo:limite2
Added lines 503-563:
end@] >><<
Dove ''passo'' è l'incremento da utilizzare tra i due limiti.
!!!!Cicli controllati da una condizione >>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<< [@while condizione1 ... end@] >><<
!!!Funzioni Tutte le variabili definite in un m-file vengono considerate variabili globali, e quindi contribuiscono ad aumentare l'occupazione della memoria. Per far sì che alcune variabili siano considerate locali si creano le cosiddette '''function''' (funzioni), nella cui definizione si specificano la lista di parametri di output e di input, entrambi opzionali. Di seguito la forma standard utilizzata:
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<< [@function [out1, ... , outn] = nome_funzione(in1, ... , inm) % % commenti % istruzione1 ... istruzionen % assegnazione valori ai parametri di output out1 = valore1; ... outn = valoren; return@] >><<
Notare che il [@return@] è opzionale, e che i commenti scritti dopo la prima riga sono quelli che saranno visualizzati richiamando il comando help seguito dal nome del programma stesso.
Facciamo un esempio: creiamo una funzione per il calcolo del numero di condizionamento di una matrice di Hilber di dimensione data.
>>left bgcolor=#f6f6ffwidth=auto border='2px solid #cccccc' padding=5px<< [@function [cond_hilb] = condhilb(n) % % funzione per il calcolo del numero di condizionamento della matrice di % hilbert di dimensione n % H = hilb(n); cond_hilb = cond(H)
return@] >><<
Che può essere richiamata dalla command window in questo modo: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> condhilb(3)
cond_hilb =
524.0568
ans =
524.0568@] >><<
[[#su|[-'''Torna su'''-]]]
Changed line 2 from:
to:
Added lines 9-24:
>>left bgcolor=#f5f9fc width=320px border='2px solid #cccccc' padding=5px<< %center%'''Indice'''
# [[#m1|Cos'è Matlab]] # [[#m2|Ambiente di lavoro]] # [[#m3|Regole generali (help e variabili)]] # [[#m4|Operazioni su scalari]] # [[#m5|Operazioni su matrici e vettori]] # [[#m6|Funzioni matematiche]] # [[#m7|Salvataggio dei dati]] # [[#m8|Grafici bidimensionali]] >><<
----
[[#m1]]
Added lines 30-32:
[[#su|[-'''Torna su'''-]]]
[[#m2]]
Added lines 46-48:
[[#su|[-'''Torna su'''-]]]
[[#m3]]
Changed lines 55-56 from:
Il linguaggio di Matlab lavora per ''espressioni'', ed è realizzato in modo da convertire queste ultime in '''variabili'''. Ogni espressione può contenere ''operatori'' (+ , - , / , * , ...), ''caratteri speciali'' (% , ! , : , ...), ''funzioni'' e ''nomi di variabili''. In particolare, questi ultimi possono essere formati da lettere e cifre, sono ''case sensitive'' e devono iniziare con una lettera.
to:
Il linguaggio di Matlab lavora per ''espressioni'', ed è realizzato in modo da convertire queste ultime in '''variabili'''. Ogni espressione può contenere ''operatori'' (+ , - , / , * , ...), ''caratteri speciali'' (% , ! , : , ...), ''funzioni'' e ''nomi di variabili''. In particolare, questi ultimi possono essere formati da lettere e cifre, sono ''case sensitive'' e devono iniziare con una lettera.\\ Gli operatori possono essere: * di operazioni elementari, come addizione (+), sottrazione (-), moltiplicazione (*) e divisione (/) * logici, come l'and (&), l'or (|) e il not (~) * relazionali, come il maggiore e il minore (> , <), il maggiore uguale e il minore uguale (>= , <=), l'uguale (==) e il diverso (~=).
Added lines 134-136:
[[#su|[-'''Torna su'''-]]]
[[#m4]]
Added lines 160-162:
[[#su|[-'''Torna su'''-]]]
[[#m5]]
Added lines 316-318:
[[#su|[-'''Torna su'''-]]]
[[#m6]]
Added lines 407-409:
[[#su|[-'''Torna su'''-]]]
[[#m7]]
Added lines 431-433:
[[#su|[-'''Torna su'''-]]]
[[#m8]]
Added lines 469-470:
[[#su|[-'''Torna su'''-]]]
Added lines 339-370:
Per il calcolo delle derivate e degli integrali Matlab fa uso del toolbox ''symbolic'', e richiede come prima cosa che la variabile ''x'' (o chi per essa) sia dichiarata simbolica, così da non essere valutata. Lo si fa con questo comando: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>>syms x@] >><<
A questo punto per il calcolo della derivata si usa il comando [@diff(fun)@], mentre per l'integrale indefinito il comando [@int(fun)@]. Se poi mettiamo un certo numero ''n'' come secondo parametro del comando '''diff''' potremo calcolare la derivata n-esima della funzione. Ad esempio:
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> diff(fun) ans = 2*x+3 >> diff(fun,2) ans = 2 >> int(fun) ans = 1/3*x^3+3/2*x^2-4*x@] >><<
Concludiamo il discorso sulle funzioni segnalando che con il comando [@funtool@] appariranno sull schermo tre finestre: uno che offre una serie di strumenti per manipolare direttamente le funzioni, due per il disegno dei grafici.
%center%Attach:funtool.jpg >><<
Changed lines 305-306 from:
Cosa facciamo se abbiamo una funzione f(x) e vogliamo stamparla a video, calcolarne le soluzioni e magari anche derivate e integrali? Consideriamo ad esempio la funzione ''f(x) = x'^2^' + 2x + 4''. Come prima cosa dobbiamo memorizzarla in una variabile sottoforma di stringa di caratteri, ovvero:
to:
Cosa facciamo se abbiamo una funzione f(x) e vogliamo stamparla a video, calcolarne gli zeri e magari anche derivate e integrali? Consideriamo ad esempio la funzione ''f(x) = x'^2^' + 3x - 4''. Come prima cosa dobbiamo memorizzarla in una variabile sottoforma di stringa di caratteri, ovvero:
Changed lines 308-309 from:
[@>> fun = 'x^2 + 2*x + 4'
to:
[@>> fun = 'x^2 + 3*x - 4'
Changed line 312 from:
to:
Changed line 325 from:
[@>> fplot('x^2 + 2*x + 4',[-10 10])@]
to:
[@>> fplot('x^2 + 3*x - 4',[-10 10])@]
Added lines 327-338:
Data una funzione f, il suo zero è quel valore '''ɑ''' tale che f(ɑ) = 0. Con Matlab è possibile fare un calcolo approssimato degli zeri vicini ad un certo valore ''x0'' utilizzando il comando [@fzero(fun,x0)@], dove ''fun'' è la solita funzione. Ad esempio provando a cercare gli zeri della nostra funzione nell'intorno di 1 dovrei scrivere: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> fzero(fun,1)
ans =
1@] >><<
Risultato effettivamente verificabile guardando il grafico della funzione.\\ Per trovare tutti gli zeri che cadono in un certo intervallo bisognerà modificare leggermente la chiamata del comando ''fzero'' scrivendo [@fzero(fun,[x0 x1])@], dove intuitivamente nel secondo parametro vengono indicati gli estremi dell'intervallo da considerare.
Added line 306:
Added line 316:
Added line 323:
Added line 285:
Added lines 303-323:
!!!Funzioni personalizzate Cosa facciamo se abbiamo una funzione f(x) e vogliamo stamparla a video, calcolarne le soluzioni e magari anche derivate e integrali? Consideriamo ad esempio la funzione ''f(x) = x'^2^' + 2x + 4''. Come prima cosa dobbiamo memorizzarla in una variabile sottoforma di stringa di caratteri, ovvero: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> fun = 'x^2 + 2*x + 4'
fun =
x^2 + 2*x + 4@] >><<
Per stamparla a video dobbiamo utilizzare il comando [@fplot(fun,lims);@], dove ''fun'' è la funzione e ''lims'' è l'intervallo (espresso come vettore di due elementi) che vogliamo considerare. In codice: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> lims = [-10 10]; >> fplot(fun, lims);@] >><<
Due considerazioni. La prima è che ovviamente nessuno ci obbliga a chiamare le due variabili ''fun'' e ''lims'', va bene un nome qualsiasi; la seconda è che volendo avremmo potuto scrivere i parametri funzione e intervallo direttamente all'interno di '''fplot''': >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> fplot('x^2 + 2*x + 4',[-10 10])@] >><<
Changed lines 5-6 from:
->[[!'''DaModificare''']]: ''ci sto lavorando su ora''
to:
->[[!'''DaModificare''']]: manca la parte di programmazione
Changed lines 303-363 from:
!!Il linguaggio di programmazione
to:
!!Salvataggio dei dati Per salvare dati e variabili su disco bisogna utilizzare la seguente sintassi: [@save [nomefile].mat [variabili da salvare separate da uno spazio]@]
Ad esempio se volessi salvare in un file ''var.mat'' le variabili ''e'' e ''H'' esistenti nel mio workspace, dovrei scrivere: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> save var.mat e H@] >><<
Se avessi omesso il nome delle variabili da salvare le avrei automaticamente salvate tutte. Il file .mat è in formato binario, ma potrei dire di salvarlo come file di testo utilizzando come ultimo parametro del comando ''save'' la stringa [@-ascii@].\\ Ad esempio: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> save var.mat e H -ascii@] >><<
Per ricaricare nel workspace tutte le variabili che abbiamo salvato nel file .mat possiamo invece utilizzare il comando '''load''', con la seguente sintassi: [@load [nomefile].mat@].\\ Nel nostro caso, per recuperare le variabili in var.mat dovremo scrivere: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> load var.mat@] >><<
!!Grafici bidimensionali Per realizzare il grafico bidimensionale di una funzione f(x) si utilizza il comando '''plot''', che nella sua forma più semplice ha la seguente sintassi: [@plot(x,y)@] , dove x rappresenta l'intervallo in cui considerare la funzione e y la funzione stessa.
Ad esempio per ottenere il grafico della funzione coseno tra π e -π, dovremo scrivere: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> x = [-pi:0.01:pi]; >> y = cos(x); >> plot(x,y)@] >><<
Dando l'invio sull'ultimo comando apparirà una nuova finestra col grafico.\\ E' possibile effettuare la rappresentazione grafica di più funzioni alla volta semplicemente mettendole in coda nel comando ''plot''. Si capisce meglio con un esempio: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> x = [-pi:0.01:pi]; >> y = cos(x); >> z = sin(x); >> plot(x,y,x,z)@] >><<
Eseguire una seconda volta il comando ''plot'' comporterà la sostituzione dell'ultimo grafico ai precedenti, che di conseguenza andranno perduti. Se non vogliamo che ciò accada possiamo adottare due strategie: * forzare l'apertura di una nuova finestra con il comando '''figure(n)''', dove ''n'' è un numero a scelta; i prossimi ''plot'' saranno automaticamente riferiti ad essa * sovrapporre al grafico preesistente quello nuovo (magari per operare dei confronti) con il comando '''hold on'''. Il comando '''hold off''' disattiva questa modalità
Il comando ''plot'' offre un certo grado di personalizzazione nella realizzazione dei grafici, dando ad esempio la possibilità di scegliere il colore e il tipo di tratteggio delle curva che andrà a disegnare. Queste indicazioni sono passate come parametri del comando subito dopo la coppia di dati x e y. Ad esempio per disegnare la curva del coseno verde e tratteggiata, e quella del seno rossa e a punti linea dovremo scrivere: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> x = [-pi:0.01:pi]; >> y = cos(x); >> z = sin(x); >> plot(x,y,'g--',x,z,'r-.')@] >><< L'elenco di tutti questi parametri si può ottenere dall'help del comando plot.
Ai grafici possono essere associati titoli ed etichette degli assi, che si creano rispettivamente con i comandi: [@title('nome')@], [@xlabel('nomeAscisse')@] e [@ylabel('nomeOrdinate')@].
Concludiamo dicendo che se invece di ''plot'' utilizziamo il comando [@semilogy(x,y)@] (o [@semilogx(x,y)@]), otterremo un grafico in scala logaritmica sull'asse delle ordinate (o ascisse). Intuitivamente col comando [@loglog(x,y)@] adotteremo tale scala per entrambi gli assi.
...
---- [[!Programmazione]]
Changed lines 282-284 from:
* '''vander''', genera la matrice di Vandermonde
...
to:
* '''vander''', genera la matrice di Vandermonde di ordine assegnato
!!Funzioni matematiche Abbiamo detto che le espressioni in Matlab possono contenere operatori, nomi di variabili, caratteri speciali e '''funzioni'''. Di queste ultime, vediamone alcune tra quelle predefinite:
* [@sqrt(x)@]: radice quadrata di x * [@exp(x)@]: e elevato alla x * [@log(x)@]: logaritmo naturale di x * [@log10(x)@]: logaritmo in base 10 di x * [@round(x)@]: arrotondamento * [@fix(x)@]: troncamento * [@sign(x)@]: segno di x, che può valore 1 o -1 * [@sin(x)@] , [@sinh(x)@] , [@asin(x)@]: rispettivamente seno, seno iperbolico e arcseno * [@cos(x)@] , [@cosh(x)@] , [@acos(x)@]: rispettivamente coseno, coseno iperbolico, e arcoseno * [@tan(x)@] , [@tanh(x)@] , [@atan(x)@]: rispettivamente tangente, tangente iperbolica e arctangente
Finora abbiamo considerato x numero reale. Per x numero complesso abbiamo inoltre: * [@real(x)@]: parte reale di x * [@imag(x)@]: parte immaginaria di x * [@conj(x)@]: complesso coniugato di x
!!Il linguaggio di programmazione
Changed line 215 from:
to:
(:table cellpadding=5 cellspacing=5:)
Changed line 217 from:
(:cell bgcolor=#d4e1f0 align=center:) '''operazione'''
to:
(:cell bgcolor=#d4e1f0 width=40% align=center:) '''operazione'''
Changed line 219 from:
(:cell bgcolor=#d4e1f0 align=center:) '''quando si può fare'''
to:
(:cell bgcolor=#d4e1f0 width=20% align=center:) '''quando si può fare'''
Changed line 258 from:
to:
Changed line 261 from:
to:
Changed line 108 from:
to:
Changed line 131 from:
!!!Operazioni su matrici e vettori
to:
!!Operazioni su matrici e vettori
Changed lines 209-284 from:
to:
!!!!Somma, prodotto, divisione, sottrazione Per quanto riguarda le operazioni tra le matrici, non staremo qui a dire quali sono le regole classiche dell'algebra per implementarle. Ci limitiamo a ricordare che tali operazioni sono possibili solo quando le dimensioni delle matrici sono consistenti, quindi non proviamo a moltiplicare una matrice 2x3 con una 9x4, perché Matlab non fa magie.
!!!!Altre operazioni caratteristiche Di seguito un elenco di operazioni caratteristiche per le matrici. Anche in questo caso non spiegheremo il loro significato, ma solo i comandi e i casi in cui è possibile effettuarle.
(:table:) (:cellnr bgcolor=#d4e1f0 align=center:) '''comando''' (:cell bgcolor=#d4e1f0 align=center:) '''operazione''' (:cell bgcolor=#d4e1f0 align=center:) '''esempio''' (:cell bgcolor=#d4e1f0 align=center:) '''quando si può fare''' (:cellnr bgcolor=#f2f6f9:) ' (:cell bgcolor=#f2f6f9:) trasposizione (:cell bgcolor=#f2f6f9:) m' (:cell bgcolor=#f2f6f9:) (:cellnr:) inv() (:cell:) inversione (:cell:) inv(m) (:cell:) matrici quadrate non singolari (:cellnr bgcolor=#f2f6f9:) det() (:cell bgcolor=#f2f6f9:) determinante (:cell bgcolor=#f2f6f9:) det(m) (:cell bgcolor=#f2f6f9:) matrici quadrate non singolari (:cellnr:) rank() (:cell:) rango (:cell:) rank(m) (:cell:) matrici quadrate non singolari (:cellnr bgcolor=#f2f6f9:) diag() (:cell bgcolor=#f2f6f9:) se applicata a una matrice ne estrae la diagonale, mentre se applicata ad un vettore crea una matrice diagonale (:cell bgcolor=#f2f6f9:) diag(m) (:cell bgcolor=#f2f6f9:) (:cellnr:) tril() (:cell:) estrazione parte triangolare inferiore. Se oltre alla matrice su cui lavorare si indica anche un numero intero positivo o negativo come secondo argomento della funzione, è possibile estrarre anche le diagonali che si trovano sopra o sotto la principale considerata (:cell:) tril(m)\\ tril(m,2) (:cell:) (:cellnr bgcolor=#f2f6f9:) triu() (:cell bgcolor=#f2f6f9:) estrazione parte triangolare superiore. Se oltre alla matrice su cui lavorare si indica anche un numero intero positivo o negativo come secondo argomento della funzione, è possibile estrarre anche le diagonali che si trovano sopra o sotto la principale considerata (:cell bgcolor=#f2f6f9:) triu(m)\\ triu(m,-1) (:cell bgcolor=#f2f6f9:) (:cellnr:) abs() (:cell:) se applicata a una matrice reale calcola la matrice dei valori assoluti, mentre se applicata a un numero complesso calcola il suo modulo (:cell:) abs(m) (:cell:) (:cellnr bgcolor=#f2f6f9:) sum() (:cell bgcolor=#f2f6f9:) se applicato a una matrice restituisce un vettore con le somme per colonna degli elementi della matrice stessa, mentre applicato ad un vettore restuituisce la somma (uno scalare) degli elementi (:cell bgcolor=#f2f6f9:) sum(m) (:cell bgcolor=#f2f6f9:) (:cellnr:) max e min (:cell:) se applicati ad un vettore calcolano rispettivamente il massimo e il minimo degli elementi di un vettore, mentre se applicati ad una matrice restituiscono un vettore che contiene il massimo o il minimo per colonne degli elementi della matrice (:cell:) max(m)\\ min (m) (:cell:) (:cellnr bgcolor=#f2f6f9:)cond() (:cell bgcolor=#f2f6f9:)numero di condizionamento in norma 2 (:cell bgcolor=#f2f6f9:)cond(m) (:cell bgcolor=#f2f6f9:) (:cellnr:) eig() (:cell:) autovalori e autovettori (:cell:) [X,D] = eig(m)\\ ovvero: "la funzione restituisce una matrice diagonale D che contiene gli autovalori di m, e una matrice X le cui colonne ne sono gli autovettori" (:cell:) matrici quadrate (:tableend:)
!!!!Generazione di matrici particolari Concludiamo la panoramica dei comandi sulle matrici segnalando alcuni comandi per generare matrici particolari:
* '''eye''', genera la matrice identità di ordine assegnato. Ad esempio: [@eye(3)@] * '''zeros''', genera una matrice nulla di ordine ossegnato, ovvero composta di soli zeri. Ad esempio: [@zeros(2)@] * '''ones''', genera una matrice di ordine assegnato con tutti gli elementi pari a 1. Ad esempio: [@ones(5)@] * '''random''', genera una matrice di ordine assegnato composta di numeri casuali * '''hilb''', genera la matrice di Hilbert di ordine assegnato * '''vander''', genera la matrice di Vandermonde
...
Changed lines 42-43 from:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab di interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, mentre con il ''format long e'' si impone l'utilizzo della notazione esponenziale.
to:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab ad interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, mentre con il ''format long e'' si impone l'utilizzo della notazione esponenziale.
Changed line 87 from:
* '''[ ]''' (parentesi quadre), come delimitatori
to:
* '''[ ]''' (parentesi quadre), per racchiudere tutti gli elementi della matrice
Changed lines 115-116 from:
to:
* utilizzo di parentesi tonde
Added lines 131-207:
!!!Operazioni su matrici e vettori Di seguito vedremo alcune operazioni sulle matrici. Partiremo dalla matrice di partenza:
[@ m = | 1 2 3 | | 4 5 6 |@]
(:table width=100%:) (:cellnr:) !!!!Dimensione della matrice Per conoscere la dimensione di una matrice è sufficiente usare il comando '''size'''.
Nel nostro caso ci viene detto che abbiamo due righe e tre colonne. (:cell width=30%:) >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@ >> size(m)
ans =
2 3@] >><< (:tableend:)
!!!!Estrazione di un elemento Per estrarre un elemento dalla matrice, ad esempio quello sulla seconda riga e terza colonna, si usa la seguente sintassi: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@ >> m(2,3)
ans =
6 @] >><<
!!!!Estrazione di una riga o di una colonna Per estrarre una riga dalla matrice, ad esempio la prima, si usa la seguente sintassi: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@ >> m(1,:)
ans =
1 2 3 @] >><<
Se invece volessimo estrarre una colonna, ad esempio la seconda, dovremmo scrivere: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@ >> m(:,2)
ans =
2 5 @] >><<
Notare l'utilizzo del carattere speciale due punti. Nell'estrazione di elementi da una matrice il due punti rappresenta l'intera riga o l'intera colonna, a meno che non sia delimitato da due valori. Mi spiego meglio. Se nel secondo esempio avessimo voluto estrarre la prima e la seconda colonna avremmo potuto scrivere [@>> m(:,1:2)@] , che si legge così: "per entrambe le righe, estrai tutti gli elementi che si trovano sulle colonne che vanno dalla 1 alla 2".
!!!!Spostamento della matrice in un vettore Per spostare tutti gli elementi della matrice in un vettore si utilizza la seguente sintassi: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@ >> m(:)
ans =
1 4 2 5 3 6@] >><<
Deleted lines 34-35:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab di interpretarle e gestirle correttamente.
Added lines 42-43:
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab di interpretarle e gestirle correttamente. Il formato numerico di default è il ''format short'', che visualizza solo le prime 4 cifre significative di un decimale. Con il ''format long'' si arriva invece a mostrarne 16, mentre con il ''format long e'' si impone l'utilizzo della notazione esponenziale.
Changed lines 57-58 from:
In entrambi i casi abbiamo ottenuto la creazione di una variabile, rispettivamente ''x'' e ''y'', ma solo nel primo caso ci è stato dato un feedback dell'assegnamento.
to:
In entrambi i casi abbiamo ottenuto la creazione di una variabile, rispettivamente ''x'' e ''y'', ma solo nel primo caso ci è stato dato un feedback dell'assegnamento. Se non avessimo specificato la variabile a cui associare il risultato di una determinata operazione, Matlab l'avrebbe automaticamente caricata nella variabile generica ''ans'' (answer). Quando la si utilizza bisogna sempre tenere a mente che non è persistente: se faccio due operazioni diverse senza specificare dove memorizzarle, il secondo risultato salvato in ''ans'' sovrascrive quello precedente.
Changed lines 108-130 from:
to:
!!!Operazioni su scalari Indipendentemente dal fatto che Matlab tratta gli scalari come matrici 1x1, possiamo compiere con essi tutte le operazioni classiche della matematica, ovvero: * addizione, + * sottrazione, - * moltiplicazione, * * divisione (con resto), / * elevamento a potenza, ^
Se non si riesce a far stare l'espressione su un'unica riga si può andare a capo terminandola con i tre punti, ...\\ Ad esempio:
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> x = 40 + 34 + 456 + 234 ... + 3403 + 234
x =
4401
>> @] >><<
Added lines 2-6:
(:include Servizi.DaModificare:)
->[[!'''DaModificare''']]: ''ci sto lavorando su ora''
Changed lines 106-108 from:
Con il comando '''clear''' si cancellano tutte le variabili finora definite e vengono ripristinate quelle di default eventualmente modificate. Se al comando ''clear'' si fa seguire il nome di una variabile verrà cancellata solo lei.
to:
Infine, con il comando '''clear''' si cancellano tutte le variabili finora definite e vengono ripristinate quelle di default eventualmente modificate. Se al comando ''clear'' si fa seguire il nome di una variabile verrà cancellata solo lei.
!!!
Added lines 1-102:
(:title Introduzione a Matlab:) %titolo%''':: Introduzione a Matlab ::'''
!!Cos'è Matlab '''Matlab''' sta per ''Mat(rix) lab(oratory)'' ed è sia un linguaggio di programmazione (interpretato, non si compila) che un ambiente grafico di lavoro; entrambi gli aspetti sono molto integrati tra loro, così da fornire un supporto potente e intuitivo per il calcolo numerico. E' sviluppato dalla ''MathWorks'', utilizza numerose librerie di calcolo (in particolar modo di algebra lineare) ed è considerato uno standard in ambienti universitari e professionali.
Perché "matrix laboratory"? Perché Matlab fondamentalmente lavora su ''matrici'', nelle loro varie forme: scalari (1x1), vettori riga (1xn), vettori colonna (nx1) e matrici classiche (nxn).
!!Ambiente di lavoro Nell'ambiente di lavoro di Matlab possiamo distinguere tre parti: * ('''A''') ''Current directory''/''Workspace''.\\ Nella prima scheda viene visualizzato il contenuto della directory corrente, quindi file, cartelle e funzioni comprese; nella seconda sono invece mostrate tutte le variabili attualmente utilizzate, correlate di valore e formato. * ('''B''') ''Command window''.\\ E' l'area in cui andranno scritti i comandi, un vero e proprio terminale. Il prompt ha come simbolo '''>>'''. * ('''C''') ''Command history''.\\ Contiene la lista di tutti i comandi inviati dall'utente.
Le lettere maiuscole fanno riferimento alla figura sottostante.
%center%Attach:matlabAmbLav.jpg
!!Regole generali !!!Comando help Lo scriviamo subito, vista l'importanza: per visualizzare la breve guida di un comando bisogna scrivere '''help''' seguito dal nome del comando stesso. Ad esempio [@help hilb@] stamperà a video una breve spiegazione sul comando per creare matrici di Hilbert.\\ Scrivere soltanto [@help@] farà invece apparire l'elenco di tutti i ''toolbox'' disponibili, ovvero tutti quei pacchetti dedicati all'implementazione di una determinata funzione (ad esempio l'interpolazione o la gestione delle trasformate di Fourier).
!!!Variabili Il linguaggio di Matlab lavora per ''espressioni'', ed è realizzato in modo da convertire queste ultime in '''variabili'''. Ogni espressione può contenere ''operatori'' (+ , - , / , * , ...), ''caratteri speciali'' (% , ! , : , ...), ''funzioni'' e ''nomi di variabili''. In particolare, questi ultimi possono essere formati da lettere e cifre, sono ''case sensitive'' e devono iniziare con una lettera.
Le variabili non devono essere dichiarate prima di essere usate, ma si possono utilizzare direttamente nelle espressioni. Non è nemmeno necessario specificarne il tipo e la dimensione, si occuperà Matlab di interpretarle e gestirle correttamente.
Facciamo un esempio: >>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< '''>>''' [@x = 3 + 2@] >><<
"x = 3 + 2" è un'espressione che contiene l'operatore di addizione, due interi e il nome di variabile ''x''. L'uguale è il normale operatore di assegnamento: alla sua destra va il valore da assegnare alla variabile alla sua sinistra.
Premendo il tasto ''invio'' al termine dell'espressione si manda tutto in pasto a Matlab, che - fatti i suoi calcoli - visualizza nella ''command window'' e nel ''workspace'' la variabile ed il suo valore. Per evitare di printare a schermo ogni passaggio è sufficiente terminare ogni espressione con il punto e virgola.
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> x = 3 + 2
x =
5
>> y = 4 + 7; >> @] >><<
In entrambi i casi abbiamo ottenuto la creazione di una variabile, rispettivamente ''x'' e ''y'', ma solo nel primo caso ci è stato dato un feedback dell'assegnamento.
Per visualizzare il contenuto di una sola variabile è sufficiente scrivere il suo nome, mentre per visualizzarle tutte possiamo utilizzare il comando '''who''' che ne stampa a video un semplice elenco, o il comando '''whos''' che fornisce un maggior numero di informazioni per ognuna di esse (ad esempio le dimensioni in byte e la classe).
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> who
Your variables are:
H x y
>> whos Name Size Bytes Class
H 3x3 72 double array x 1x1 8 double array y 1x1 8 double array
Grand total is 11 elements using 88 bytes
>> @] >><<
In Matlab esistono alcune variabili di default, tra cui: * ''pi'', il pi greco * ''eps'', lo zero macchina * ''NaN'' (not a number), che indica che il valore dell'espressione non è esprimibile con un numero macchina * ''flops'', ovvero il numero delle operazioni macchina effettuate. Va detto che il numero di flops varia a seconda delle operazioni, ad esempio quelle tra numeri complessi vanno da 2 a 6 flops.
Per quanto riguarda l'assegnamento di ''matrici'' o ''vettori'' bisogna utilizzare alcuni caratteri speciali: * '''[ ]''' (parentesi quadre), come delimitatori * ''',''' (virgole), per separare gli elementi sulla stessa riga. Si può usare anche lo spazio * ''';''' (punti e virgola), per separare gli elementi su righe riverse
Ad esempio:
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<< [@>> matr = [1 2 3;4 5 6]
matr =
1 2 3 4 5 6
>>@] >><<
Una matrice vuota si scrive così: [@>> matrVuota = []@] , dove ovviamente il nome della variabile matrVuota è un esempio generico.
Con il comando '''clear''' si cancellano tutte le variabili finora definite e vengono ripristinate quelle di default eventualmente modificate. Se al comando ''clear'' si fa seguire il nome di una variabile verrà cancellata solo lei.
|
|