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.





Gnuplot, qualcosa oltre i grafici

23 05 2010

Nelle guide passate in cui vi ho presentato Gnuplot vi ho mostrato come elaborare i dati, disegnare funzioni ad una o due variabili e a come salvare le vostre immagini.

Questa volta vi voglio invece mostrare come Gnuplot si comporta con altri programmi/protocolli. Non sto ancora parlando di programmi di studio come Maxima, o Octave (cosa che prima o poi farò), ma di come usare il terminale, come creare immagini per il Latex (che vi avevo gia presentato) e di come creare dei file per salvare il vostro lavoro (e non solo l’immagine).

Cominciamo quindi a vedere come interagire con il terminale:
Nella guida in cui parlavo dell’elaorazione dei dati ho sottolineato l’importanza di eseguire gnuplot nella cartella in cui erano salvati i nostri dati. Può però nascere il problema che ad un certo punto ci accorgiamo che alcuni dati non si trovano nella cartella che c’interessa, e quindi è neccessario spostarsi. Potrebbe anche darsi che magari non ci ricordiamo il nome del file e per dare una veloce occhiata non vale la pena aprire cartelle differenti e sarebbe molto più comodo dare un sorta di “ls” per poter vedere il contenuto della cartella.
Per fortuna per poter dare i comandi esattamente come se fossimo in una shell (cioè di fronte ad un terminale senza gnuplot avviato) basta dare!comandodove per comando potete dare un qualsiasi comando riconosciuto dal vostro sistema (potete vedere qua, qua e qua una piccola lista di comandi riconosciuti da sistemi operativi basati su debian), da questo momento in poi partirò dal presupposto che usiate un sistema basato su debian (come esempio esplicativo nell’immagine che potete vedere sto aggiornando il sistema).
In questo modo possiamo vedere facilmente il contenuto della nostra cartella (comando “ls”), oppure andare a prendere i dati di cui dobbiamo disegnare un grafico ovunque si trovino copiandoli nella nostra directory (comando “cp”)

Visto che a questo punto sul terminale non rimane molto altro da spiegare, direi di passare al salvataggio del nostro lavoro.
Ad esempio ho creato il seguente file (per semplicità chiamato file ;) ):

set title 'grafico bello'
set pm3d #colora la mappa
set xrange[-3:3]
set yrange[-3:3]
set zrange[-0.5:1]
set hidden3d
set isosample 40,40 #comando analogo a set sample, necessario per i grafici in 3d
splot exp(-x**2-y**2)

Per caricare il nostro salvataggio basta dare load 'file' ed è come se tutto quello che abbiamo scritto sul documento venisse riscritto sul terminale.
Gia che c’ero ne ho aprofittato per aggiungere un paio di comandi “nuovi”, ne senso che non gli avevo ancora presentati, li notate subito perchè dopo di essi ho messo un commento (che chiaramente non vengono letti da gnuplot)
In questo modo possiamo salvare facilmente tutte le nostre impostazioni e i nostri grafici se li vogliamo ridisegnare e rielaborarle.

Infine, ultima parte che voglio presentare oggi, è la possibilità di salvare i grafici fatti con gnuplot in un documento latex. Il metodo che vi presento io è il più “spartano”.
Per mostrarvi come funziona il tutto prendo come esempio il documento che ho scritto in questo articolo (ma qualsiasi documento può andare bene), che è un documento molto semplice.
A questo punto da gnuplot digitiamoset terminal latex
set output 'plot.tex'
load 'file'

Adesso se controllate nella vostra cartella troverete un file chiamato plot.tex, con dentro un codice, che basta copiare nel nostro documento di latex e che potete compilare con il comandolatex file.texdove per file mettete il nome del file.

Per tornare al terminale predefinito (o continuerete a generare soltanto documenti .tex) dovete dare:set terminal wxt

Non perchè questo sarà l’ultimo articolo che riguarderà gnuplot, ma mi sembra doveroso segnalarvi dove potete trovare praticamente tutta la documentazione (se il link non lo ho messo negli articolo precedenti è perchè non lo conoscevo ancora)





Gnuplot, nuovi comandi e riepilogo

15 05 2010

