Anteprima
Vedrai una selezione di 6 pagine su 25
Relazione Es. 1 Esame:metodi Numerici Pag. 1 Relazione Es. 1 Esame:metodi Numerici Pag. 2
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Relazione Es. 1 Esame:metodi Numerici Pag. 6
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Relazione Es. 1 Esame:metodi Numerici Pag. 11
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Relazione Es. 1 Esame:metodi Numerici Pag. 16
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Relazione Es. 1 Esame:metodi Numerici Pag. 21
1 su 25
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

2. METODO DI REGULA FALSI

Il metodo del Regula falsi è un’altra metodologia per arrivare alla determinazione della

soluzione di sistemi di equazioni non lineari. Per questo esercizio non è stata fornita

una Function già funzionante che implementi questo particolare metodo ma è stato

richiesto di realizzarla implementando una Function ex novo oppure modificando

quella che più si avvicini a questo metodo. Dopo un attento studio della teoria dei

metodi iterativi per la risoluzione di sistemi di equazioni non lineari si può dire con

certezza che questo metodo è molto simile alla Function del metodo di bisezione. Difatti

£

dato un intervallo [a,b] tale che sia comunque soddisfatta la condizione fa*fb 0 ,

allora:

Si riporta alla pagina seguente la Function scritta ed implementata modificando il

metodo di bisezione fornito durante le esercitazioni dal docente.

12

Relazione Progetto –Corso di Metodi Numerici per l’Ingegneria Civile Magistrale- A.A. 2016-2017 – Esercizio 1

function [x,iter,res]=RegulaFalsi(f,a,b,ep,itermax)

%valuta la funzione f nel punto a

fa = feval(f,a);

%valuta la funzione f nel punto b

fb = feval(f,b);

%condizione necessaria e sufficiente nella scelta

dell'intervallo

if fa*fb > 0

