In rete: http://www.elegio.it/max/demo01/
Esempi di uso della libreria tensor scritta da Viktor T. Toth in maximese
Il sito dell'autore è http://www.vttoth.com/
che ha dedicato a Maxima questa pagina http://www.vttoth.com/CMS/projects/61-the-maxima-computer-algebra-system e suggerisce questo indirizzo http://arxiv.org/abs/cs/0503073 dove illustra cosa ha fatto a favore del calcolo tensoriale.
- http://maxima.sourceforge.net/docs/manual/en/maxima.html
- http://maxima.sourceforge.net/docs/manual/en/maxima_abt.html con molti miei ringraziamenti al prof. portoghese Jaime E. Villate http://www.villate.org/
appassionato di fisica e di... disegno artistico ... Consiglio Jaime E. Villate a chi vuole imparare il portoghese !
- http://maxima.sourceforge.net/docs/manual/en/maxima_25.html descrive la libreria
itensor
mettendo in luce alcuni difettucci della precedente versione... si spera ora corretti.- http://maxima.sourceforge.net/docs/manual/en/maxima_26.html descrive la libreria
ctensor
basata sulla manipolazione delle componenti dei tensori.- http://maxima.sourceforge.net/docs/manual/en/maxima_27.html descrive la libreria
atensor
dove la a sta per algebraic ossia una libreria che consente di trattare i tensori in stile algebrico ossia come una specie di vettori e matrici. Ho constatato che la gente comune, quando si parla di tensori va a pensare alla tensione elettrica e dunque pensa che si tratti di elettricità o tensione di cavi e funi varie... Insomma... non sarebbe stato meglio chiamarli non TENSORI MA ULTRAVETTORI o se vogliamo essere diversamente anglofoni WETTORI ? Almeno per non spaventare la gente...Ho raccolto qui i file demo che ho trovato nella versione di Maxima 5-28-2
- ademo.dem.txt
- adsitter.dem.txt
- allnutt.dem.txt
- atensor.dem.txt
- atensor.mac.txt
- bianchi.dem.txt
- bradic.dem.txt
- car_iden.dem.txt
- ctensor.mac.txt
- ctensor1.dem.txt
- ctensor2.dem.txt
- ctensor3.dem.txt
- ctensor4.dem.txt
- ctensor5.dem.txt
- ctensor6.dem.txt
- ctensor7.dem.txt
- ctensor8.dem.txt
- einhil.dem.txt
- ex_calc.dem.txt
- ex_calc.mac.txt
- friedmann.dem.txt
- godel.dem.txt
- helicity.dem.txt
- hodge.dem.txt
- hydro.dem.txt
- iframe.mac.txt
- itensor1.dem.txt
- itensor2.dem.txt
- itensor3.dem.txt
- itensor4.dem.txt
- itensor5.dem.txt
- itensor6.dem.txt
- itensor8.dem.txt
- itensor9.dem.txt
- kaluza.dem.txt
- kruskal.dem.txt
- lckdt.mac.txt
- maxwell.dem.txt
- papapetrou.dem.txt
- petrov.dem.txt
- plasma.dem.txt
- rainich.dem.txt
- reissner.dem.txt
- rtest_atensor.mac.txt
- rtest_ctensor.mac.txt
- rtest_itensor.mac.txt
- schwarz.dem.txt
- spinor.dem.txt
- taubnut.dem.txt
- tendemo.mac.txt
- tensor.dem.txt
- tetrad.dem.txt
- weyl.dem.txt
Usare un file demo
Trascrivo qui il contenuto di un piccolo file di prova che ho sperimentato...
/* Cerco dove sta il file ctensor.mac */ file_search("ctensor"); /* Ci sono anche degli esempi a partire da ctensor1.dem Infatti... */ file_search("ctensor1"); /* Per prima cosa eseguo l'esempio ctensor1.dem usando la funzione batch() che fa la load e visualizza il risultato di ogni riga. Se uso la batch debbo specificare anche l'estensione del file ossia .dem perché la batch usa come estensione implicita .mac */ batch("ctensor1.dem"); /* Ora rieseguo il file ma non uso la funzione batch("nomefile") ma la funzione demo("nomefile") ed in questo caso non sono costretto a specificare l'estensione .dem dato che la demo la accetta implicitamente. */ /* A differenza della batch() la funzione demo() esegue una riga alla volta e per farla andare avanti bisogna dare un Invio Maiuscolo. Per interrompere l'esecuzione passo a passo, bisogna scrivere quit e poi dare il solito Invio Maiuscolo. */ demo("ctensor1");Qualche esempio di uso di file in wxMaxima
Metto qui qualche prova che ho fatto senza molte pretese; un po' di comandi come mi sono venuti in mente. Ovviamente chiunque, se ha voglia può imitarmi sul suo PC dove ovviamente i nomi delle cartelle saranno diversi./* TROVO MOLTO UTILE VISUALIZZARE LA DATA DELL'ESECUZIONE DI UN FILE... Stampo la data ma STRANAMENTE scopro che Maxima, installata sul mio PC, aggiunge 8 ore... */ timedate(); /* Dunque per fargli stampare l'ora giusta per me adesso bisogna fare così... */ timedate(absolute_real_time()-8*3600); /* Considera questa come la radice dei file di Maxima e definisco una mia lista di cartelle di cui posso fare uso. Per sicurezza la creo scegliendo la maxima_userdir. */ maxima_userdir; altrecartellemaxima:[maxima_userdir]; /* Questa sarebbe ora la sua cartella temporanea... */ maxima_tempdir; /* Una regola che mi AUTOIMPONGO... */ /* Su OGNI PC PER MIA CONVENZIONE CI DEVE ESSERE un file di nome maximaquestopc.mac che ha il compito di ampliare la lista delle cartelle visitate quando si fa il comando load() e di dare un elenco di cartelle usabili in base alle mie scelte... */ /* Il file maximaquestopc.mac contiene una istruzione di questo tipo che funziona sul PC vaiobig. */ /* Per esempio.... */ /* maximalistacartelle:["C:/zmaxima/$$$.{mac,mc}", "C:/Users/Giampaolo/zzbig/2013/zmaxima2013/", "C:/Users/Giampaolo/zzbig/2013/zmaxima2013/$$$.{mac,mc}"]$ if not member(maximalistacartelle[1],file_search_maxima) then file_search_maxima: append(file_search_maxima,maximalistacartelle)$ altrecartellemaxima:["C:/Users/Giampaolo/zzbig/"]$ */ /* Qui controllo che esista usando la file_search() */ if file_search("maximaquestopc.mac")=false then disp("Va messo al suo posto ! Non lo trovo!") else disp("Bene ! Ora lo carico")$ /* e sperando che lo abbia trovato... */ load(maximaquestopc); /* MI AUTOIMPONGO ANCHE QUESTA CONVENZIONE: nel file maximaquestopc.mac definiso la lista altrecartellemaxima che è un elenco di altre cartelle che posso usare quando faccio una load ma specificando un path di ricerca. DUNQUE... La variabile altrecartellemaxima contiene la lista delle cartelle che mi piace usare in futuro... */ altrecartellemaxima[1]; /* Cerco dove sta il file index-1.html sperando di essermi ricordato di averlo creato e messo in una delle cartelle che ho scelto di usare ( altrecartellemaxima ). */ file_search("index-1.html",altrecartellemaxima); /* Usando writefile(nomefile) viene salvata l'interazione tra il terminale ed il programma wxMaxima per cui questo file non è poi ricaricabile. Per salvare dati in un file rileggibile bisogna usare save o stringout */ file_search("eigen_1.dem"); /* La funzione demo(nomefile) è simile alla load(nomefile) ma va a cercare i file con estensione .dem Qui la uso... Per farla andare avanti bisogna o non scrivere nulla o scrivere ; e poi dare l'invio schiacciando il tasto delle maiuscole... Ma se si vuole chiudere la dimostrazione scrivere quit e dare l'invio schiacciando il tasto delle maiuscole... Ora do il comando demo("eigen_1"); che va per le lunghe e quindi consiglio di digitare quit... */ demo("eigen_1"); /* Un altro esempio ossia uso il file demo.dem che fa esempi di derivazione... Per finire il demo digitare quit e non solo il puntevirgola. */ demo(demo); /* Però se si vuole eseguire il file di tipo demo col comando batch bisogna specificare la sua estensione... Il file viene eseguito tutto di seguito... */ batch("eigen_1.dem"); /* RIPETO CON QUALCHE PRECISAZIONE ( MI SCUSO PER LA PROLISSITA' )... */ /* Usando la file_search_demo si trova DOVE Maxima va di default a cercare i file con estensione .dem In genere li cerca in .../share/$$$.{dem,dm1,dm2,dm3,dmt) oppure in .../demo/$$$.{dem,dm1,dm2,dm3,dmt) */ file_search_demo; /* Per avere la lista delle estensioni che wxMaxima considera indicativi di file usabili come sorgenti di MAXIMA , visualizzare il valore della variabile file_type_maxima */ file_type_maxima; /* Per sapere dove la funzione load va a cercare i file se il path completo non viene specificato bisogna guardare il valore della variabile file_search_maxima che ora ricopio in una mia variabile con un nome che preferisco: */ pathmaxima:file_search_maxima$ pathmaxima[2]; /* Scrivo qui qualche istruzione in previsione del fatto che poi la voglio salvare come ulteriore esperimento... */ bfloat(%pi); duepigreco:2*bfloat(%pi); /* Per vedere se esiste un dato file ( sperando che ci sia ) ... */ file_search("esperimentobase.mac"); /* Come avere informazioni : basta usare la funzione describe() Per esempio: describe("integ", inexact); Qui non lo faccio per evitare una sbrodolata... */ /* Con la funzione stringout(nomefile,input) si genera un file con tutte le linee comando attivate fino al punto della chiamata della stringout. Per specificare dove voglio salvare un mio file concateno il suo nome ad una opportuna stringa contenente il path che voglio usare... A questo scopo mi viene comodo avrere definito in precedenza la lista altrecartellemaxima di cui prendo il primo elemento.... */ concat(altrecartellemaxima[1],"nomefilequalsiasi.txt"); /* Ora salvo i comandi che ho scritto, mettendoli in un file in una cartella a parte. Uso come radice momentanea questa: */ altrecartellemaxima[1]; /* e salvo in una sua sottocartella e con una estensione generica... Ovviamente la cartella ./2013 deve essere stata definita... */ stringout(concat(altrecartellemaxima[1],"2013/beta.mac.txt"),input); /* Notare che viene visualizzato il nome completo del file creato dalla stringout. Notare anche che wxMaxima usa il formato Unix e non Windows per cui in Windows non fa il cambio di riga... */ /* Qui viceversa col comando load carica un altro file di esperimento ( che potrei essermi dimenticato di fare ). Comunque la cosa notevole è che uso la generica estensione .txt in modo che il file sia visibile su internet. */ batch(concat(altrecartellemaxima[1],"2013/alfa.mac.txt")) ; /* Per ora questo è tutto... PER ORA... */
Giampaolo Bottoni gpbottoni@gmail.com
|