Dopo aver scritto un paio di articoli su Gnuplot (cioè su come elaborare i dati e su come disegnare funzioni analitiche) non ne poteva mancare uno (anche se corto) che vi spiegasse come disegnare grafici in 3D.
In sostanza cambia poco dal passaggio da 2D al 3D, senza un minimo di documentazione non riusciremmo però a disegnare le funzioni che ci interessano.
grafico 3dLa prima cosa a cui dobbiamo prestare attenzione è il comando per disegnare i grafici, mentre prima abbiamo sempre usato plot, il comando per disegnare un grafico ora sarà splot, un semplice esempio dovrebbe chiarire tutto:splot x**2+y**2 (ecco il minimo di documentazione di cui vi parlavo prima ;) )
Se il grafico appare molto confusionario, può tornare utile dare il seguente comando:set hidden3d
replot
così che la “griglia” che viene disegnata non è più trasparente, se la situazione è peggiorata date unset hidden3d
replot
e tutto sarà tornato come prima.

curva parametricaUn’altro modo per disegnare le funzioni è quella di esprimerla in forma parametrica (date una occhiata qua se non sapete di cosa sto parlando)
Per poter disegnare un grafico in tal modo basta dare il comandoset parametric un avviso v dirà che per le curve si usa la variabile t, mentre per le superfici la variabile u e v, diamo subito due esempi per chiarire la questione, dateplot t**2, sin(t) per disegnare una curva e splot u, u+v, u*vSe ad un certo punto decidiamo che ci siamo divertiti abbastanza con le funzioni parametriche allora possiamo uscire da questa “modalità” con il comando:unset parametric e un messaggio vi notificherà che le variabili adesso sono x per le curve, x e y per le superfici (le variabili che abbiamo sempre usato prima)

Adesso che vi ho mostrato come disegnare funzioni in 2D e 3D potrebbe essere interessante sapere come disegnare più funzioni su un grafico, sopratutto se dobbiamo fare qualche sorta di confronto. Anche qui i comandi sono molto semplici, sia per il 2D, si per il 3D; basta separare le funzioni che vogliamo disegnare da una virgola, ad esempio:plot sin(x), xgrafico e datiOvviamente possiamo anche combinare questi comandi con quelli per visualizzare i dati, diamo ad esempio il comando

plot 'dati', x**2-1/(x+1)

(Per ricordarvi come fare il grafico di dati guardatevi questo articolo)
Io nel file dati ho messo in colonna i numeri: 1  4  9  16  25  36

Dal momento che non mi sembra che ci sia molto altro da aggiungere ho pensato di descrivere qua altri comandi che conosco/reputo utili. Se alcuni fossero poco chiari, notificatemelo che vedrò di aggiornare l’articolo.

f(x)=espressione Per espressione possiamo mettere una qualsiasi funzione riportata in questo articolo
plot f(x) Disegna la funzione f(x)
splot f(x,y) Disegna la funzione f(x,y)
set parametric
unset parametric
comandi per abilitare/disabilitare la modalità in cui si definiscono le funzioni in forma parametrica
set title ‘nome del grafico Per dare un nome al grafico
set ylabel ‘asse delle y Per denominare l’asse delle y (cambiando la y con z o x cambiamo il nome degli altri assi)
set title ‘titolo Serve per mettere un titolo sul grafico
reset Per cancellare qualsiasi impostazione che abbiamo apportato durante la sessione
set samples numero Per numero mettiamo un numero che esprima quanto preciso deve essere il grafico per evitare che il grafico diventi spigoloso
replot Ridisegna il grafico (che sia stato generato con plot o splot non fa differenza)
plot ‘dati Per fare un grafico dei dati contenuti nel file dati, dobbiamo assicurarci che il file si trovi nella cartella dove abbiamo eseguito gnuplot
set xtics a,b,c Descrive quanti punti vanno disegnato nell’intervallo [a,c], cioè ogni b unità,
Se avessimo scritto ad esempio 0,1,19 avrebbe voluto dire che tra i valori 0 e 19 avremmo dovuto descrivere un punto ogni unità (in pratica ogni numero intero, 0 e 19 inclusi)
set xrange [a:b] Determina l’intervallo [a,b] su cui disegnare la funzione sull’asse delle x (sostituendo con la x la y o la z cambiamo il range dell’asse della y o della z)
set style data lines Collega i punti con linee, non necessario se stiamo disegnando una funzione analitica
set output ‘plot.png’
set terminal png
replot
Tripla di comandi per salvare l’immagine come plot.png
set terminal Per avere una lista di terminali ad opzioni, possiamo ad esempio decidere di scegliere quello che ci permette di salvare come sopra l’immagine in formato png




Maxima con interfaccia grafica

