Prima Esercitazione: introduzione a Matlab

Похожие документы
Esercizio 1. Esercizio 2

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Raccolta di esercizi di Calcolo Numerico Prof. Michela Redivo Zaglia

2. Costruire un M function file di Matlab che calcola il valore del

Capitolo 1. Esercizi a.a Esercizi. Esercizio 1.1 Dimostrare che il metodo iterativo

Esercizi su algebra lineare, fattorizzazione LU e risoluzione di sistemi lineari

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

Esercitazione di Calcolo Numerico 1 27 Maggio Calcolare la fattorizzazione P A = LU della matrice A =

Alcuni esercizi in preparazione all appello scritto di Calcolo Numerico

Raccolta di Esercizi d esame ( di Calcolo Numerico) Prof. Laura Pezza. Equazioni non lineari

ISTRUZIONI PER LA CONSEGNA DEI FILE MATLAB

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Laboratorio di Calcolo Numerico

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

A.A Prof. R. Morandi

Sistemi lineari. Lucia Gastaldi. DICATAM - Sez. di Matematica,

MATLAB Elementi di grafica Costrutti di programmazione

Introduzione al MATLAB c Parte 3 Script e function

Corso di Geometria BIAR, BSIR Esercizi 2: soluzioni

Esercizi di Complementi di Matematica (L-Z) a.a. 2015/2016

Un sistema lineare si rappresenta in generale come

Laboratorio di Matematica Computazionale A.A Lab. 4

2. Risolvere con il metodo di eliminazione di Gauss con pivoting parziale il seguente sistema lineare:

Prove d esame Esercizi con Matlab

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

Matlab : le basi. Vediamo ora un esercizio di calcolo: Il volume di una sfera è dato da V=4*π*r 3 /3 dove r è il raggio.

Laboratorio 2. Calcolo simbolico, limiti e derivate. Metodo di Newton.

Autovalori ed autovettori di una matrice

Anno 4 Matrice inversa

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III)

ESERCITAZIONE MATLAB

2 Sistemi lineari. Metodo di riduzione a scala.

Corso di Matematica per la Chimica

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Esercitazioni di Analisi e Simulazione dei Processi Chimici

Calcolo Numerico Informatica Manolo Venturin A.A Guida all esame

Facoltá di Scienze MM.FF.NN. Corso di Studi in Informatica- A.A

Laboratorio 10 Metodi Bisezione e Newton

Risoluzione di sistemi lineari sparsi e di grandi dimensioni

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Confronto tra stringhe. (modulo) Calcolo della media e della varianza. Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo)

Calcolo Numerico con elementi di programmazione

Soluzioni agli Esercizi di Geometria e Algebra per Ingegneria Aerospaziale (nuovo ordinamento)

Prendiamo in considerazione la matrice tridiagonale

Esercitazione di Calcolo Numerico 1 22 Aprile Determinare la fattorizzazione LU della matrice a 1 1 A = 3a 2 a 2a a a 2 A =

Programmazione Matlab

MATLAB - Programmazione - 2. Antonino Polimeno

Risoluzione di problemi ingegneristici con Excel

Esercitazione 4: Vettori e Matrici

Calcolo Numerico per Ingegneria. Corso estivo di Bressanone. Prof. L. Bergamaschi SOLUZIONE DELLA PROVA SCRITTA del

Capitolo 3: Ottimizzazione non vincolata parte III. E. Amaldi DEI, Politecnico di Milano

Esercitazione 6: Metodi iterativi per sistemi lineari.

Equazioni e sistemi non lineari

Corso di laurea in Informatica Calcolo Numerico Prof.ssa L. D Amore 12 Dicembre 2008 Esercizi di riepilogo tipo prova d esame

INTERPOLAZIONE. Introduzione

Esercizi di ripasso: geometria e algebra lineare.

Laboratorio 5-6 Metodi di Bisezione, Newton e Punto Fisso

Metodi iterativi per equazioni nonlineari.

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Esercitazione 1 Conversione di base

