Maxima è un programma per l'elaborazione algebrica molto sofisticato e molto potente.

Creato il 11 maggio 2011 da Hugor @msdiaz61
Maxima è un programma per l'elaborazione algebrica (Computer algebra system) molto sofisticato e molto potente, derivato da DOE-Macsyma che a sua volta derivava da Macsyma sviluppato al MIT, a partire dagli anni 1960. Di Maxima sono disponibili versioni per una grande quantità di sistemi operativi.
Data la sua origine, Maxima è un programma che interagisce prevalentemente attraverso un terminale a caratteri; tuttavia, sono disponibili versioni grafiche che consentono la visualizzazione delle formule elaborate in una forma più graziosa dal punto di vista estetico. Per esempio, wxMaxima è un interfaccia frontale per Maxima, in grado di aggiungere questo miglioramento grafico.
Le potenzialità di Maxima sono enormi. In questo capitolo si fanno solo dei cenni relativi a problemi molto semplici. Va osservato che Maxima può fare anche molto altro, in particolare nel capitolo è omessa completamente la gestione dei vettori e delle matrici.

Installazione.

L'installazione di Maxima non dovrebbe dare problemi nei sistemi operativi più comuni, dal momento che sono disponibili pacchetti precompilati per una vasta gamma di ambienti. Tuttavia va osservato che Maxima richiede la presenza di Gnuplot per produrre dei grafici, installato in modo corretto, o comunque «standard». Eventualmente, se non si riesce a ottenere un grafico con le funzioni che invece dovrebbero produrlo, occorre concentrarsi nell'installazione corretta di Gnuplot.

Avvio e interazione normale con il programma.

Maxima si avvia normalmente attraverso il file-eseguibile maxima, senza indicare opzioni particolari:

maxima [opzioni]
 

Una volta avviato, comincia un'interazione con il programma, il quale offre un invito composto dalla sigla (%in), dove n è un numero progressivo che inizia da uno e la lettera «i» sta a sottolineare il fatto che si tratta di una riga di «input». Nella riga di comando preceduta dall'invito di Maxima è possibile inserire comandi che spesso sono costituiti semplicemente da espressioni o equazioni matematiche:
(%i1) x^2+sqrt(x);[Invio]In questo caso viene inserita l'espressione x2+x0,5 e si può osservare che è stata terminata con un punto e virgola. Normalmente, dopo l'inserimento di un comando, si ha una forma di risposta da parte di Maxima, con la quale si può verificare il recepimento di quanto inserito:

                                 2
(%o1)                           x  + sqrt(x)

Eventualmente, se Maxima viene usato attraverso la mediazione di un programma frontale grafico, questa risposta potrebbe essere più graziosa esteticamente:

(%o1)  

Se al posto del punto e virgola finale si mette il simbolo dollaro ($), si fa in modo di evitare che Maxima dia un responso di alcun genere; in altri termini, serve a sopprimere l'output.
Continuando con altri inserimenti, l'invito di Maxima incrementa il suo numero progressivo:
(%i2) sqrt(x^3+x^2);[Invio]

(%o2)  

Ogni cosa che viene inserita diventa un «oggetto» di Maxima, al quale potrebbe essere fatto riferimento con la sigla %on. Per esempio, con il comando factor() è possibile ottenere una semplificazione di un'espressione attraverso la riduzione in fattori. In questo caso si vuole trasformare la seconda espressione inserita:
(%i3) factor(%o2);[Invio]

(%o3)  

Come si può intuire, la nuova espressione potrebbe essere raggiunta con la sigla %o3:
(%i4) %o3 + sqrt(x^4);[Invio]

(%o4)  

Per concludere il funzionamento di Maxima si può usare il comando quit():
(%i5) quit();[Invio]

 Funzionamento di wxMaxima, dove si vede che i comandi vanno inseriti nello spazio inferiore della finestra. 

Gestione degli oggetti di Maxima.

Ogni volta che si inserisce qualcosa nella riga di comando di Maxima, si produce un nuovo oggetto, con il risultato dell'inserimento stesso. Il riferimento a tali oggetti avviene con una sigla del tipo %on, dove n è il numero dell'oggetto. In alternativa, è possibile dare un nome ulteriore all'oggetto, specificandolo all'inizio dell'inserimento:

