wikipaom2015:lez05
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
wikipaom2015:lez05 [2015/04/17 16:28] – [- makelist] 168903 | wikipaom2015:lez05 [2015/08/05 16:43] (versione attuale) – 202447 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== Lezione 5: wxMaxima: Integrazione definita, ossia Quadratura gaussiana====== | ||
+ | In questa lezione abbiamo analizzato, con l' | ||
+ | |||
+ | ===== 5.1 Comandi utilizzati in wxMaxima ===== | ||
+ | |||
+ | Sono stati introdotti nuovi comandi per un utilizzo più efficace del manipolatore algebrico. | ||
+ | |||
+ | ==== utilizzo del comando := ==== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Con questo comando è possibile **definire una funzione**. La funzione richiede di esplicitare dei parametri, | ||
+ | |||
+ | f(x) : x è semplicemente un segnaposto, dove il primo parametro passato alla funzione verrà sostituito ovunque trovi x dentro l’espressione. | ||
+ | |||
+ | |||
+ | Nel caso si avessero più parametri, questi vengono separati da delle virgole. | ||
+ | |||
+ | define | ||
+ | |||
+ | Questo comando permette di definire le funzioni con la **valutazione all’atto della definizione e non all’atto della chiamata.**\\ Perciò, se scrivo | ||
+ | |||
+ | a0:0\\ | ||
+ | f(x):= a0 + a1*x | ||
+ | |||
+ | il programma mi fornisce come output a0 + a1x.\\ Ma se invece digito | ||
+ | |||
+ | define (f(x), a0 + a1*x) | ||
+ | |||
+ | allora il manipolatore scrive a1x, poichè compie subito la valutazione. | ||
+ | expand | ||
+ | |||
+ | Permette di espandere la funzione in **somma di monomi e ne effettua la semplificazione.** | ||
+ | |||
+ | […. , ….] | ||
+ | |||
+ | Si tratta del comando **lista**. Se si vuole avere un **sistema di equazioni** all’interno del manipolatore si crea una lista di equazioni, dove ogni equazione è separata da una virgola.\\ | ||
+ | In generale una lista può contenere qualunque entità, anche altre liste. | ||
+ | |||
+ | (…) | ||
+ | |||
+ | Le parentesi tonde, a differenza delle quadre, denotano un **blocco**. | ||
+ | |||
+ | Per creare un ciclo di lista invece si deve creare un **costrutto do** | ||
+ | {{: | ||
+ | |||
+ | Il ciclo for permette di ripetere una data operazione più volte. | ||
+ | |||
+ | | ||
+ | |||
+ | **Estrae la lunghezza della lista** in esame, e il ciclo for costruisce un polinomio in cui la x è elevata a ciascuno dei termini della lista creata in precedenza. La lunghezza della lista è il numero degli elementi. | ||
+ | |||
+ | wxplot2d | ||
+ | |||
+ | Permette di **plottare la funzione**, ovvero graficarla. Con wx si indica che la figura è di tipo statico, ovvero che viene rappresentata sulla stessa interfaccia.\\ | ||
+ | Viene scritta in questo modo: | ||
+ | |||
+ | '' | ||
+ | |||
+ | ATTENZIONE: **non posso plottare una funzione che contiene parametri senza averli prima definiti** | ||
+ | |||
+ | | ||
+ | |||
+ | Permette di plottare la funzione **in una nuova finestra**, fuori dal foglio di lavoro. | ||
+ | |||
+ | | ||
+ | |||
+ | Permette di plottare la funzione lungo le 3 dimensioni. | ||
+ | |||
+ | limit | ||
+ | |||
+ | Svolge l’operazione di **limite**. | ||
+ | |||
+ | es) limit (f(x), x, inf) | ||
+ | |||
+ | | ||
+ | |||
+ | Rappresenta un **infinito reale positivo**. | ||
+ | |||
+ | append | ||
+ | |||
+ | Questo è il comando che permette di **accodare una funzione ad un’altra funzione**. | ||
+ | |||
+ | makelist | ||
+ | |||
+ | Si tratta del comando per la costruzione automatica di funzioni di lista. **Crea una lista scorrendo un indice i**. | ||
+ | |||
+ | Un esempio è: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | < | ||
+ | questo codice può essere copiaincollato da/a wxmaxima o fortran | ||
+ | </ | ||
+ | |||
+ | |||
+ | | ||
+ | |||
+ | Permette di effettuare l’**espansione in serie di Taylor**. | ||
+ | |||
+ | Un classico esempio generico sarebbe: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | | ||
+ | |||
+ | È la parola chiave che permette di creare una legenda. | ||
+ | Può ritornare utile impostare manualmente la legenda, creando una lista sul manipolatore algebrico. | ||
+ | {{: | ||
+ | |||
+ | Per convertire in una legenda un numero (ad esempio 1) in una stringa utile per la legenda si usa il comando di conversione in stringa denominato __**string**__. | ||
+ | |||
+ | | ||
+ | |||
+ | È una funzione di libreria che permette di effettuare l’**integrale in forma numerica con il metodo dei trapezi**. | ||
+ | |||
+ | |||
+ | ===== 5.2 Quadratura | ||
+ | Col termine **quadratura** si intende un' | ||
+ | **Si tratta di una forma numerica approssimata per calcolare rapidamente gli integrali di funzione.** | ||
+ | |||
+ | La quadratura gaussiana è una **stima**; non è una delle soluzioni più precise, salvo aumentando i punti di campionamento, | ||
+ | |||
+ | |||
+ | |||
+ | ===== 5.2.1 Quadratura a un punto di integrazione ===== | ||
+ | |||
+ | |||
+ | |||
+ | Si supponga di voler risolvere l’integrale normalizzato su un intervallo [-1,1] (dunque simmetrico rispetto all' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | $$ | ||
+ | G = \sum_{i=1}^n w_i f(x_i) | ||
+ | $$ | ||
+ | |||
+ | La scelta dei punti è totalmente arbitraria, ma se vengono usati i **punti di Gauss** si ottiene la stima migliore, ovvero l' | ||
+ | |||
+ | Si pensi alla funzione campione: | ||
+ | |||
+ | f(x)=a0+a1*x | ||
+ | |||
+ | e si immagini di volerla integrare fissato un punto x1 sull’ asse delle ascisse e un relativo peso w1. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | L’ implementazione attraverso il programma MAXIMA avverrà nel seguente modo: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | proseguendo con l’ algoritmo risolutivo non resta che calcolare G (cioè il risultato della nostra sommatoria), | ||
+ | Implementando: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | si noti che nel residuo sono presenti le variabili x1 w1 a0 a1 contemporaneamente. Sarà necessario inserire una lista di equazioni da risolvere in una apposita lista di incognite: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | le equazioni sono state risolte attraverso | ||
+ | ===== 5.2.2 Integrazione gaussiana a due punti ===== | ||
+ | |||
+ | È possibile scrivere allo stesso modo un’integrazione a due punti. | ||
+ | Così si avranno due pesi per i due punti: x1, w1, x2, w2, ovvero si hanno 4 incognite in 4 equazioni. | ||
+ | |||
+ | Si parte da una funzione polinomiale che abbia 4 coefficienti su cui fare le derivate del residuo, perciò nel caso specifico sarà una funzione cubica. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Relegando il calcolo ai manipolatori algebrici si ha: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Il polinomio parallelo, secondo Gauss vale: | ||
+ | {{: | ||
+ | |||
+ | Si indaga nel seguito per quali scelte dei punti xi e dei pesi wi l’eguaglianza precedente valga esattamente, | ||
+ | Siccome la precedente eguaglianza deve valere per valori generici dei coefficienti " | ||
+ | {{: | ||
+ | |||
+ | dove tali equazioni devono essere associate all’equazione iniziale. | ||
+ | |||
+ | Definite le incognite che risolvono le equazioni e combinando le equazioni stesse si ottengono i valori delle incognite. | ||
+ | {{: | ||
+ | |||
+ | __Si verifica con facilità che l’equazione iniziale R=0 viene soddisfatta dalla scelta dei due pesi w1 e w2 e dei due punti di Gauss x1 e x2.__ | ||
+ | |||
+ | ** | ||
+ | In generale, la quadratura gaussiana prevede lo stesso approccio per n punti, e integra esattamente un polinomio di grado 2n-1.**\\ | ||
+ | I polinomi di gradi diversi da questi valori possono essere considerati casi particolari di quelli di grado superiore, per cui vengono integrati con il tipo di quadratura adatto a questi ultimi.\\ | ||
+ | es) 2 punti: polinomio di grado 3; quello di secondo grado è un caso particolare di quello di terzo, per cui uso comunque la quadratura a due punti. | ||
+ | |||
+ | Si osserva che, se l’integrale si estende tra valori generici a e b e non tra [-1,1], con opportuni cambi di variabile si può riportare l’intervallo di integrazione tra [-1,1], come richiesto dall’integrazione Gaussiana. | ||
+ | |||
+ | Infine **l’integrale doppio** può essere risolto tramite integrazione gaussiana poiché è definito come due integrali singoli concatenati. La soluzione è derivata dall’**integrazione a due punti sull’intervallo monodimensionale**: | ||
+ | Inoltre nell’integrale doppio tutti i **pesi** sono unitari, dato che la loro **somma deve essere uguale a 4**. | ||
+ | ===== 5.3 Esempi ===== | ||
+ | |||
+ | Per inizializzare una funzione del tipo f(x)=a0+a1*x su MAXIMA è possibile applicare vari metodi. | ||
+ | |||
+ | ==== 1) Assegnare a una variabile il valore di un’ espressione ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | (n.b. con questa procedura rimane inalterato il carattere di espressione). | ||
+ | |||
+ | Oppure è possibile mantenerne il carattere di funzione: | ||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 2) Definire una funzione e valutarla a posteriori ==== | ||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 3) Eseguire un cambio di variabile ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 4) Definire una funzione a priori ==== | ||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | ===== *Bibliografia ===== | ||
+ | -A. Strozzi, Progettazione Assistita di Strutture Meccaniche | ||
+ | |||
+ | -Minimal Maxima | ||
+ | |||
+ | ~~DISCUSSION|Note di redazione~~ |