wikipaom2016:lab3
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 | ||
wikipaom2016:lab3 [2016/03/22 19:23] – [Implementazoine del metodo utilizzando MAXIMA] 88608 | wikipaom2016:lab3 [2016/05/28 17:14] (versione attuale) – [Materiale fornito: Maxima] ebertocchi | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== Laboratorio 3: Comandi vari Maxima e Quadratura gaussiana====== | ||
+ | ===== Comandi vari Maxima ===== | ||
+ | Sono stati introdotti nuovi comandi che consentono un utilizzo più efficace e completo del manipolatore algebrico: | ||
+ | ratsubst(a, | ||
+ | Sostituisce //a// al posto di //b// nella formulazione //c// e mostra l' | ||
+ | {{: | ||
+ | assume | ||
+ | forget | ||
+ | //assume// memorizza delle istruzioni che, a meno che non siano inconsistenti o ridondanti, sono mantenute in considerazione nel corso delle formulazioni successive. In tal modo è possibile, ad esempio, far sapere al software che una data variabile è positiva e quindi non necessita l' | ||
+ | Con //forget// invece maxima dimentica l' | ||
+ | {{: | ||
+ | |||
+ | makelist(espres, | ||
+ | Genera una lista di elementi secondo la funzione specificata come primo argomento nella variabile indipendente indicata al secondo. Il terzo e quarto argomento individuano gli estremi dell' | ||
+ | |||
+ | length([x_1, | ||
+ | Fornisce il numero di elementi di una lista. Se applicato ad una matrice ne indica invece il numero di righe. | ||
+ | |||
+ | wxplot2d([discrete, | ||
+ | Questo comando consente la graficazione discreta, ovvero di tracciare un grafico punto per punto anziché tramite una lista di funzioni. Il comando // | ||
+ | {{: | ||
+ | |||
+ | trigsimp | ||
+ | Per considerare le proprietà di base delle funzioni trigonometriche nella valutazione dell' | ||
+ | {{: | ||
+ | |||
+ | expand | ||
+ | trigexpand | ||
+ | Il comando //expand// e // | ||
+ | {{: | ||
+ | |||
+ | realpart(y) | ||
+ | imagpart(y) | ||
+ | Sia y un numero complesso, tali comandi forniscono la sua parte reale ed immaginaria. | ||
+ | |||
+ | exponentialize(y) | ||
+ | Per passare dalla forma trigonometrica a quella esponenziale del numero complesso. | ||
+ | |||
+ | demoivre(y) | ||
+ | Per passare dalla forma esponenziale complessa a quella trigonometrica. | ||
+ | |||
+ | block([v_1, | ||
+ | Garantisce la non modifica di variabili utilizzate in precedenza racchiudendo il codice che le impiega in un blocco, in questo modo variabili omonime ma con differente contenuto non interferiscono. Il parametro tra parentesi quadra viene utilizzato solo all' | ||
+ | Per scambiare il contenuto di due variabili può risulare utile la definizione di una variabile temporanea //tmp//. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | quad_qag(f(x), | ||
+ | Consente l' | ||
+ | |||
+ | ===== Operazioni con matrici su Maxima===== | ||
+ | Per generare una matrice su Maxima si può procedere in diversi modi: | ||
+ | - Si inizializza una matrice nulla e poi si sostituiscono i valori nulli con quelli desiderati {{: | ||
+ | - Si definisce la matrice tramite liste, che ne rappresentano le righe {{: | ||
+ | - Per definire una matrice i cui elementi sono funzione degli indici di riga e di colonna si impiega il comando // | ||
+ | {{: | ||
+ | |||
+ | Alcuni esempi: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | |||
+ | transpose(A) | ||
+ | Fornisce la trasposta della matrice A. | ||
+ | |||
+ | determinant(A) | ||
+ | Calcola il determinante della matrice A. | ||
+ | |||
+ | augcoefmatrix([eqn_1, | ||
+ | Fornendo come input un sistema lineare di equazioni e le sue variabili indipendenti, | ||
+ | {{: | ||
+ | |||
+ | submatrix | ||
+ | Per estrarre la sottomatrice di B | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== Quadratura Gaussiana ===== | ||
+ | |||
+ | Il metodo di Quadratura Gaussiana permette la risoluzione numerica di integrali di funzioni non risolvibili analiticamente. \\ | ||
+ | Data una generica funzione f(x) si considera un certo numero di punti x < | ||
+ | $$ | ||
+ | G = \sum_{i=1}^n w_i f(x_i) | ||
+ | $$ \\ | ||
+ | I punti di campionamento x < | ||
+ | |||
+ | ====Implementazoine del metodo utilizzando MAXIMA==== | ||
+ | |||
+ | Prendiamo in esame un generico polinomio di terzo grado e procediamo con un metodo di quadratura per due punti. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Indico con x < | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Per ricavare le incognite x < | ||
+ | |||
+ | {{: | ||
+ | |||
+ | In questo modo ottengo un sistema di quattro equazioni in quattro incognite che vado a risolvere utilizzando il comando " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Il sistema ammette due soluzioni, sols[1] e sols[2]. Definisco le incognite sulla base di una delle due soluzioni per mezzo del comando " | ||
+ | |||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | Il residuo non dipende dai coefficienti a,b,c,d del polinomio e, in particolare, | ||
+ | Il metodo di quadratura Gaussiana per un numero n di punti di campionamento, | ||
+ | |||
+ | === Funzione diversa da polinomio === | ||
+ | Vediamo il metodo di Gauss utilizzando una funzione diversa dal polinomio, per esempio $\sin(x)$ e la integriamo tra 0 e $\pi$ : | ||
+ | $$\int_{0}^{\pi }\sin (x)$$ | ||
+ | Occorre effettuare un cambio di variabili: $x(\xi )$ tale che $$\begin{cases} | ||
+ | & \text{ } x(-1)=0 \\ | ||
+ | & \text{ } x(1)=\pi | ||
+ | \end{cases}$$, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Il differenziale dx diventa $dx=\frac{d(x(\xi ))}{d\xi }$ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Si ottiene $$\int_{-1}^{1}\sin (x(\xi ))\frac{dx(\xi )}{d\xi }d\xi$$ al quale si applica il metodo di Gauss | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | Il primo numero tra le parentesi quadre rappresenta il valore esatto, il secondo il residuo e il terzo l' | ||
+ | ======Materiale fornito: Maxima ====== | ||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ~~DISCUSSION~~ |