Corso di Laurea in Ingegneria Gestionale Anno Accademico 2013/2014 Calcolo Numerico

Problema. Equazioni non lineari. Metodo grafico. Teorema. Cercare la soluzione di

ESPONENZIALE ED EQUAZIONI DIFFERENZIALI

1 Il polinomio minimo.

Matlab. Istruzioni condizionali, cicli for e cicli while.

RISOLUZIONE APPROSSIMATA DI UN EQUAZIONE

Introduzione a Matlab (e al Calcolo Numerico)

Laboratorio di Calcolo Numerico

Metodi per la risoluzione di equazioni non lineari

Esame di Calcolo Numerico per Informatica A.A. 2010/11 Proff. S. De Marchi e M. R. Russo 20 giugno 2011

Corso di Calcolo Scientifico

Транскрипт:

Prima Esercitazione: introduzione a Matlab Esercizio Vettori e matrici in Matlab Siano A, B e C le seguenti matrici 3 ( A = 5 3 5 0 0 3, B = 6 0. Calcolare le matrici AB, BA e AB T, se possibile ) ( 0 5, C = 3. Calcolare la matrice D = I BB T, con I la matrice diagonale di dimensione (comando eye) 3. Calcolare il determinante delle matrici A, B, C, D e E = AA T 4. Calcolare le inverse delle matrici A, B, C, D, E ) Date le matrici Vettori e matrici in Matlab A = Cosa fanno le seguenti istruzioni? 7 4 8 0 3, B = 3 7 8 6 5 3 3 A, A B, A inv(b), cos(a), exp(b ), C = [A B], D = [A, B], E = [A; B] () Esercizio 3 Il comando : Costruire col minimo numero di comandi i seguenti vettori e matrici:. [ 3... 9 0 9... ]. [0 0. 0.... ] 3. [00 99... 0] 4. 3 3 3 0 0 3 0 0 0 3 0 0 0 3 0 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 5 0 0 0 0 0 0 5

Seconda Esercitazione: Matlab come linguaggio Esercizio script in Matlab Costruire un m-file di tipo script che preso la matrice a costruisce la matrice a a T + I. Attenzione: deve calcolare il formato di a per saper quale matrice identica. Usare: comando size script in Matlab Costruire un m-file di tipo script che preso il vettore x costruisce la tabulazione di x +. 5 Per esempio, se x=[ 3 4], allora lo script scrive 3 0 4 7 Esercizio 3 script in Matlab Costruire un m-file di tipo script che preso il vettore x lo rovescia come ordine. Per esempio, se x=[ 3 4], allora lo script scrive x=[ 4 3 ]. Usare con attenzione il simbolo : Esercizio 4 L algoritmo di punto fisso Costruire un m-file di tipo script che presa la funzione f(x) e un t esegua l algoritmo di punto fisso sulla funzione f(x) parto da t. È bene costruire un vettore x che contenga tutti i passi dell algoritmo. Criterio d arresto:. Come primo criterio: dopo un certo numero di passi (usando for...). Come secondo criterio: stabilito un certo valore ε=epsilon quando x(i) x(i + ) < ε, oppure quando rilevi che l algoritmo non converge, usando if... Sperimentare il programma con le seguenti funzioni o con altre che si ritiene opportuno: f(x) = cos(x) f(x) = e x f(x) = ln(x + ) f(x) = x 3 f(x) = e x Esercizio bis funzione in Matlab Come Esercizio, ma come funzione di a bis funzione in Matlab Come, ma come funzione di x Esercizio 3bis funzione in Matlab Come Esercizio 3, ma come funzione di x Esercizio 4bis L algoritmo di punto fisso Come Esercizio 4, ma come funzione di t e epsilon. Lo si potrebbe fare canche come funzione della funzione, ma non è tanto affidabile. Meglio cambiare ogni volta il file.