9 04 2010

Le volte scorse vi ho fatto vedere come funziona octave, abbiamo scoperto che è molto comodo e sopratutto intuitivo per il calcolo matriciale o da usare come calcolatrice (questo è quanto ne esce da un primissimo approcio, chiaramente la sue potenzialità sono ben altre).

La sua “limitazione” è quella di non sfruttare il calcolo simbolico, infatti se il risultato di una operazione è un numero irrazionale come pi greco (3.141…), il numero di nepero (2.718…), oppure radice di due (1.14142…), allora il risultato sarà riportato in forma decimale e non simbolica (i numeri appena descritti sono relativamente facili da risordare, ma sfido chiunque di capire che ad esempio 148,4131… è una approssimazione di e^5)

Se però vogliamo risolvere un sistema (lineare o meno) o disegnare dei grafici, calcolare dei limiti oppure delle serie, allora può tornare più comodo usare un programma che sappia utilizzare il sistema a calcolo simbolico, e gia che ci siamo questa volte ve ne mostro uno con un’interfaccia grafica.
Il programma si chiama Maxima, noi installeremo wxmaxima, così da poter sfruttare l’interfaccia. Diamo quindi da terminale sudo apt-get install wxmaximaMa se Octave è così comodo senza che vantaggi ci sono ad usarne una? Semplice, per scrivere una equazione con una interfaccia grafica o meno, si deve comunque scrivere più o meno la stessa roba, se invece (adesso con wxmaxima) vogliamo calcolare un limite dovremmo scrivere “limit(espressione, variabile, valore a cui tende la variabile)”. Insomma, per calcolare un limite dobbiamo ricordarci la parola chiave limit (non che sia difficile), per calcolare un integrale dobbiamo ricordare integrate e via dicendo. Finchè le operazioni sono due o tre tutto va bene, ma quando vogliamo scoprirne due volte dei semplici pulsanti da cliccare sono molto più comodi, no?
Bene, vediamo allora come funziona maxima, o meglio, wxmaxima, effettuando le semplici operazioni che abbiamo effettuato in octave. Il procedimento è leggermente diverso;
scrivete un somma qualsiasi, aggiungeteci un “;” e tenendo premuto il tasto maiuscoletto premiamo acapo.
Sembra complicato? Per niente: scriviamo “5+2;” e adesso premiamo il tasto maiuscoletto e in contemporanea enter (dando solo enter non viene letta la riga, il punto e virgola serve per segnare il fine riga).
Giustamente adesso vi starete ponendo la domanda: “ma a che cavolo serve il ; e poi la combinazione di tasti al posto di un semplice enter? Perché dovevano fare tutto più complicato?”
Sinceramente non lo so, fate però conto che se volete fare più calcoli in contemporanea, ad esempio fare una operazione, prenderne il risultato e fare una nuova operazione. Al posto di scrivere due righe possiamo scriverne una sola. Facciamo un esempio supponendo di avere il foglio vuoto (dopo capirete il motivo)
1+2; (%o1)*3; il risultato sarà:
(%o1) 3
(%o2) 9

Cosa è successo? Maxima calcola 1+2, il primo risultato lo salva come (%o1) (ecco perché serviva il foglio vuoto), con la seconda operazione maxima calcola (1+2)*3 quindi 9. La “comodità” di dover cliccare maiuscoletto+enter per dare il comando è che se ne dobbiamo dare tanti in contemporanea può essere più comodo non metterli tutti in fila, e quindi si doveva fare in modo che per andare a capo non si desse il comando. (Chiaramente ci possono essere altre motivazioni, queste sono quelle che mi sono venute in mente). Per vedere le operazioni algebriche che possiamo fare con Maxima vi rimando alla mia guida di octave, i comandi sono gli stessi, basta aggiungere il ; alla fine.
Per le operazioni trigonometriche dovete stare un attimo più attenti, o meglio; per tutti le operazioni che possono avere come risultati numeri irrazionali: facciamo conto di voler calcolare il seno di 3. Scriviamo allora sin(3); il risultato che ci riporta maxima è … sin(3).
Cosa è successo? Non abbiamo sbagliato nulla e la spiegazione è semplice: Maxima sa calcolare in modo simbolico, quindi i risultati che riporta sono precisi, non approssimazioni numeriche, quindi il seno di 3 è esattamente il seno di 3.
“Bella roba” direte voi, perché se volevate calcolarlo è chiaro che vi serviva un’approssimazione numerica, almeno per avere un’idea di che numero fosse. Il problema si risolve scrivendo float(sin(3)); che trasforma il risultato in un float, non sto a spiegarvi adesso cosa sia (qui potete approfondire l’argomento), chiaramente se vi dimenticate di scrivere float calcolando il seno, potete sempre applicarlo al risultato tramite il menu. A questo punto posso dirvi di tornare nuovamente alla mia guida di octave, perché per il resto i comandi delle operazioni trigonometriche rimangono identiche!

