Octave, installazione, personalizzazione e i numeri sul calcolatore

1 03 2011

Voglio fare una piccola premessa.
Io il programma lo ho testato su un sistema Debian ma tutte le indicazioni fatte, rimangono invariate per tutti i sistemi (escluse le considerazioni fatte sui percorsi, su Windows saranno un po’ diversi).
Per l’installazione dovete usare i package manager presenti nella vostra distro, come aptitude oppure yum. È consigliato inoltre installare oltre al pacchetto octave anche octave-doc e octave-info per avere la documentazione. Se usate Windows o se Octave non è presente nei vostri repository recatevi al sito di Octave, i pacchetti che ho installato sul mio sistema terminale sono octave octave-doc octave-info
Come editor di testo (vedremo più avanti perché ce ne servirà uno) uso personalmente gedit, in quanto è in grado di riconoscere la sintassi di Octave, ma vi sono tantissimi editor in grado su farlo. Su Windows di default insieme ad Octave verrà installato noteppad++, ovviamente in grado di riconoscere la sintassi.

Octave, durante questo laboratorio, verrà usato dal terminale (non abbiamo infatti installato nessuna interfaccia grafica, ma niente vi vieta di cercarne una).
Ogni riga comincia con

>

I comandi scritti verranno interpretati solo dopo essere andati a capo (premere tasto enter).
Nel caso di errori di sintassi Octave produrrà un output segnando dove si trova l’errore oppure il tipo di errore commesso
Per chiudere il programma Octave basta dare il comando

>quit

oppure

>exit

