Polinomi, integrazione e ottimizzazione

Slides:



Advertisements
Presentazioni simili
Equazioni non lineari Gabriella Puppo.
Advertisements

Filtri FIR.
MATEMATICA PER L’ECONOMIA
Metodi numerici in Matlab
Capitolo 8 Sistemi lineari.
Autovalori e autovettori
MATLAB.
MATLAB.
MATEMATICA PER L’ECONOMIA
CONTENUTI della I° parte
MATEMATICA PER L’ECONOMIA
Integrazione Corso: Analisi Numerica Anno Accademico:
Implementazione del problema della approssimazione ai minimi quadrati Camillo Bosco Corso di Analisi Numerica A.A
Definizione e caratteristiche
Richiami di Identificazione Parametrica
Elementi di Matematica
LE EQUAZIONI.
Inversione differenziale della Cinematica
PER FUNZIONI DI PIÙ VARIABILI - 2.
CALCOLO DIFFERENZIALE PER FUNZIONI DI PIÙ VARIABILI. ESTREMI VINCOLATI, ESEMPI.
SISTEMI D’EQUAZIONI ED EQUAZIONI DIFFERENZIALI LINEARI.
EQUAZIONI DIFFERENZIALI ORDINARIE ALTRI TIPI INTEGRABILI
EQUAZIONI DIFFERENZIALI LINEARI A COEFFICIENTI COSTANTI.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB.
Metodi FEM per problemi ellittici
Metodi FEM per problemi ellittici lineari a tratti Gabriella Puppo.
LE EQUAZIONI DI SECONDO GRADO
Funzioni matematico – statistiche I comandi matematici di più comune utilizzo, applicabili a scalari e matrici, sono: Sqrt(x), che calcola la radice quadrata.
Importazione di dati Nellambito dellutilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dallutilizzatore.
Uso dei cicli y t =c+ty t-1 +e Un uso dei cicli può essere quello di creare una serie storica per cui y t =c+ty t-1 +e dove poniamo c e t scalari ed e~N(0,1).
Ricerca della Legge di Controllo
STATISTICA a.a METODO DEI MINIMI QUADRATI REGRESSIONE
Studente Claudia Puzzo
TRINOMIO DI II °: fattorizzazione o completamento del quadrato?
Algebra matriciale e linguaggio matriciale in MATLAB
INTERPOLAZIONE Si parla di processo di interpolazione quando, conoscendo una serie di dati, sperimentali o statistici, riguardo ad un evento, si vuole.
Metodi numerici per l’approssimazione
Metodi numerici per lapprossimazione Laboratorio di Metodi Numerici a.a. 2008/2009 Prof. Maria Lucia Sampoli.
Il calcolo di radiosity
Esempio: somma se, allora [ per n addendi ] se ( se )
INTRODUZIONE A MATLAB.
ALGEBRA algebrizzare problemi
EQUAZIONI DI SECONDO GRADO
LA SCOMPOSIZIONE DI POLINOMI IN FATTORI
Daniele Santamaria – Marco Ventura

Laureando: Enrico Masini
Di Cunzolo Alessandro Farioli Giuseppe 10 Gennaio 2012
Prof. Cerulli – Dott.ssa Gentili
Prof. Cerulli – Dott.ssa Gentili
EQUAZIONI E DISEQUAZIONI
Milano, 17 Dicembre 2013 Informatica B Informatica B Matlab Laboratorio del 14/01/2014 Responsabili di laboratorio: Gianluca Durelli:
ESTENSIONI SEMPLICI e TEOREMA DELL’ELEMENTO PRIMITIVO
Programmazione lineare
Sottospazi vettoriali
LE EQUAZIONI DI GRADO SUPERIORE AL SECONDO
La scomposizione col metodo di Ruffini
Equazioni lineari.
La ricorsione.
4 < 12 5 > −3 a < b a > b a ≤ b a ≥ b
Programmazione lineare: un esempio Mix produttivo ottimo con risorse vincolate Materiale di studio: M. Fischetti, Lezioni di RO, Cap. 3. Libreria Progetto.
Forma normale delle equazioni di 2° grado Definizione. Un'equazione di secondo grado è in forma normale se si presenta nella forma Dove sono numeri.
Un sistema di equazioni di primo grado (lineari) ammette soluzioni (una o infinite) se e solo se il rango (caratteristica) della matrice completa è uguale.
Sistemi di equazioni lineari. Sistemi di primo grado di due equazioni a due incognite Risolvere un sistema significa trovare la coppia di valori x e y.
Raccogliamo x al primo membro e 2 al secondo:
Ancora sulle equazioni di secondo grado….. Equazione di secondo grado completa Relazione tra le soluzioni di un'equazione di secondo grado.
Lezione n° 5: Esercitazione
Lezione n° 10 Algoritmo del Simplesso: - Coefficienti di costo ridotto - Condizioni di ottimalità - Test dei minimi rapporti - Cambio di base Lezioni di.
Parte 5 Sommario Uso routine di calcolo predefinite di Matlab –Risoluzione equazioni non lineariRisoluzione equazioni non lineari –Ricerca minimo di una.
Transcript della presentazione:

Polinomi, integrazione e ottimizzazione

Polinomi Nell’ambito dell’algebra dei polinomi, alcune funzioni possono risultare di una certa utilità. La funzione roots funziona roots(v), dove v è un vettore con i coefficienti della incognita, dal termine di più alto grado al termine noto, ed estrae le radici del polinomio. Ad esempio se abbiamo il polinomio x5-x4-7x3+7x2+12x-12 e vogliamo trovarne le radici, ossia i valori di x che la azzerano, dobbiamo scrivere roots([1 -1 -7 7 12 -12]) e MATLAB calcola tutte le radici, reali o complesse che siano. NB1: nel caso non vi sia un termine va posto zero!! NB2: l’ultimo è il termine noto.

Polinomi La funzione polyval funziona polyval(v,k), dove v è un vettore con i coefficienti della incognita, dal termine di più alto grado al termine noto, k è un numero e calcola il polinomio in corrispondenza di k (ossia sostituisce x=k). Ad esempio se abbiamo il polinomio -3x4-2x3+6x2+2x-1 e vogliamo calcolarlo in x=-1, dobbiamo scrivere polyval([-3 -2 6 2 -1],-1) e MATLAB restituisce 2.

Polinomi La moltiplicazione tra due polinomi, indicati sempre attraverso i vettori contenenti i coefficienti, avviene con il comando conv; se moltiplico x3-2 per x2+3x-5 devo fare: x=[1 0 0 -2]; y=[1 3 -5]; z=conv(x,y); e MATLAB restituisce 1 3 -5 -2 -6 10, ossia il polinomio (ovviamente di 5° grado) x5+3x4-5x3-2x2+6x+10. La divisione tra due polinomi, indicati sempre attraverso i vettori contenenti i coefficienti, avviene con il comando deconv,che funziona come conv e dà anche un vettore con l’eventuale resto.

Integrazione numerica Per quanto riguarda l’integrazione numerica in 2 variabili, il valore di un integrale definito del tipo dove f:R=> R, ossia funzione reale di variabile reale, può essere calcolato con la funzione quad8, dove quad sta per formula di quadratura, ossia di integrazione numerica. Per integrare una funzione va usato il comando inline, che introduce una variabile nel command senza passare dall’edit. Se vogliamo quindi calcolare