Terza Esercitazione: Matlab come linguaggio: i cicli 3 Esercizio function in Matlab Metodo di bisezione Consideriamo la funzione f(x) = x + / ex nell intervallo [0, ]. Verificare usando il teorema degli zeri che esiste un punto α [0, ] tale che f(α) = 0. Dimostrare che tale punto è unico.. Determinare analiticamente il numero N di iterazioni necessarie per calcolare α con un approssimazione di ε = 0 0 con il metodo di bisezione. 3. Completare il seguente programma che implementa il metodo di bisezione insero istruzioni al posto dei puntini. a = 0; b = ; % intervallo iniziale epsilon = 0^-0; % tolleranza h = b-a; x = (a+b)/; con un ciclo for... N=... for index=:n... oppure con un ciclo while... k = 0; while (h>eps)... if k>000; disp( troppe iterazioni ); La funzione fun deve essere scritta nel file fun.m function y = fun(x) y = /(x^+0.5)-exp(x); function in Matlab Metodo di Newton-Raphson Consideriamo di nuovo la funzione f(x) = x + / ex nell intervallo [0, ] Completare il seguente programma che implementa il metodo di Newton insero istruzioni al posto dei puntini. Utilizzarlo per calcolare lo zero di f con un approssimazione di ε = 0 0. a = 0; b = ; % intervallo iniziale epsilon = 0^-0; % tolleranza x0 = 0.5; err = ; % k = 0; while (err > epsilon) & (k < 000) k = k + ;... La derivate prima della funzione fun deve essere scritta nel file derfun.m function y = derfun(x) y = -*x/(x^+0.5)^-exp(x);

Quarta Esercitazione: I cicli e l algebra lineare 4 Esercizio function in Matlab Una funzione con un input e due output. Dato un vettore, ne trova il massimo e la sua posizione. Per esempio, se x = [.5 0 5 8. 5], la funzione deve restituire 8. (il massimo) e 6 (la sua posizione). La sintassi iniziale dev essere function [m,p]=massimo(x) Nota: La funzione built-in max fa esattamente la stessa cosa per un vettore, ma si comporta diversamente per una matrice. function in Matlab Una funzione con controllo dell input. Data una matrice quadrata ne estrae l antidiagonale come vettore riga Deve quindi dare errore se l input non è una matrice quadrata. Quindi prima di ogni altra cosa deve avere il controllo if size(a,) \simeq error( non va )... size(a,) La funzione error arresta il programma e produce un avvertimento. Esiste anche la funzione warning che non arresta il programma. Nota: Cercare di evitare un ciclo for... Esercizio 3 function in Matlab L algoritmo di Gauss: caso semplice. Una funzione che esegua su una matrice quadrata (controllo) l algoritmo di Gauss nel caso semplice, suppono cioè che non siano necessari scambi di righe e ci sia sempre il pivot sulla diagonale. Costruire la funzione in tre tempi: La funzione esegue solo il primo ciclo dell algoritmo di Gauss con un loop for...: a a a a cioè da a a arriva solo a 0 a a n a n 0 a n Eventualmente può controllare se a = 0 e in tal caso arrestare la funzione. La funzione esegue solo il primo e il secondo ciclo dell algoritmo di Gauss con due loop for... uno dopo l altro: a a a 3 a a a 3 cioè da a a a 3 arriva solo a 0 a a 3 a n a n a n3 0 0 a n3 Eventualmente può controllare, dopo il primo ciclo, se a = 0 e in tal caso arrestare la funzione. 3 La funzione esegue tutto l algoritmo di Gauss sulle prime n colonne: Esaminando il listato del passo precedente si può capire come va eliminato il secondo loop e costruito un loop di n passi che ingloba il primo (ci sono due nested loops). Come sopra può controllare, prima di ogni ciclo, se a ii = 0 e in tal caso arrestare la funzione. Esercizio 4 function in Matlab L algoritmo di Gauss-Jordan nel caso semplice Modificare il precedente algoritmo per fargli eseguire Gauss-Jordan anziché solo Gauss, cioè a a a 3 a 4 a 0 a 3 a 4 a 0 0 a 4 a a a 3 a 4 a 3 a 3 a 33 a 34 0 a a 3 a 4 0 0 a 33 a 34 0 a 0 a 4 0 0 a 33 a 34 a n a n a n3 a n4 0 0 a n3 a n4 0 0 0 a n4