Alcuni comandi che vengono normalmente usati in un sistema Gnu che si ritrovano all’interno di Octave sono:
pwd (mostra dove ci troviamo all’interno del sistema)
mkdir (serve per creare cartelle
ls (serve per visualizzare il contenuto della cartella in cui ci troviamo)
cd (serve per muoversi da una cartella all’altra)
Esempio:

>pwd
/home/fekir
>ls
Documenti	Multimedia
>mkdir Laboratorio
>ls
Documenti	Multimedia	Laboratorio
>cd Laboratorio
>pwd
/home/fekir/Laboratorio

Attenzione perché i comandi sono case sensitive, se avessimo scritto

>cd laboratorio
error: laboratorio: No such file or directory

Avremmo ottenuto un errore, che ci informa, che tale cartella (o file, ma non in questo caso) non esiste.

Spesso si inoltre a che fare con diverse funzioni predefinite e può darsi di non sapere bene come funzionano.
I comandi help e doc servono a capire come funzionano, ad esempio:

>help sqrt
>doc sin

Inoltre in Octave è possibile impostare una cartella dove posizionare le function che scriveremo. Vedremo più avanti cosa sono e come funzionano, ma possiamo già impostare una cartella.
Se abbiamo i permessi di amministratore andiamo a modificare il file

/usr/share/octave/3.2.4/m/startup/octaverc

(notate che se la vostra versione è diversa dalla 3.2.4 dovrete cambiare il percorso), dovreste trovare una linea del tipo

addpath (genpath ("/usr/local/share/octave/site-m"), "-begin");

sotto di questa aggiungiamo semplicemente

addpath("~/.octave/function")

. Dobbiamo poi creare nella nostra home la cartella .octave/function, e qui andremo, nei laboratori successivi, a inserire le function che vi darò o scriverete.
Altrimenti (sopratutto se non avete i permessi di amministratore) potete farlo direttamente da Octave dando il comando

addpath("~/.octave/function")

Il vantaggio di fare l’operazione da amministratore era nel caso aveste un computer con più utenti, in tal caso la modifica avrebbe interessato tutti gli utenti, in questo modo invece soltanto il vostro profilo.
Se volete rimuovere tale percorso basta rimuovere la riga scritta oppure dare da Octave il comando

rmpath("~/.octave/function")

Questa nota vale agli utenti che usano Windows, in quanto sui Sistemi Microsoft il terminale appare molto povero. Mentre sui sistemi Gnu/Linux il programma octave parte con le impostazioni predefinite del vostro terminale, su Windows (almeno nel mio caso quando ho fatto una prova), partiva con dei caratteri un po’ bruttini e troppo piccoli.
È per fortuna possibile personalizzare l’ambiente, facendo click destro sul collegamento a Octave (o direttamente con l’eseguibile) si può impostare i font da usare, la dimensione dei caratteri, i colori, e molto altro.

I numeri a virgola mobile
Vediamo adesso di dare una veloce (molto veloce) rappresentazione dei numeri sul calcolatore.
Sui calcolatori, si sa, la memoria disponibile è finita, quindi è ad esempio impossibile scrivere numeri irrazionali, che dopo la virgola hanno infinite cifre. Dal momento che quindi è impossibile rappresentare la maggior parte dei numeri reali, sui calcolatori si lavora con i numeri floating point, altrimenti chiamati numeri a virgola mobile.
Questi numeri rappresentano i numeri reali fino ad una certa cifra, dopo di essa vi è un troncamento. Normalmente gli errori sono molto piccoli, “invisibili” all’occhio umano, però, un errore, per quanto piccolo sia, si può propagare e aumentare, portando a dei risultati “sbagliati”.
Vediamo un semplice esempio, scriviamo in Octave:

>n=2;
>while (n>0)
>n=n/2;
>end
>n

Vediamo cosa abbiamo pressapoco scritto. Dapprima abbiamo assegnato ad n il valore due, poi diciamo ad Octave che finché n non è pari a 0, n verrà dimezzato.
Ovviamente questo ciclo dovrebbe risultare infinito. Nel senso che se dividete un numero in due, la sua metà sarà ancora diversa da zero. Ovviamente se pensate al significato analitico di quello che abbiamo scritto, stiamo facendo tendere n a 0, ma vi ricordo che questo è un limite per quando facciamo infinite operazioni. Eppure Octave si ferma dopo poco e valuta n come se fosse nullo proprio perché l’errore di cui vi ho parlato prima rende n e il numero 0 uguali.
Se riscrivete il ciclo di prima, senza il “;” dopo n=n/2, vi verrà mostrata ogni iterazione, e potrete notare come viene dimezzato n di volta in volta, fino a diventare un numero piccolissimo: 4.9407e-324
Vuol dire che ci sono 324 zeri prima che appaia una cifra diversa da zero. L’errore è senz’altro minuscolo, però rischia appunto di aumentare se il numero n venisse poi usato per altri calcoli, poiché (in questo caso specifico) moltiplicare per 0 o un numero diverso costituisce una grossa differenza. E sono state necessario “solo” 1076 iterazioni per annullare n.
Questi numeri possono apparire assurdi, ma durante la simulazioni di modelli matematici poter gestire numeri minuscoli o giganteschi mette a dura prova la precisione dei calcolatori.
Esistono poi dei numeri un poco particolari: Inf, -Inf, NaN, cioè infinito, meno infinito e Not a Number.
I primi due numeri si ottengono quando ad esempio state considerano numeri (in valore assoluto) troppo grandi. Visto che la memoria del calcolatore è finita, da un certo numero in poi (un numero a 308 cifre) i numeri verranno trattati come infinito. NaN è una espressione che si ottiene moltiplicando un numero infinito con un numero nullo, oppure facendo la differenza tra due infiniti, casi in cui, a priori, è impossibile dire quale sarà il risultato.
Ci sarebbe ancora tanto da dire sulla rappresentazione numerica sui calcolatori, ad esempio non valgono sempre le proprietà commutative o associative, ma penso che questa piccola parte sia sufficiente per capire un poco cosa succede dietro lo schermo e perché esistono gli errori di arrotondamento.


Azioni

Informazione

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s