wikitelaio2015:lez09
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
wikitelaio2015:lez09 [2015/03/19 12:18] – creata ebertocchi | wikitelaio2015:lez09 [2015/03/26 16:33] (versione attuale) – 201965 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ===== wxMaxima ===== | ||
+ | |||
+ | Maxima è un manipolatore algebrico che può funzionare con varie modalità: | ||
+ | *E’ utilizzabile come terminale che interpreta comandi in modo interattivo. | ||
+ | *E’ utilizzabile come un vero e proprio linguaggio di programmazione (interpretato, | ||
+ | *Ha un’interfaccia grafica semplice dal terminale, di nome xMaxima. | ||
+ | *Ha un’interfaccia grafica più evoluta, wxMaxima, che facilita l’inserimento dei comandi dal terminale anche ai non esperti. | ||
+ | |||
+ | **Come funziona il programma** | ||
+ | |||
+ | * Si scrivono i comandi sulle righe di input (%i1), (%i2) numerate progressivamente; | ||
+ | * % : il comando viene applicato alla stringa precedente. | ||
+ | * Bisogna sempre terminare i comandi con un “;”. Si noti che wxMaxima inserisce in automatico “;”, possiamo anche terminare un comando con “$”, però in questo caso non ci mostra l’output del comando. | ||
+ | * Premendo solo //invio// possiamo dividere il comando su più righe. | ||
+ | * La “spaziatura” non implica alcun effetto sul codice, mentre il software distingue tra minuscolo/ | ||
+ | * Premendo //Ctrl+R// prendiamo in considerazione tutte le caselle di testo. | ||
+ | * Le costanti standard sono entità predefinite nel programma , e si richiamano scrivendo ‘%e’ (numero di Nepero), ‘%pi’ (pi greco), etc. | ||
+ | * wxMaxima distingue l’inserimento di un numero implicitamente esatto (7/2) da un numero reale a precisione finita (3.5), e restituisce coerentemente il valore qualora sia un risultato esatto. | ||
+ | | ||
+ | * Possiamo inserire anche celle di testo, dove indicare ciò che stiamo eseguendo. | ||
+ | |||
+ | **Alcuni comandi principali** | ||
+ | |||
+ | - Per eliminare tutto dobbiamo dare il comando: | ||
+ | Kill (all); | ||
+ | è indicato dare tale comando ogni qual volta si inizia un nuovo lavoro, questo ci permette di eseguire la pulizia della memoria (il server mantiene la memoria dei lanci precedenti). Questo è necessario perché nella memoria vengono tenute tutte le variabili utilizzate ed il sistema non viene riavviato ogni volta che effettuiamo un comando. Con //kill (all)// andiamo a lavorare in un ambiente vergine. | ||
+ | |||
+ | - Possiamo definire noi stessi delle variabili standard, tipo : | ||
+ | pippo : 3*pluto | ||
+ | In questo modo possiamo richiamare //pippo// ogni qual volta ci serve. | ||
+ | |||
+ | - Se ad un certo punto vogliamo eliminare la variabile definita, diamo il comando : | ||
+ | kill ( pippo ) | ||
+ | - Possiamo eseguire anche valutazioni concatenate, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | La valutazione di una riga è un operazione implicita del Maxima, che processa (' | ||
+ | |||
+ | - Se dobbiamo eseguire più valutazioni concatenate possiamo dare il comando : | ||
+ | ev ( ev ( ev (………..))); | ||
+ | - Esiste un alternativa per non scrivere più volte //ev// : | ||
+ | ev ( pippo + 2 , infeval ); | ||
+ | il comando // | ||
+ | Si possono fare anche infinite valutazioni finché il programma non confronta due valori uguali e si ferma. | ||
+ | Tale comando è tanto comodo quanto pericoloso, infatti può capitare che Maxima si ' | ||
+ | |||
+ | - E’ possibile richiedere ulteriori valutazioni utilizzando l' | ||
+ | ev ( pippo + 2 , eval ); | ||
+ | //eval// = richiesta esplicita di una seconda valutazione (una valutazione in più). | ||
+ | |||
+ | **Definizione di una funzione e un espressione :** | ||
+ | |||
+ | - L’ operatore “:” definisce un espressione, | ||
+ | |||
+ | - Definiamo un espressione : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - Definiamo una funzione: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Per valutare l’espressione è necessario richiamarla tramite il comando //ev// (prima l’espressione da richiamare e poi ”,” l’assegnazione della variabile), mentre per la funzione la valutazione viene ritardata al momento in cui avviene l’assegnazione del parametro. | ||
+ | Questo implica che è possibile richiedere valori diversi della funzione, senza doverla nuovamente valutare. | ||
+ | Come notiamo l’operatore “:=” ha la caratteristica di non cambiare il valore alle variabili finché non definiamo il valore della variabile stessa ( nel nostro caso la x). | ||
+ | |||
+ | - Se vogliamo definire una funzione con valutazione all’ atto della definizione, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | In questo modo alla variabile “a” è stata sostituito immediatamente il valore //pluto//, cosa che non avveniva con l’ operatore “:=”. | ||
+ | |||
+ | =====ESEMPIO: | ||
+ | **Programma che calcola i coefficienti della forma lineare degli spostamenti in un elemento TRIA3:** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - lista [ , , ,] : è il comando che ci permette di implementare una serie di entità. | ||
+ | A differenza dell’array la sua dimensione non deve essere definita: gli elementi possono essere aggiunti in qualsiasi momento tramite il comando “append”. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - Per l’estrazione dell’ i-esimo elemento della lista è sufficiente richiamare, nelle parentesi quadre, la posizione dell’elemento all’interno della stessa: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - A partire dallo stesso concetto, è possibile sfruttare la sintassi vista per riassegnare il valore di una specifica posizione: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - // | ||
+ | |||
+ | La sintassi generale del comando // | ||
+ | Entrambe le liste vanno racchiuse tra parentesi quadre e separate da una virgola. | ||
+ | |||
+ | In alternativa si possono definire le liste in precedenza e utilizzare queste all' | ||
+ | |||
+ | Ad esempio: | ||
+ | |||
+ | eqns : [equazione 1,equazione 2, | ||
+ | var : [variabile 1, variabile 2, ..., variabile M]; | ||
+ | linsolve ( eqns , var ); | ||
+ | | ||
+ | {{: | ||
+ | |||
+ | - // | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - Operazione di differenziazione : comando //diff// ( espressione da derivare, variabile di derivazione , ordine di derivazione ). | ||
+ | |||
+ | Ad esempio: | ||
+ | |||
+ | diff ( sin(x)/x , x , 2 ); | ||
+ | deriva l' | ||
+ | diff ( sin(x)/ | ||
+ | deriva l' | ||
+ | |||
+ | Se non si specifica l' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - // | ||
+ | |||
+ | {{: | ||
+ | |||
+ | - // | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | ---- | ||
+ | ---- | ||
+ | |||
+ | file postazione cattedra | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: |