fprintf('\n\nThe initial interval does not satisfy f(a)f(b)

< 0.')

return

end

res=abs(fa);

iter=0;

%while abs(a-b) > ep+eps*max(abs(a),abs(b))

-> criterio di arresto vecchio

% nuovo criterio di arresto

while res > ep && (iter < itermax)

mid=b-(fb*(b-a))/(fb-fa);

fmid = feval(f,mid);

if fa*fmid<=0

% root in [a,mid].

b = mid;

fb = fmid;

else % root in [mid,b].

a = mid;

fa = fmid;

end

res=abs(feval(f,mid));

iter=iter+1;

end

x=b-(fb*(b-a))/(fb-fa);

Il metodo, pertanto, genera una successione di intervalli decrescenti in cui è contenuta

la radice ed è più veloce rispetto al metodo di bisezione. (visualizzabile dalle iterazioni)

3. METODO DI NEWTON

Col metodo delle tangenti di Newton, si determinano gli zeri utilizzando la tangente

alla curva. La ricerca comincia selezionando un elemento che si trova in prossimità

dello zero cioè scegliendo nel modo opportuno il punto inziale vicino alla soluzione, la

quale è contenuta nell’intervallo [a,b]. Generalmente per semplicità si può iniziare da

uno dei due punti che hanno come ascissa gli estremi dell'intervallo [a,b].

Successivamente si determina la tangente al polinomio e si trova lo zero di tale tangente.

Lo zero determinato è l'approssimazione dello zero del polinomio.

13

Relazione Progetto –Corso di Metodi Numerici per l’Ingegneria Civile Magistrale- A.A. 2016-2017 – Esercizio 1

Si prosegue, pertanto, iterando il procedimento scegliendo un opportuno numero di

iterazioni massime e un opportuno criterio di arresto figlio della precisione adottata o

richiesta da problema fisico. Il metodo è sintetizzato in figura e nella formula:

Osservando la formula del metodo iterativo si possono esporre importanti

considerazioni. Esso non è sempre applicabile ma necessita di alcune condizioni

fondamentali riassumibili nei seguenti tre punti:

• £

È sempre necessario scegliere un intervallo [a,b] tale che f(a)*f(b) 0 in cui

vi è un’unica radice e facendo si che valga il Teorema degli zeri;

2

• Î

f C [a,b] , cioè devono risultare continue la f(x), f ’(x), f ’’(x);

• ¹

f ‘(x) 0 per xÎ[a,b] poiché il denominatore della formula di Newton non

può annullarsi; 14

Relazione Progetto –Corso di Metodi Numerici per l’Ingegneria Civile Magistrale- A.A. 2016-2017 – Esercizio 1

La Function implementata in MatLab è la seguente:

function [x,iter,res]= Newton(fun,der,x0,ep,itermax)

y=feval(der,x0)\feval(fun,x0);

x=x0-y;

res = norm(x-x0,'inf');

residuo=abs(feval(fun,x));

iter=1;

while (residuo > ep) && (iter<itermax)

x0=x;

y=feval(der,x0)\feval(fun,x0);

x=x0-y;

res = norm(x-x0,'inf');

residuo=abs(feval(fun,x))

iter=iter+1;

end

if iter==itermax

fprintf('\n\nThe method does not converge with the desired

accuracy!');

fprintf('\nAfter %d iterations:', itermax);

fprintf('\nnorm = %f .\n', norm(x-x0,'inf'));

end 4. METODO DELLE SECANTI

Il metodo delle Secanti è detto tale poiché molto intuitivamente si basa sulla costruzione

di secanti alla funzione data. Non è necessario, questa volta, che il punto di zero sia

contenuto all'interno dell'intervallo esaminato. A causa di ciò è possibile che in alcuni

casi particolari l'algoritmo non converga. Nei casi regolari, la velocità di convergenza

è comunque assai migliore del metodo di bisezione, anche se lievemente inferiore a

quella del metodo di Newton. Pertanto dati due punti a e b è possibile determinare

l’equazione della retta passante per due punti. L’algoritmo risulta quindi così

strutturato:

1. Si determina l’intervallo di partenza [a, b];

2. Si sostituisce alla funzione y = f(x) la retta passante per i punti a e b (punti

estremi all'intervallo [a, b]) appartenenti al grafico della funzione;

3. Si determina il punto di intersezione, della retta passante per il punto a e b, con

l'asse delle X;

4. Si itera la formula

Per implementare questo metodo si è voluta utilizzare la Function fornita dal docente

durante le esercitazioni. Pertanto: 15

Relazione Progetto –Corso di Metodi Numerici per l’Ingegneria Civile Magistrale- A.A. 2016-2017 – Esercizio 1

function [x,iter,res]= Secant(f,a,b,ep,itermax)

x0 = a ; x1 = b;

x=x1;

iter=0;

x1=x0;

y1=feval(f,x1);

res=abs(y1)

while (res > ep) && (iter<itermax)

x0=x1;

y0=y1;

x1=x;

y1=feval(f,x1);

if (abs(y1)>ep)

x=x1-y1*(x1-x0)./(y1-y0);

iter=iter+1;

end

res=abs(feval(f,x));

end OSSERVAZIONE 2

Si possono confrontare il metodo delle Secanti e del Regula falsi in quanto sono simili.

La differenza sta nel fatto che il metodo delle Secanti procede con gli ultimi punti

trovati in successione senza tener conto del valore positivo o negativo della funzione.

Mentre il Regula falsi costruisce le rette passanti per i punti x1 e x2 dell’intervallo

considerato tale che in essi la funzione assume valori discordi. In questo modo la radice

è sempre racchiusa nell’intervallo [x1,x2]. In generale il metodo delle secanti potrebbe

essere più veloce ma non converge sempre. Questo poiché non vi è la certezza di avere

sempre all’interno dell’intervallo il punto cercato.

Sulla base degli argomenti teorici evidenziati e degli aspetti argomentati finora si

vogliono riportare all’interno di questa relazione le scelte effettuate all’interno del

codice per la risoluzione del problema proposto. Pertanto come prima cosa si riportano

i grafici con le varie soluzioni evidenziate con marker differenti (come chiesto dal testo

dell’esercizio) presenti nel comando plot.

Infatti: 16

Relazione Progetto –Corso di Metodi Numerici per l’Ingegneria Civile Magistrale- A.A. 2016-2017 – Esercizio 1

%Punto 4

switch b

case 1

figure

t1=linspace(-5,5,100);

plot(t1,funzione1(t1),'b','LineWidth',1.5);

title('soluzioni metodi iterativi y=exp(-x)-x');

axis tight;

hold on;

plot(sol1_bisezione,0,'sr','MarkerSize',14,'LineWidth',2);

plot(sol1_secanti,0,'xk','MarkerSize',16,'LineWidth',1.5);

plot(sol1_newton,0,'+g','MarkerSize',23,'LineWidth',1.5);

plot(sol1_regulafalsi,0,'sc','MarkerSize',24,'LineWidth',1.5);

lgd=legend('y=exp(-x)-

x','bisezione','secanti','Newton','RegulaFalsi','Location','southoutside');

legend('Orientation','horizontal');

legend('boxoff');

lgd.FontSize=14;

grid on;

case 2

figure

t=linspace(-10,15,100);

plot(t,funzione2(t),'b');

title('soluzioni metodi iterativi di y=abs(x-1)+abs(x-2)+abs(x-3)-3.5');

hold on;

grid on;

plot(sol1_bisezione,0,'sr','MarkerSize',14,'LineWidth',2);

plot(sol1_secanti,0,'xk','MarkerSize',16,'LineWidth',1.5);

plot(sol1_newton,0,'+g','MarkerSize',23,'LineWidth',1.5);

plot(sol1_regulafalsi,0,'sc','MarkerSize',24,'LineWidth',1.5);

lgd=legend('y=abs(x-1)+abs(x-2)+abs(x-3)-

3.5','bisezione','secanti','Newton','RegulaFalsi','Location','southoutside');

legend('Orientation','horizontal');

legend('boxoff');

lgd.FontSize=12;

plot(sol2_bisezione,0,'sr','MarkerSize',14,'LineWidth',2);

plot(sol2_secanti,0,'xk','MarkerSize',16,'LineWidth',1.5);

plot(sol2_newton,0,'+g','MarkerSize',23,'LineWidth',1.5);

plot(sol2_regulafalsi,0,'sc','MarkerSize',24,'LineWidth',1.5);

case 3

figure

subplot(2,1,1)

t1=linspace(-7,4.5,100);

plot(t1,funzione3(t1),'b','LineWidth',1.5);

title('soluzioni metodi iterativi y=2.*sin(x)-(1/8).*(x.^2)+2.3527');

axis tight;

hold on;

plot(sol1_bisezione,0,'sr','MarkerSize',14,'LineWidth',2);

plot(sol1_secanti,0,'xk','MarkerSize',16,'LineWidth',1.5);

plot(sol1_newton,0,'+g','MarkerSize',23,'LineWidth',1.5);

plot(sol1_regulafalsi,0,'sc','MarkerSize',24,'LineWidth',1.5);

grid on lgd=legend('y=2.*sin(x)-

(1/8).*(x.^2)+2.3527','bisezione','secanti','Newton','RegulaFalsi','Location','south

outside');

legend('Orientation','horizontal');

legend('boxoff');

lgd.FontSize=14;

plot(sol2_bisezione,0,'sr','MarkerSize',14,'LineWidth',2);

plot(sol2_secanti,0,'xk','MarkerSize',16,'LineWidth',1.5);

plot(sol2_newton,0,'+g','MarkerSize',23,'LineWidth',1.5);

plot(sol2_regulafalsi,0,'sc','MarkerSize',24,'LineWidth',1.5);

plot(sol3_bisezione,0,'sr','MarkerSize',14,'LineWidth',2);

plot(sol3_secanti,0,'xk','MarkerSize',16,'LineWidth�

Dettagli
A.A. 2018-2019
25 pagine
SSD Scienze matematiche e informatiche MAT/05 Analisi matematica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher francescotamaro di informazioni apprese con la frequenza delle lezioni di Metodi numerici per l'ingegneria e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Sgallari Fiorella.