Una nota sulle variabili: sono diverse che da octave;
%e è il numero di nepero
%pi è pi greco
%i è l’unità immaginaria
inoltre non esiste una variabile  tipo ans, è necessario fare riferimento alla riga che c’interessa (ad esempio (%o2) sarà il risultato sulla seconda riga)

Bene, adesso come da octave siamo in grado di utilizzare Maxima per le operazioni quotidiane, se volete usarlo da terminale non dovete che digitare “maxima” e ricordarvi che come da octave basta il semplice enter per dare i comandi, il resto rimane uguale.





Disegnare grafici con Graphmonkey

7 04 2010

Se vogliamo un piccolo programma semplice e immediato per disegnare grafici, allora vi consiglio GraphMonkey, molto semplice da utilizzare.

Possiamo disegnare fino a tre funzioni alla volta, decidere un range massimo per l’asse delle x e delle y poi possiamo navigare all’interno del disegno (possiamo ad esempio zoomare il disegno) e muoverci in tutte e quattro le direzioni (fino ai valori massimi scelti per l’asse delle x e delle y.

Altre piccole funzionalità di questo programma
-possibilità di segnare l’area della prima funzione
-calcolare la prima e la seconda derivata della prima funzione
-calcolare un valore specifico della prima funzione

È possibile disegnare polinomi, funzioni fratte, funzioni trigonometriche (sin, sinh, cos, cosh, tan, tanh…), funzioni logaritmo, radici, funzioni con valori assoluti, esponenziali…
L’unico tipo di limitazione che ho trovato sono le funzioni nelle quali vorrei inserire il numero di nepero oppure pi greco, non mi sembra che esiste una lettera che li riassuma, pertanto ci si deve accontentare di inserire 3.141 per pi greco e 2, 71 per e.
Un’altra limitazione è quella di poter disegnare solo le prima due derivate (non esiste una opzione del tipo: scegli tra le funzioni disegnate quale derivare) e quindi non si può ottenere una terza o quarta derivata oltre al fatto di poter derivare solo il primo grafico, è anche un peccato che non si possa possa disegnare la funzione primitiva.

Tutto sommato è un programmino molto utile, in quanto è molto semplice da utilizzare e permette di dare una veloce analisi a qualsiasi tipo di funzione.
Per installare il programma basta dare un semplice sudo apt-get install graphmonkey





Octave, calcoli matriciali

7 04 2010

La volta scorsa vi avevo presentato il programma octave, mostrandovi come compiere i calcoli più basilari. In questo articolo vi voglio mostrare uno di quelli che ho ritenuto i pregi maggiori di octave quando lo usai la prima volta, cioè quello del calcolo matriciale!

Se scrivere una matrice, basta allora scrivere[aa,ab,ac...;ba, bb, bc...;...]un esempio pratico:
A=[1,2,3;4,5,6;7,8,9]
crea la seguente matrice
1 2 3
4 5 6
7 8 9
e la salva sotto A.
Le virgole separano le colonne, i punti e virgola le file, si scrive file per fila.
Le operazioni di somma, prodotto, sottrazion e di potenze (la divisione non esiste!) vengono eseguite esattamente nello stesso modo del caso dei numeri reali/complessi.

Supponiamo di voler calcolare l’inversa di una matrice A (quindi un matrice B tale che A*B=I, I è la matrice identità) Per ottenere la matrice inversa, dovete quindi aver salvato la matrice come A, e poi basta scrivere
inv(A)Oppure potete direttamente scrivere inv(Matrice)
Sistemi lineari:
Spesso per risolvere sistemi lineari a più variabili si utilizza la forma matriciale, basta quindi scrivere le equazioni in forma di matrice, e i risultati in forma di vettore, per esempio:
A=[1,2,3;4,5,6;7,8,9]
B=[1;2;3]
A\B
L’output sarà un vettore (x,y,z) contente le variabili che dovremmo inserire nelle equazioni
1x+2y+3z=1

Se avete un sistema lineare ad una sola variabile, quindi una equazione del tipo: ax=b, potete velocemente risolverlo scrivendo
a\b
(esattamente come per le matrici, vi faccio inoltre notare che non è il simbolo della divisione, che è il seguente: /)
Vi faccio notare che i risultati sono arrotondati, non verranno mai riportati numeri nella forma 5/3, ma essi verranno espressi in forma decimale (quindi avrebbe riportato 1.6667, vi faccio inolte notare che nell’immagine octave riporta anche quanto è stato preciso ad eseguire i calcoli!)

Con le matrici potete eseguire le operazioni di somma, differenza e prodotto come descritto nell’articolo precedente, chiaramente le matrici devono essere costruite in modo che sia possibile parlare di somma e prodotto (potete quindi sommare matrici di dimensioni axb solo con matrici axb e fare il prodotto di matrici axb con matrici bxd)

Per calcolare il determinante di una matrice vi basta scrivere det(A)se volete calcolare la caratteristica (altrimenti nota come rango) basta digitare rank(A)

Due note sulle matrici:
Se vi serve una serie di numeri pseudocasuali può essere comodo visualizzarli in una matrice scrivete:
B= rand(a,b)
dove a sta per le righe, b per le colonne. I numeri all’interno di essa saranno variabili tra 0 e 1.

In Octave esiste la funzione pascal che riporta (chi l’avrebbe mai detto:P) il triangolo di pascal (o di tartaglia).
Provate a dare pascal(5), il risultato dovrebbe essere il seguente: (guardate l’immagine che segue)

Beh, non era esattamente il triangolo che ciaspettavamo, ma un quadrato, e come va letto? Semplice, dovet immaginare di girare il quadrato di 45° in senso orario, in questo modo vi apparirà il triangolo completo fino alla 5 riga, più alcuni pezzi di quelle successive:

(non è venuto drittissimo, ma sero dia ver reso l’idea…;))
Come mai octave c’e la mostra così? sinceramente non lo so, però data la sua forma quadratica possiamo trattare il triangolo di tartaglia come una normale matrice.