[nome_oggetto:] comando 

Per esempio, si può definire un'espressione e le si può associare il nome espressione_1:
(%i1) espressione_1: x^4+x^3+x^2;[Invio]

(%o1)  x4 + x3 + x2

(%i2) espressione_1 + x;[Invio]

(%o2)  x4 + x3 + x2 + x

Gli oggetti creati e non più utilizzati, possono essere eliminati con il comando kill():

kill (nome_oggetto[, nome_oggetto]...)

kill (all)

In pratica, come argomento del comando kill() si può mettere un elenco di oggetti (separato con la virgola), oppure la parola chiave all, con la quale si indicano implicitamente tutti.
Gli oggetti da eliminare vanno identificati con la sigla generica %on o per nome, se gli è stato associato un nome. Tuttavia, le due cose sono indipendenti. Per esempio, se con il nome nome_3 è stato identificato l'oggetto corrispondente alla sigla %o3, il fatto di eliminare nome_3 non si propaga all'oggetto dal punto di vista della sigla %o3 e lo stesso viceversa.
(%i3) kill (%o1, %o2);[Invio]

(%o3)  done

(%i4) espressione_1;[Invio]

(%o4)  x4 + x3 + x2

(%i5) kill (espressione_1);[Invio]

(%o5)  done

(%i6) quit();[Invio]

Funzioni.

Maxima consente di definire espressamente delle funzioni, utilizzando l'operatore :=. Le funzioni possono essere disegnate, con l'ausilio di un programma esterno, costituito di norma da Gnuplot. L'esempio seguente crea la funzione f(x) e la visualizza, nell'intervallo che va da -π e +π:
(%i1) f(x) := x^3;[Invio]

(%o1)  f(x) := x3

(%i2) plot2d (f, [x, -%pi, %pi]);[Invio]


Si possono creare funzioni di funzioni; in altri termini, la creazione di una funzione si può avvalere di funzioni già definite. Negli esempi seguenti si crea una funzione g(x), composta utilizzando la già definita f(x). Al termine, vengono disegnate le due funzioni.
(%i3) g(x) := f(sin(x));[Invio]

(%o3)  g(x) := f(sin(x))

(%i4) plot2d ([f,g], [x, -%pi, %pi], [y, -2, 2]);[Invio]

Naturalmente si possono definire funzioni a più variabili, ma la rappresentabilità grafica si limita alle funzioni a due variabili, attraverso la proiezione bidimensionale:
(%i5) h(x,y) := x**2 * y**3;[Invio]

(%o5)  h(x,y) := x2 y3

(%i6) plot3d (h, [x, -%pi, %pi], [y, -%pi, %pi]);[Invio]

Per definire una funzione a tratti, è necessario avvalersi del comando block(). Per esempio, si vuole definire la funzione k(x), la quale valga -(-x)0,5 per valori inferiori a zero e valga x0,5 per valori maggiori o uguali a zero:
(%i7) k(x) := block ([], if (x < 0) then return (-(-x)^0.5) else \
  \  return (x^0.5));
[Invio]

(%o7)  k(x) := block ([], if x < 0 then return (-(-x)0.5) else return (x0.5))

(%i8) plot2d (k, [x, -1, 1]);[Invio]

Per indicare più di due possibilità, occorre usare delle parentesi tonde, in modo da distinguere le varie condizioni:
(%i9) j(x) := block([], if (x < 0) then return (x*1.25) else \
  \  (if (x >= 0 and x < 2) then return (0) else \
  \  return (x*3-6)));
[Invio]

(%o9)  j(x) := block ([], if x < 0 then return (x·1.25) else if x>=0 and x<2 then return (0) else return (x·3-6))

(%i10) plot2d (j, [x, -1, 3]);[Invio]


fonte: a2pluto
Screenshots.
Xmaxima 5.18 running on Linux (with Tk 8.5) with the Embedded plot windows option Xmaxima running on Windows Maxima running in GNU Emacs Maxima 5.18 running in command line mode in Linux Maxima running in GNU TeXmacs Maxima running in GNU Emacs with Imaxima mode
Ricerca personalizzata


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

Potrebbero interessarti anche :

Possono interessarti anche questi articoli :