MATLAB, Scilab e Octave: il confronto sul campo

Un confronto non è mai definibile tale se non si decidono parametri, criteri, aspettative ed anche un vincitore. Abbiamo faticato per mettere insieme tutto questo in funzione del fatto che capire se MATLAB sia, o meno, "IL" software di elaborazione statistica, matematica e numerica, non è cosa semplice. Vi abbiamo parlato dei potenziali "contendenti", oggi, invece, tessiamo le fila del discorso, soprattutto dopo aver introdotto MATLAB e la sua struttura, fatta di variabili, campi d'interesse, documentazione e molto altro ancora. Ma soprattutto dopo aver introdotto concetti importanti ed avanzati, grazie ai quali abbiamo imparato l'elaborazione grafica di base, i tipi di dati e ci siamo anche divertiti facendo "suonare" il nostro computer. Buona lettura.

Introduzione

Quelle di cui abbiamo parlato in apertura non sono le uniche cose fatte fino a questo momento, perché quando si è trattato di mettere in pratica le nostre conoscenze per provare a fare di MATLAB un concorrente che sapesse gareggiare con la nostra fantasia e con la nostra voglia di metterlo alla prova, ci siamo riusciti, semplicemente giocando con i numeri. Oggi è arrivato il momento di lavorare molto seriamente per capire se su alcune operazioni ci sia effettivamente un vincitore o meno tra MATLAB, Scilab, Octave, R, IDL e Freemat. Oggi vogliamo, quindi, metterci le mani per cui adesso cominciamo a scrivere codice. Ma per fare una panoramica più completa possibile, sappiate che la struttura che abbiamo scelto prevede l'identificazione di un problema di base, che può essere la soluzione di un sistema lineare, per esempio, l'analisi degli autovalori e degli autovettori di una matrice, e conseguente calcolo del problema dell'inversa con analisi dei risultati proposti, per poi terminare con la visualizzazione dei dati, l'organizzazione in grafici e lo studio delle differenti soluzioni proposte dal sistema di calcolo. Questo per ciascun software.

Ecco cosa abbiamo scoperto.

MATLAB

Sistemi di equazioni con MATLAB

Un software che vede il mondo fatto di matrici non può che essere l'ideale per risolvere sistemi ed equazioni. E allora, consideriamo quello che segue:

-x2+x3=3
x1-x2-x3=0
-x1-x3=-3

qui, la soluzione (1, 1, 2)' (ovvero un vettore colonna) può essere facilmente trovata applicando le tecniche di riduzione dei sistemi lineari che riguardano l'algebra lineare di base, ovvero il metodo di eliminazione di Gauss.
Per poterlo risolvere, dobbiamo esprimere tutto questo tramite una singola equazione fatta di matrici

Ax = b

in cui utilizziamo A per indicare la matrice dei coefficienti, b per identificare il vettore dei termini noti e naturalmente x per le incognite del sistema, un vettore di tre elementi.
Per trovare una soluzione per il sistema all'interno di MATLAB è indispensabile dividere ottenendo x=b/A'. L'operatore di divisione è già definito all'interno del software per cui risolverà automaticamente il sistema. La matrice ed il vettore vengono inseriti utilizzando la dicitura che abbiamo già visto e che contiene elementi come, per esempio:

A=[0 -1 1; 1 -1 -1; -1 0 -1]
b=[3;0;-3]

Calcolo degli autovalori e degli autovettori in MATLAB

Il calcolo degli autovalori e degli autovettori di una matrice, o più in generale di un sistema, rappresenta la chiave verso la risoluzione del problema, poiché l'individuazione dei valori linearmente indipendenti rispetto a tutti quelli che il sistema presenta garantisce lo studio in maniera estremamente efficace, soprattutto dal punto di vista computazionale. Ci sono, però, anche notevoli vantaggi in termini di rappresentazione perché studiare il numero di incognite e di equazioni linearmente indipendenti dalle altre, serve ad eliminare eventuali ridondanze e rappresentare in maniera essenziale i dati.
Per trovare gli autovettori e gli autovalori, concetti che fanno parte dell'algebra lineare, dobbiamo semplicemente risolvere l'equazione

Aυ=λυ

in cui viene indicato proprio il valore dell'autovettore (u) associato all'autovalore (λ).
Se consideriamo, per semplicità, una matrice A i cui elementi siano tutti unitari, sarà facile calcolare gli autovalori grazie alla funzione già integrata “eig” (che naturalmente risulta dall'abbreviazione di eigenvalues).
Pertanto risolveremo un sistema come:

A=[1 -1; 1 1]
v=eig(A)

con il risultato che i valori ottenuti saranno:

v=
           1.000 + 1.000i
           1.000 - 1.000i

Per verificare che le componenti del vettore siano identiche ai valori analitici è possibile sottrarre il vettore alle componenti ottenute. Se i conti sono corretti, la variabile ans, all'interno della quale MATLAB inserisce la risposta corrente quando il valore non viene associato ad una variabile, sarà nulla. Ciò dimostra che i valori [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3062 parole ed è riservato agli abbonati PREMIUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici PREMIUM e potrai fare il download (PDF) dell'EOS-Book e Firmware del mese. ABBONATI ORA con PAYPAL è semplice e sicuro.

Abbonati alle riviste di elettronica

4 Commenti

  1. maurisat maurisat 12 gennaio 2017
  2. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 12 gennaio 2017
    • Gianluca Angelone Gianluca Angelone 13 gennaio 2017

Scrivi un commento

ESPertino è la nuova scheda per IoT compatibile ARDUINO.
Scopri come averla GRATIS!