8 a lezione - laboratorio a.a Esercizi Preparziale Corso di Laurea ING. MECCANICA
Esercizio 1: Quesiti 1,2 Dato il seguente problema differenziale: 1 -Si verifichi se il problema è ben posto; 2 -dato il metodo numerico si riconosca il metodo e se ne stabilisca lordine motivando la risposta.
Esercizio 1: Quesito 3 3 -Si costruisca un file MATLAB: Cognome_studente_matricola.m che, una volta avviato: faccia visualizzare una schermata con i dati personali ed una breve presentazione del problema; faccia visualizzare una schermata con i dati personali ed una breve presentazione del problema; permetta di dare in input il punto iniziale ed il valore della soluzione in tale punto; permetta di dare in input il punto iniziale ed il valore della soluzione in tale punto; determini la soluzione utilizzando il metodo di Heun con passi h1=1/100, h2=1/200;determini la soluzione utilizzando il metodo di Heun con passi h1=1/100, h2=1/200; faccia visualizzare una tabella in cui compaia lintestazione : faccia visualizzare una tabella in cui compaia lintestazione : x y1 y2 x y1 y2 con x vettore dei nodi, y1 soluzione nel primo caso e y2 soluzione nel secondo caso, riporti ogni 10, i valori corrispondenti nei seguenti formati: riporti ogni 10, i valori corrispondenti nei seguenti formati: 2 cifre decimali e formato virgola fissa per i punti di valutazione ; 8 cifre decimali e formato virgola fissa per i valori y1 e y2.
Esercizio 1: Quesiti 4, 5 4 -Mediante il comando subplot, si riportino in una stessa figura 2 finestre grafiche orizzontali, nella prima finestra compaia il grafico della soluzione y1, nella seconda il grafico di y2. 5 – Si commentino i risultati. Se si fosse utilizzato il metodo del punto 2 i risultati sarebbero stati migliori? Motivare la risposta.
Istruzioni MATLAB: quesiti 3, 4 clear all disp(' ') disp('Cognome e nome studente: XXXX_XXX') disp('Numero di matricola: XXXX') disp('Corso di Laurea: XXXX ') disp(' ') disp(' Questo programma consente di calcolare e visualizzare ') disp(' la soluzione di un problema di Cauchy utilizzando') disp(' il metodo di heun per due passi di discretizzazione.' ) disp(' ') x0=input('x0 = ');y0=input('y0 = '); xmax=1; % x0=-1; y0=0;% dati da inserire f='t.^2*cos(y).^2+y*sin(t).^2'; % calcolo della soluzione con n=n1 h1=0.01;n1=round((xmax-x0)/h1); [T1,Y_H1]=Heun(x0,xmax,n1,y0,f);
Seguito Istruzioni MATLAB % calcolo della soluzione con n=n2 h2=0.005; n2=round((xmax-x0)/h2); [T2,Y_H2]=Heun(x0,xmax,n2,y0,f); tab=[T1 Y_H1 Y_H2(1:2:end)]; disp(' ') disp(' t soluzione1 soluzione2 ') disp(' ') fprintf('%6.2f %14.8f %14.8f \n',tab(1:10:end,:)') disp(' ') subplot(1,2,1);plot(T1,Y_H1); title(['Soluzione con n=' num2str(n1)]);xlabel('x');ylabel('Soluzione');grid subplot(1,2,2);plot(T2,Y_H2); title(['Soluzione con n=' num2str(n2)]);xlabel('x');ylabel('Soluzione');grid
Risultati file Preparziale_1 Cognome e nome studente: XXXX_XXX Numero di matricola: XXXX Corso di Laurea: XXXX Questo programma consente di calcolare e visualizzare la soluzione di un problema di Cauchy utilizzando il metodo di heun per due passi di discretizzazione. x0 = -1 y0 = 0
t soluzione1 soluzione
Esercizio 2: Quesiti 1, 2 Data la funzione: 1)Si determini il sistema atto a calcolare gli estremi relativi; 2) Mediante Matlab si esegua lindividuazione grafica delle soluzioni sapendo che esse cadono negli intervalli:
Esercizio 2: Quesiti 3, 4 3 -Si costruisca un file MATLAB: Cognome_studente_matricola.m che, una volta avviato: faccia visualizzare una schermata con i dati personali ed una breve presentazione del problema; contenga le istruzioni relative al punto 2; permetta di dare in input il valore di nmax=10 e di toll= ; calcoli le soluzioni con il metodo di Newton; faccia visualizzare una tabella in cui compaia lintestazione : iterazioni approssimazioni valori_funzione in approssimazioni vanno riportati i valori in xvect ed in valori_ funzione i valori in fx; tali valori siano dati nei seguenti formati: 2 cifre intere per le iterazioni ; 10 decimali e formato virgola fissa per i valori in xvect e fx. 4 -Si commentino i risultati mettendo in evidenza se essi rispettano la teoria.
Rappresentazione Superficie y=-4:.1:1; x=-2:.1:2; [X,Y]=meshgrid(x,y); Z=3*(1-X.*Y).^2.*exp(-X.^2-(Y+1).^2); title(rappresentazione funzione') surf(X,Y,Z) xlabel('x');ylabel('y');
Superficie
Soluzione quesito 1: determinazione del sistema Il sistema si determina annullando il gradiente di f(x,y). Si calcolano le derivate parziali si azzerano e si elimina da entrambe le equazioni il fattore ottenendo: Esplicitando, dopo avere considerato che 1-xy=0 dà infinite soluzioni, le due equazioni rispetto a y, si ottiene:
Individuazione grafica delle soluzioni figure(1) fplot('x/(x^2-1)',[-1.5,-1.2]) hold on fplot('(1-x+sqrt(1+2*x+5*x^2))/(2*x)',[-1.5,-1.2]),grid hold off figure(2) fplot('x/(x^2-1)',[1.5,2]) hold on fplot('(1-x+sqrt(1+2*x+5*x^2))/(2*x)',[1.5,2]),grid hold off figure(3) fplot('x/(x^2-1)',[0.2,0.8]) hold on fplot('(1-x-sqrt(1+2*x+5*x^2))/(2*x)',[0.2,0.8]),grid hold off Ricordiamo che i punti che azzerrano il gradiente non sono Necessariamente estremi della funzione!!!
Verifica delle condizioni minime di applicabilità del metodo di Newton Si deduce: il cui determinante deve essere non nullo nei punti dei tre intervalli. La verifica si può fare mediante MATLAB tenendo conto dei risultati ottenuti nellindividuazione grafica
Verifica non annullamento di det(J ( x,y )) % verifica della condizione di det(Jac)diverso da 0 clear all clc figure(1) y=-2:.01:-1.5;x=-1.5:.01:-1.2; [X,Y]=meshgrid(x,y); Z=-X-4*X.*Y+X.^2.*Y+X.^2.*Y.^2+Y+Y.^2+X.^2; surf(X,Y,Z) figure(2) y=1.1:.01:2;x=1.5:.01:2; [X,Y]=meshgrid(x,y); Z=-X-4*X.*Y+X.^2.*Y+X.^2.*Y.^2+Y+Y.^2+X.^2; surf(X,Y,Z) figure(3) y=-1.5:.01:-0.8;x=0.2:.01:0.8; [X,Y]=meshgrid(x,y); Z=-X-4*X.*Y+X.^2.*Y+X.^2.*Y.^2+Y+Y.^2+X.^2; surf(X,Y,Z)
Soluzione quesito 3: Newton e tabella nmax=input('nmax='); toll=input('toll='); fun=strvcat('x(2)+x(1).*(1-x(1).*x(2))','x(1)+(1- x(1).*x(2)).*(1+x(2))'); J11='1-2*x(1).*x(2)';J12='1-x(1).^2'; J21='1-x(2)-x(2).^2';J22='1-x(1)-2*x(1).*x(2)'; Jac=strvcat(J11,J12,J21,J22); [xvect,xdiff,fx,it]=newtonxs(x0,nmax,toll,fun,Jac); iter=0:it; tab=[iter' xvect xdiff fx]; fprintf('iter soluzione xdiff fx \n') fprintf('%2d %19.12f %19.12f %13.3e %13.3e\n',tab') Le istruzioni seguenti vanno ripetute 3 volte inserendo rispettivamente i punti di innesco: [-1.3,-1.8], [1.5,1.2], [0.5,-1.5]
Soluzioni e e+000 in 5 iterazioni e e+000 in 5 iterazioni e e+000 in 5 iterazioni