a
8
lezione - laboratorio
Esercizi Preparziale
Corso di Laurea ING. MECCANICA
a.a 2004-2005
Esercizio 1: Quesiti 1,2
Dato il seguente problema differenziale:
 y  x 2 cos 2 y  y sin 2 x

y   1  0

12-
x   1,1
Si verifichi se il problema è ben posto;
dato il metodo numerico
yi 1  yi  h f  xi 1 , yi 1 
si riconosca il metodo e se ne stabilisca l’ordine
motivando la risposta.
Esercizio 1: Quesito 3
3Si 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;
• 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;
• faccia visualizzare una tabella in cui compaia l’intestazione :
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:
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(' ')
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
soluzione2
---------------------------------------------------------------------------1.00
0.00000000
0.00000000
-0.90
0.09316132
0.09316100
-0.80
0.17168302
0.17168187
-0.70
0.23516280
0.23516055
-0.60
0.28422117
0.28421766
-0.50
0.32013654
0.32013169
-0.40
0.34461269
0.34460643
-0.30
0.35964368
0.36742076
-0.20
0.36742999
0.36742076
-0.10
0.37031513
0.37030436
0.00
0.37073008
0.37071777
0.10
0.37114570
0.37113121
0.20
0.37403293
0.37401754
0.30
0.38184673
0.38182982
0.40
0.39700739
0.39698898
0.50
0.42188584
0.42186602
0.60
0.45875111
0.45873001
0.70
0.50964512
0.50962302
0.80
0.57614862
0.57612598
0.90
0.65903862
0.65901610
1.00
0.75792421
0.75790261
Esercizio 2: Quesiti 1, 2
Data la funzione:
f  x , y   3 1  xy  e
2
 x 2   y 1
2
1) Si determini il sistema atto a calcolare gli
estremi relativi;
2) Mediante Matlab si esegua l’individuazione
grafica delle soluzioni sapendo che esse cadono
negli intervalli:
D1   1.5, 1.2   2, 1.5 , D2  0.2,0.8   1.5, 1.2 , D3  1.5, 2  1.1, 2
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 l’intestazione :
•
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
f  x , y   3 1  xy  e
2
 x 2   y 1
2
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
da2 entrambe le equazioni
2
 x  y 1
il fattore
ottenendo:
6e
0


1  xy  y  x  x 2 y  0

F  x  0 : 
1  xy   x   y  11  xy    0
Esplicitando, dopo avere considerato che 1-xy=0
dà infinite soluzioni, le due equazioni rispetto
a y, si ottiene:
x

y 2

x 1

5x2  2x  1
 y  1 x

2x
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


 f1  x , y   y  x  x 2 y  0


 f 2  x , y    x   y  11  xy    0
Si deduce:
 1  2 xy
1  x2 
J  x, y   

2
1  y  y 1  x  2 xy 
il cui determinante deve essere non nullo nei punti dei tre
intervalli. La verifica si può fare mediante MATLAB tenendo
conto dei risultati ottenuti nell’individuazione 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
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]
nmax=input('nmax=');
toll=input('toll=');
fun=strvcat('x(2)+x(1).*(1-x(1).*x(2))','x(1)+(1x(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')
Soluzioni
-1.2986712038098545e+000
-1.8915986833871814e+000
in 5 iterazioni
1.5413291810500551e+000
1.1203998408900298e+000
in 5 iterazioni
6.9747049787326465e-001
-1.3581754455841648e+000
in 5 iterazioni
Scarica

4a lezione - laboratorio - Sito degli studenti di Ing.Meccanica di L