Integrazione numerica definiamo la funzione e la calcoliamo nel modo seguente >> f=inline(‘exp(-3*x).*cos(2*x)’); >> quad8(f,0,π); e MATLAB calcola 0.2308. Notiamo che: La funzione inline riconosce x come variabile e vuole il suo argomento (la funzione) tra ‘; La funzione quad8 funziona quad8(funzione, estremo inf, estremo sup) Matlab integra fino ad un massimo di 3 variabili (funzione dblquad; per più di 3 variabili dobbiamo ricorrere alla simulazione numerica (Monte Carlo).

Ottimizzazione non vincolata Per risolvere un problema di ottimizzazione non vincolata (max o min) e quindi di programmazione lineare del tipo max f(x) oppure min f(x) x x possiamo utilizzare 2 funzioni: - fminsearch, che sfrutta una variante del metodo del simplesso - fminunc, che sfrutta il calcolo del gradiente.

Ottimizzazione non vincolata Definita una inline function che contenga la funzione obiettivo: g(x)=(x1+3)2 + (x2-2)2 possiamo calcolare il minimo della funzione (per calcolare il max basta fare min(-g(x)) ) digitando: >> f=inline('(x+3)^2 + (x(2)-2)^2'); >> s1= fminsearch(f,[1 1]); >> s2 = fminunc(f,[1 1]); dove [1,1] è un punto iniziale dal quale far partire l’algoritmo. MATLAB fornisce la soluzione. Non sempre è detto che le due soluzioni coincidono, dipende dalla forma del gradiente!

Ottimizzazione vincolata Per risolvere un problema di ottimizzazione vincolata di 1°grado, ossia di programmazione lineare del tipo dove c’x è la funzione obiettivo, utilizziamo il comando linprog. Questo considera un problema di minimizzazione, per cui la massimizzazione si ottiene sempre facendo min(-f(x)).

Ottimizzazione vincolata Linprog funziona: X=LINPROG(c,A,b,Aeq,Beq,LB,UB,X0,OPTIONS), dove: c è il vettore dei pesi delle variabili A è la matrice in Ax<b b è il vettore in Ax<b Aeq è la matrice in Ax=b beq è il vettore in Ax<b lb è l’estremo inferiore dell’intervallo di x ub è l’estremo superiore dell’intervallo di x X0 è il punto di partenza dell’algoritmo options => v. optimset functions

Ottimizzazione vincolata Dovendo risolvere il problema impostiamo con linprog: >> s=linprog([2 -3],[1 1],3,[],[],[0]); dove le parentesi vuote indicano che quel tipo di vincolo non è presente. Un solo zero in quanto è solo x1 ad essere vincolata.

Ottimizzazione vincolata Per risolvere un problema di ottimizzazione vincolata di 2°grado, ossia di programmazione quadratica del tipo dove (x’Hx)/2+c’x è la funzione obiettivo, utilizziamo il comando quadprog. Questo considera un problema di minimizzazione, la massimizzazione si ottiene sempre facendo min(-f(x)).

Ottimizzazione vincolata quadprog funziona: x=quadprog(H,f,A,b,Aeq,beq,LB,UB) dove: H è la matrice dei pesi nella forma quadratica c è il vettore dei pesi delle variabili di 1° grado A è la matrice in Ax<b b è il vettore in Ax<b Aeq è la matrice in Ax=b beq è il vettore in Ax<b lb è l’estremo inferiore dell’intervallo di x ub è l’estremo superiore dell’intervallo di x

Ottimizzazione vincolata Dovendo risolvere il problema impostiamo con quadprog i singoli elementi del problema di ottimizzazione:

Ottimizzazione vincolata >> H = [2 0 ; 0 6]; >> c = [3 -1]; >> Aeq=[1 2]; >> beq=4; >> lb=[0 0]; >> x = quadprog(H,c,[],[], Aeq,beq,lb) Il risultato è x = 0.2857 1.3571

Soluzione di equazioni non lineari Talvolta siamo di fronte ad equazioni non lineari, ossia equazioni che non possono essere invertite per esprimere la x in funzione di altre variabili. Es. se so che y = 3x+e1-x, ovviamente non possiamo invertire questa relazione e scrivere x=… per cui dobbiamo ricorrere a metodi numerici che facciano dei “tentativi” fino a che non troviamo il valore di x. Ad es. se sappiamo che y=3, possiamo trovare il valore di x che rende y=3 (ossia lo zero della funzione) con il comando fzero. La funzione di cui stiamo cercando lo zero può essere introdotta con un m-file o con un comando inline. Poiché noi stiamo cercando lo zero, dovremo scrivere la funzione come y-3, perché è di questa che cerchiamo lo zero!! Quindi il codice in MATLAB può essere il seguente:

Soluzione di equazioni non lineari >> f=inline(‘3*x+exp(1-x)-3’); >> fzero(f,2) dove 2 è un numero dal quale faccio partire l’algoritmo (initial guess), che è basato su una variante del metodo di bisezione. Il risultato è: 0.3809. In corrispondenza di tale valore di x la y vale 3.