Quinta Esercitazione: Algebra lineare: LU, Jacobi, Gauss-Seidel Introduzione alla grafica 5 Si considerino i sistemi Ax = b e A x = b seguenti: 9 5 3 0 A = 4 3 4 3 6 5 A = 0 5 7 Esercizio Gauss in Matlab 4 3 3 3 4 5 5 0 3 6 4 b = Risolvere i sistemi mediante gli algoritmi di Gauss built-in in Matlab ( sia con \, sia con rref) LU in Matlab Risolvere i sistemi mediante la fattorizzazione LU. Esercizio 3 function in Matlab Jacobi e Gauss-Seidel. Completare la seguente funzione [x,n] = jacobi(a,b,eps) che usa il metodo di Jacobi per calcolare la soluzione del sistema con una tolleranza di epsilon. Il numero di iterazioni effettuate è n. Usare come criterio di arresto successivamente. Il criterio del residuo. Ax b <epsilon. La norma x i x i+ <epsilon function [x,n] = jacobi(a,b,eps); S = T=; x=ones(size(b)); nmax = 00; % numero massimo di iterazioni n = 0; residuo = norm(a*x-b); % while n <= nmax & residuo > epsilon % primo criterio % while n <= nmax & abs(x-... > epsilon % secondo criterio... 3 4 Esercizio 4 Grafici in Matlab Disegnare il grafico delle seguenti funzioni negli intervalli dati: f(x) = x + x + x x [, ] f(x) = log(x x + ) x [0, ] + ( ) arctan f(x) = x 4 x [, 0] x 3 + + π x (0, ) f(x) = x x x [0, ] log( x) + 3 x (, ) Esercizio 4 Grafici in Matlab Una funzione con ricerca massimi e minimi ( x ) x + k Consideriamo per ogni k IR la funzione seguente: f(x) = e x + Costruire un m-file funzione di k che tracci il grafico di f nell intervallo I = [ 3, 3] (con approssimazione di 0.05) e abbia come outupt la matrice così fatta ( minimo di f(x) in I massimo di f(x) in I ) punto di minimo di f(x) in I punto di massimo di f(x) in I

Sesta Esercitazione: Consideriamo k IR le matrici 4 4 A = Esercizio Autovalori, auotovettori, condizionamento Introduzione alla grafica in 3D 0 k k 3 k 0 B = k 0 Autovalori idi una matrice qualunque 0 0 3 0 0 k 0 0 Calcolare tutti gli autovalori e tutti gli autovettori di A per k = 4 e k = 0 e verificare l eventuale ortogonalità degli autovettori. Autovalori di una matrice simmetrica. Calcolare tutti gli autovalori e tutti gli autovettori di B per k = 0 e k = 3/5 e verificare l eventuale ortogonalità degli autovettori. Esercizio 3 Condizionamento in Matlab 6. Mediante un m-file determinare (a meno di 0 ) il k [0, ] per cui cond(a) è massimo e disegnare il grafico di cond(a) in funzione di k.. Per il k trovato, risolvere: il sistema Ax = b con b = soluzioni 4 e il sistema Ax = b con b =. 3.9 e confrontare le 3. Mediante un m-file determinare (a meno di 0 ) il k [, 4] per cui cond(b) è minimo e disegnare il grafico di cond(b) in funzione di k. Esercizio 4 Grafici in 3D in Matlab Eseguire il grafico in 3D le seguenti funzioni nei domini indicati mediante varie opzioni (griglia, superficie, linee di livello, colori vari, angoli di visione vari): z = x y x ; y z = x x ; y 3 z = max{ x, y } x ; y 4 z = max{ x, y } x ; y 5 z = x y } x ; y 6 z = x + y } x ; y { x se x >= y 7 z = x ; y x y se x < y

Settima Esercitazione: Interpolazione, gestione stringhe Calario (funzione MOD) 7 Premessa : Come leggere dati da un file esterno. Da un file di testo o da una tabella Excel. Si usano i comandi load e xlsread clear all; % cancella tutte le variabili load DatiA.txt % file di testo load DatiB.txt % file di testo A = xlsread( Datix.xls ) % file Excel Premessa : Come usare le stringhe. Se la variabile a vale 5.34 e volete scrivere su schermo La variabile a vale 5.34 Dato che il comando disp non può scrivere stringhe e numeri insieme, occorre trasformare il numero in stringa col comando numstr (in inglese si legge number to string ) e concatenare le stringhe come se fossero vettori. disp([ La variabile a vale, numstr(a)]) C è anche il comando sprintf che è più flessibile, ma occorre conoscere un po di C ++ Premessa 3: Per fare la divisione di numeri interi occorrono la funzione / e la funzione mod. Esempio: Divido 57 per 7 si ha quoziente q = e resto r = 3. q = fix(57/7), r=mod(57,7) Premessa 4: Il comando switch Invece del test condizionale if... è conveniente in molti casi (anzi è consigliato da molti programmatori e da molte norme) il comando switch L esempio tipico è if a== disp( bene ) elseif a==-; disp( male ) elseif a==-; disp( male ) elseif a==0 disp( cosi ) else disp( non so ) Confrontare la leggibilità del listato sopra col seguente che fa le stesse cose switch a case disp( bene ) case {-,- } disp( male ) case 0 disp( cosi ) otherwise disp( non so )

8 Esercizio Interpolazione in vari modi porre x = (,,..., 0) e ricavare y dal file DatiA. Indi disegnare i punti usando l opzione plot (x,y, o ) Successivamente: - interpolare con una spezzata - interpolare con una spline (leggere le istruzioni del comando spline) - approssimare ai minimi quadrati con una retta. - approssimare ai minimi quadrati con una parabola. per sovrapporre i vari disegni si possono usare due opzioni: plot(x,y,,x,y,,...) plot(x,y, ) hold on plot(x,y, ) E poi hold off quando non si vuole più sovrapporre. Calario: calcolare il giorno della settimana di una data. Creare un funzione calario(g,m,a) che caslcola il giorno della settimana di g/m/a. Si comincia col calcolare il giorno in cui cade il primo gennaio nell anno a: Si parte da un anno in cui il primo gennaio cadeva di domenica p.es. 98. Si calcola quanti giorni in più ci sono in questo modo: Sia d = a 98 : Se la divisione di d per 4 è esatta si aggiunge il quoziente della divisione per 4: Altrimenti si aggiunge il quoziente + : d = d + q +. Il primo gennaio comincia dell anno a cade di d (0=domenica, =lunedì etc.) Se d > 7 si riduce modulo 7 (comando mod). d = d + q Per calcolare il primo giorno del mese corrente si usano le seguenti tabelle: (usare il comando switch) Anni normali 0 = Gen Ott = Mag = Ago 3 = Feb Mar Nov 4 = Giu 5 = Set Dic 6 = Apr Lug Anni bisestili 0 = Gen Apr Lug = Ott = Mag 3 = Feb Ago 4 = Mar Nov 5 = Giu 6 = Set Dic Ovvero si aggiunge il numero dato al giorno del primo gennaio (e si riduce modulo 7). A questo punto dovrebbe essere facile calcolare qualunque giorno di qualunque anno dal //98 al 3//099 (il 00 sarà un anno particolare, non bisestile anche se divisibile per 4).

Ottava Esercitazione: Altri tipi di grafici, equazioni differenziali 9 Esercizio Curve parametriche Disegnare il grafico delle seguenti curve piane o nello spazio espresse in forma parametrica: (comandi plot e plot3, cercando di disegnare la porzione più significativa { x = t y = t (t ) { x = t y = t 3 { x = cos(t) y = 3 sin(t) { x = cosh(t) y = 3 sinh(t) x = cos(t) y = 3 sin(t) z = t Curve polari. x = cos(t) y = 3 sin(t) z = sin(8t) Disegnare il grafico delle seguenti curve piane espresse in forma polare: (comando polar), cercando di disegnare la porzione più significativa ϱ = θ ϱ = cos(nθ) n IN ϱ = + cos(θ) Esercizio 3 Problema di Cauchy Costruire un m-file funzione che dipente da t 0, y 0, t, h che calcoli la soluzione approssimata del problema di Cauchy { y = fun(t, y) y(t 0 ) = y 0 usando il metodo di Eulero, nell intervallo [t 0, t ] con passo h. La funzione fun sarà definita in un file a parte e richiamata dal programma. Collaudare l m-file coi seguenti problemi differenziali y = fun(t, y) y(0) = fun(t, y) = t /4 + ty + y = fun(t, y) y(0) = fun(t, y) = t t y + y = fun(t, y) y(0) = fun(t, y) = t y t y + y = fun(t, y) y( ) = fun(t, y) = t y t y + Disegnare la funzione con vari passi e in vari intervalli e confrontare i grafici ottenuti. Usare poi la funzione predefinita in MatLab ode3( fun,t,y0) e confrontare i risultati.

Nona Esercitazione: Equazioni alle differenze e programmazione 0 Esercizio Equazione alle differenze Costruire un m-file funzione di c,p,h che calcoli e disegni la soluzione approssimata del problema differenziale { y + c(t)y(t) = p(t) y(t a ) = 0 y(t b ) = 0 usando le differenze finite nell intervallo [t a, t b ] con passo h. Sia t l intervallo diviso con passo h. Siano c e p le tabulazioni di c(t) e p(t). L incognita è y. Occorrerà risolvere un sistema lineare tridiagonale y 3 y + y h + c y = p y 4 y 3 + y h + c 3 y 3 = p 3 y n y n + y n h + c n y n = p n È un sistema nelle incognite y,..., y n la cui matrice è tridiagonale. La diagonale è [c h,..., c n h ]. La sopra e la sottodiagonale sono fatte di. Il termine noto è [p h,..., p n h ] [y, 0, 0,..., 0, y n ] (trasposto). Provare inizialmente usando come c la matrice di e come p la matrice [... ] (circa a metà). L intervallo t[ a, t b ] non è importante (per es. può essere [0, ]) Disegnare la funzione con vari p e confrontare i grafici ottenuti. Il commesso viaggiatore Il problema è il seguente: Sono dati sette punti nel piano, per esempio quelli a lato che possono essere pensati come città da visitare. Si tratta di trovare l itinerario più breve che parto da (0, 0) passi per tutti i sette punti. Iniziare col costruire la matrice d 7 7 delle distanze tra i vari punti. Il programma per trovare l itinerario (nel peggior modo, cioè provando tutti i 5040 percorsi possibili) può essere articolato così: x y 3 0 0 5 4 4 5 6 7 d=... % ---- COSTRUIRE d ----- towns=7 % numero città da visitare w=perms(:towns); % costruisce tutte le possibili permutazioni dei % numeri da a towns % Per towns=7 è una matrice di 5040 righe. Non scrivetela!!! minimo=0000 % Inizializzare minimo con un numero alto for id=:length(w) dist=sqrt(x(w(id,))ˆ+y(w(id,))ˆ ) % inizializza la distanza (da (0,0) alla prima città) for jd=:towns- % i segmenti sono towns- dist=dist+d(..,..) % inserire gli indici giusti... if... % vedo se la distanza è minima e, se l ho trovata, % devo conservare la permutazione per la fine % e aggiornare il valore di minimo plot(...) % magari disegnare l itinerario trovato Nota: Tra le demo di MatLab c è il problema del commesso viaggiatore, fatto in modo un po più efficiente...