Octave, operazioni basilari

1 04 2010

Octave è programma open source, multipiattaforma, il cui sito ufficiale trovate qui.

La prima volta che cercavo un programma per poter calcolare cercavo qualcosa che sapesse fare un po’ di tutto e fosse facile da gestire, e quindi tentavo proprio di evitare il programma che vi sto proponendo.
Dopo averlo provato una volta, mi sono stupito di quanto fosse semplice fare le operazioni basilari.

Basta semplicemente scrivere il calcolo che si vuole fare come se si avesse davanti una calcolatrice scientifica (ma chiaramente con questo programma potremo fare molto di più!), il risultato, numero o matrice che sia, viene salvato in automatico sotto la variabile ans.

Ecco un elenco di operazioni che farete più o meno quotidianamente:

supponendo che a e b siano numeri (volendo anche complessi):

a+b		somma
a-b		differenza
a*b		prodotto
a/b		divisione
a^b		potenza
log(a)		logaritmo in base e
logb(a)		logaritmo in base b
sqrt(a)		radice di a
abs(a)		valore assoluto di a

chiaramente sono disponibili tutte le operazioni trigonometriche:

sin(a)		seno
cos(a)		coseno
sec(a)		secante
csc(a)		cosecante
cot(a)		cotangente
tan(a)		tangente
sinh(a)		seno iperbolico
cosh(a)		coseno iperbolico
sech(a)		secante iperbolica
csch(a)		cosecante iperbolico
coth(a)		cotangente iperbolica
tanh(a)		tangente iperbolica

per i numeri complessi sono inoltre disponibili le seguenti operazioni (considerando quindi z un numero complesso):

arg(z)		argomento
angle(z)	angolo
conj(z)		coniugato
imag(z)		parte immaginaria
real(z)		parte reale

queste invece sono delle costanti

pi		pi greco
e		il numero di eulero/costante di nepero
I, J, i, j	numero immaginario

chiaramente ne potete creare altre anteponendo “a=” (o un’altra lettera, oppure una sequenza di lettere diversa dalle variabili e da “ans” all’operazione che state per scrivere, o al numero che volete salvare sotto la variabile a (o altra lettera che avete anteposto.
ans è una variabile che è uguale al vostro ultimo risultato ottenuto, a patto che non lo abbiate salvato in un’altra variabile (come nell’immagine a destra)