SCHEDE ED ESERCIZI SUL CALCOLO NUMERICO Nel seguito si illustrano tre metodi per calcolare la soluzione approssimata a piacere di un’equazione anche nei casi in cui non si dispone di una formula esplicita: il metodo di bisezione, il metodo del punto fisso e il metodo di Newton (o delle tangenti). Tutti questi metodi sono fondati su calcoli iterativi. Metodo di bisezione per la soluzione di f(x) = 01 L’idea è: ad ogni passaggio, dimezzo l’intervallo di valori considerato al passaggio prima, finché non arrivo ad un intervallo talmente piccolo che l’approssimazione fra un estremo e l’altro è minore di quella che mi basta. Conviene scandire i passaggi per punti. * Si sceglie un m0 sicuramente minore della soluzione e un M0 sicuramente maggiore. * Si pone x0 := (m0+M0)/2. * Si costruisce f(x) e si applica la regola di bisezione (la condizione fra parentesi quadre vale 1 se è vera e 0 se è falsa), costituita dalle formule che seguono: pn f xn f mn (cioè: si controlla se xn sta a sinistra che è il lato di mn o a destra che è l’altro lato di dove la funzione si annulla che è dove sta x*); mn1 mn pn 0 xn pn 0 (cioé: se pn è negativo si lascia mn , altrimenti si prende xn); M n1 xn pn 0 M n pn 0 (cioé: se pn è negativo si prende xn , altrimenti si lascia Mn); xn mn M n . 2 m0 x0 x* x1 M0 Esempio semplice: per risolvere l’equazione x = ex, per la quale non esistono formule risolutive, la si scrive nella forma xex = 0; la prima formula del metodo allora diventa pn xn e xn mn e mn , mentre le altre 3 formule restano uguali. Le iterazioni del calcolo sono nella tabella sotto. 1 Si tratta di un risultato molto noto in matematica, come anche il metodo del punto fisso. n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 mn 0 (input) 0,5 0,5 0,5 0,5 0,53125 0,546875 0,546875 0,550781 0,552734 0,553711 0,553711 0,553711 0,553711 0,553772 0,553802 0,553818 0,553825 0,553825 0,553825 0,553826 0,553827 0,553827 0,553827 0,553827 Mn 1 (input) 1 0,75 0,625 0,5625 0,5625 0,5625 0,554688 0,554688 0,554688 0,554688 0,554199 0,553955 0,553833 0,553833 0,553833 0,553833 0,553833 0,553829 0,553827 0,553827 0,553827 0,553827 0,553827 0,553827 xn 0,5 0,75 0,625 0,5625 0,53125 0,546875 0,554688 0,550781 0,552734 0,553711 0,554199 0,553955 0,553833 0,553772 0,553802 0,553818 0,553825 0,553829 0,553827 0,553826 0,553827 0,553827 0,553827 0,553827 0,553827 f(xn) -0,07792 0,239194 0,095249 0,012091 -0,03209 -0,00979 0,001205 -0,00428 -0,00153 -0,00016 0,000522 0,000179 8,37E-06 -7,7E-05 -3,4E-05 -1,3E-05 -2,3E-06 3,02E-06 3,49E-07 -9,9E-07 -3,2E-07 1,5E-08 -1,5E-07 -6,9E-08 -2,7E-08 f(mn) -1 -0,07792 -0,07792 -0,07792 -0,07792 -0,03209 -0,00979 -0,00979 -0,00428 -0,00153 -0,00016 -0,00016 -0,00016 -0,00016 -7,7E-05 -3,4E-05 -1,3E-05 -2,3E-06 -2,3E-06 -2,3E-06 -9,9E-07 -3,2E-07 -3,2E-07 -1,5E-07 -6,9E-08 pn 0,077925 -0,01864 -0,00742 -0,00094 0,0025 0,000314 -1,2E-05 4,19E-05 6,56E-06 2,49E-07 -8,5E-08 -2,9E-08 -1,4E-09 1,26E-08 2,66E-09 4,48E-10 3,03E-11 -7E-12 -8,1E-13 2,3E-12 3,15E-13 -4,8E-15 4,85E-14 1,04E-14 1,83E-15 Criterio di arresto generale (w = 1E-07) FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE Criterio di arresto bisezione (w = 1E07) FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE Esempio pratico: si conosce il capitale C e la rata costante P di un prestito, oltre che la sua durata in periodi T; si vuole trovare il tasso periodico r. La formula che lega queste grandezze è nota dalla 1 1 1 r T . In questo caso, l’incognita è r, che non può in generale matematica finanziaria: C P r essere trovata con una formula esplicita, come dimostrato da Galois. Si può allora applicare il 1 1 1 r T C 0 , per cui la prima formula del metodo di metodo di bisezione all’equazione P r 1 1 1 1 x T 1 1 m T n n bisezione diventa pn P C P C , mentre le altre 3 restano uguali. xn mn Le iterazioni del calcolo sono nella tabella sotto. n 0 mn Mn 0,0000001 (input) 1 (input) xn 0,5 f(xn) -4600 Criterio di arresto generale (w = 1Ef(mn) pn 07) 2999,984 -1,4E+07 FALSE Criterio di arresto bisezione (w = 1E07) FALSE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0,0000001 0,0000001 0,0000001 0,0000001 0,0000001 0,0156251 0,0234376 0,0234376 0,0234376 0,0244142 0,0249024 0,0251466 0,0251466 0,0252076 0,0252381 0,0252381 0,0252381 0,0252419 0,0252419 0,0252429 0,0252434 0,0252436 0,0252437 0,0252438 0,5 0,25 0,125 0,0625 0,03125 0,03125 0,03125 0,027344 0,025391 0,025391 0,025391 0,025391 0,025269 0,025269 0,025269 0,025253 0,025246 0,025246 0,025244 0,025244 0,025244 0,025244 0,025244 0,025244 0,25 0,125 0,0625 0,03125 0,015625 0,023438 0,027344 0,025391 0,024414 0,024902 0,025147 0,025269 0,025208 0,025238 0,025253 0,025246 0,025242 0,025244 0,025243 0,025243 0,025244 0,025244 0,025244 0,025244 -4200,11 -3414,39 -2083,14 -469,06 915,4536 155,2779 -171,948 -12,3203 70,45323 28,81378 8,184012 -2,08379 3,0462 0,480229 -0,80202 -0,16096 0,15962 -0,00067 0,079472 0,039399 0,019363 0,009345 0,004336 0,001831 2999,984 2999,984 2999,984 2999,984 2999,984 915,4536 155,2779 155,2779 155,2779 70,45323 28,81378 8,184012 8,184012 3,0462 0,480229 0,480229 0,480229 0,15962 0,15962 0,079472 0,039399 0,019363 0,009345 0,004336 -1,3E+07 -1E+07 -6249379 -1407171 2746346 142149,7 -26699,7 -1913,08 10939,83 2030,024 235,8123 -17,0537 24,93013 1,462873 -0,38515 -0,0773 0,076654 -0,00011 0,012685 0,003131 0,000763 0,000181 4,05E-05 7,94E-06 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE Metodo del punto fisso per la soluzione di x = g(x) L’idea è: ad ogni passaggio, uso la soluzione provvisoria che ho trovato nel passaggio precedente per trovarne una ancora meglio approssimata. La soluzione x* di un’equazione della forma x = g(x) si trova con l’iterazione xn+1 = g(xn), se è |g’(x*)| < 1 in un intorno di x* che contenga anche x0 . xn+1 xn+1 = xn xn+1 = g(xn) x* x* x2 x1 x0 xn Esempio semplice: si riprende l’equazione x = ex, scrivendola come x = ex/. La derivata del membro destro in x è se stesso. Non è evidente quale valore assuma l’espressione ex*/, ma si può tentare il calcolo dell’iterazione xn+1 = exn/. Le iterazioni del calcolo sono nella tabella sotto. n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 xn 0 (input) 0,31831 0,437613 0,493064 0,521177 0,536036 0,544061 0,548445 0,550854 0,552183 0,552917 0,553323 0,553548 0,553673 0,553742 0,55378 0,553801 0,553813 0,553819 0,553823 0,553825 0,553826 0,553826 0,553827 0,553827 0,553827 0,553827 Criterio di arresto (w = 1E-07) FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE Un esame puramente visivo qui dà un risultato ingannevole; infatti le iterazioni 21 e 22 appaiono uguali. Più avanti si spiegherà come stabilire un criterio di arresto delle iterazioni. Esempio pratico: riprendendo il caso di un prestito a rate costanti, conviene scrivere l’equazione / P 1 P T P 1 nella forma r 1 . Il calcolo funziona perché si ha 1 . T T 1 T C 1 r C 1 r C 1 r Questa derivata vicino a r* è di sicuro minore di 1; infatti, sostituendo 1 1 T T 1 r* 1 1 r* nella derivata, si ottiene (omettendo per semplicità l’asterisco, CP P T r* r * 1 r * PT che andrebbe indicato per ogni occorrenza di r) ; semplificando, si ha T 1 r 1 T 1 1 r P T r 1 r 1 r 1 , com’è noto dalla matematica finanziaria, si può T . L’espressione T r 1 r 1 1 r r ottenere come somma di T termini della forma (1+r)t, ciascuno dei quali quindi è maggiore di 1. T T 1 . Per giunta, il denominatore della derivata è 1 r T 1 r moltiplicato per 1+r, che è un ulteriore elemento a favore della tesi. Si può quindi trovare il punto fisso, cioè il tasso periodico di un prestito a rate costanti, con P 1 l’iterazione xn1 1 . Le iterazioni del calcolo sono nella tabella sotto. C 1 xn T Basterebbe questo per stabilire che è n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Criterio di arresto (w xn = 1E-07) 0,001 (input) FALSE 0,001568 FALSE 0,002429 FALSE 0,0037 FALSE 0,005493 FALSE 0,007871 FALSE 0,010768 FALSE 0,013938 FALSE 0,017007 FALSE 0,019625 FALSE 0,021616 FALSE 0,022996 FALSE 0,02389 FALSE 0,024443 FALSE 0,024775 FALSE 0,024971 FALSE 0,025086 FALSE 0,025153 FALSE 0,025191 FALSE 0,025214 FALSE 0,025226 FALSE 0,025234 FALSE 0,025238 FALSE 0,025241 FALSE 0,025242 FALSE 0,025243 FALSE 0,025243 FALSE 0,025243 FALSE 0,025244 TRUE 0,025244 Un punto fisso interessante in economia: il teorema della ragnatela Un produttore mette un nuovo prodotto sul mercato e all’inizio stabilisce un prezzo p0. La domanda inversa è descritta da pn = axn+b (pn è il prezzo unitario, xn è la quantità domandata), pertanto la domanda diretta è descritta da xn = (bpn)/a e la quantità domandata è x0. L’offerta è descritta da pn+1 = cxn+d, pertanto il produttore stabilisce un nuovo prezzo p1. Al prezzo p1, la quantità domandata è x1. Con una domanda x1, il prezzo è p2 . Al prezzo p2, la quantità domandata è x2 . Con una domanda x2, il prezzo è p3 e così via. Tutto ciò è tanto naturale quanto concettualmente disordinato; ecco come sistemare i concetti. * Da pn+1 = cxn+d e xn = (bpn)/a, si ottiene pn+1 = c(bpn)/a+d, cioè pn+1 = c/apn+(ad+bc)/a. * Ponendo per semplicità di notazione m = c/a e q = (ad+bc)/a, si ottiene pn+1 = mpn+q. La condizione |g’(x*)| < 1 qui è |m| < 1 cioè, dato che naturalmente a, b, c e d sono positivi, c/a < 1, cioè c < a; ma si possono ottenere altre informazioni, come mostra il seguito. * Il prezzo p0 è dato. * Il prezzo p1 dipende da p0; infatti è p1 = mp0+q. * Anche il prezzo p2 dipende da p0; infatti è p2 = mp1+q = m(mp0+q)+q = m2p0+q+mq. * Anche il prezzo p3 dipende da p0; infatti è p3 = mp2+q = m(m2p0+q+mq)+q = m3p0+q+mq+m2q. * In generale, qualunque prezzo pn dipende da p0; infatti è pn = mpn1+q = m(mn1p0+q+mq+...+mn2q)+q = mnp0+q+mq+m2q+...+mn1q. * Mediante la formula delle progressioni geometriche, si ottiene pn = mnp0+q(1mn)/(1m). * Con 1 < m < 1 si ha m = 0, ma con m < 1 o m > 1 si ha m = . * Quindi, con m “grande” il prezzo diverge fino a infinito e non c’è equilibrio di mercato, mentre con m “piccolo” il prezzo di mercato c’è ed è q/(1m). * Dato che è m = c/a, la condizione di m “piccolo” è 1 < c/a, cioè c/a < 1, cioè c < a; nient’altro che la condizione per il punto fisso già determinata in precedenza. In altri termini, offerta e domanda trovano un equilibrio se la capacità di adattamento c dell’offerta è meno reattiva della capacità di adattamento a della domanda. p offerta (p = cx+d) domanda (p = ax+b) x Metodo di Newton2 L’idea è la stessa del punto fisso, ma l’algoritmo è più efficiente. Si dà direttamente la formula da applicare ad un’equazione nella forma f(x) = 0: xn1 xn f xn . f / xn Si tratta di un caso particolare di punto fisso, in cui la funzione g(x) assume la forma xf(x)/f’(x). La f x f x f x 1 , cioè f x f x 1 . condizione di convergenza è quindi 1 f x f x / * 2 * / * 2 // * * / // * * 2 Esempio semplice: riprendendo l’equazione x = ex, la si scrive come xex = 0. La derivata in x del membro sinistro è ex, pertanto l’iterazione è data da Introdotto da Newton in De analysi per aequationes numero terminorum infinitas, pubblicato nel 1711, disponibile in http://www.e-rara.ch/zut/content/pageview/637329. 2 1 xn x e x x* e x e x . La condizione di convergenza è xn1 xn n x , cioè xn1 1 , cioè 2 x e e 1 x n n e n * * * * e ex e x x* 1 . Non è evidente se la condizione sia valida. Le iterazioni del calcolo sono * 2 nella tabella sotto. * x n 0 1 2 3 4 5 xn 0 (input) 0,466942 0,549819 0,553817 0,553827 0,553827 Criterio di arresto (w = 1E-07) FALSE FALSE FALSE FALSE TRUE Risulta subito evidente l’efficienza del metodo. Esempio pratico: riprendendo ancora il prestito a rate costanti, risulta f r P 1 1 1 r T C 0 , r T 1 1 quindi si ha f / r P 2 2 1 0 ; la formula di iterazione è dunque T 1 T r r 1 r r 1 r 1 C 1 xn T P 1 xn . Si tralascia il calcolo della condizione di xn1 xn T 1 1 1 x 1 xn T 1 xn xn 1 xn T n P convergenza. Le iterazioni del calcolo sono nella tabella sotto; data la pesantezza della formula, è opportuno calcolare anche le celle d’appoggio per 1+xn e (1+xn)T. n 0 1 2 3 4 5 xn 0,0001 (input) 0,018344 0,02467 0,02524 0,025244 0,025244 1+xn 1,0001 1,018344 1,02467 1,02524 1,025244 1,025244 (1+xn)T 0,996008 0,483309 0,377254 0,368963 0,368904 0,368904 Criterio di arresto (w = 1E-07) FALSE FALSE FALSE FALSE TRUE Criteri di arresto del calcolo Il processo iterativo si arresta non appena si ha |xn+1xn| < w, dove w è piccolo a piacere, che stabilisce l’errore tollerabile per chi esegue il calcolo; il senso è che, se due iterazioni di seguito hanno valori molto vicini, allora anche continuando l’iterazione i miglioramenti nell’approssimazione saranno trascurabili. Indicando con en = x*xn la distanza fra la soluzione esatta e l’approssimazione n-esima, si dimostra (Quarteroni, Sacco & Saleri [2004], Matematica numerica, Springer, pagg. 216-217) che è 1 xn1 xn , perciò il criterio vale poco se g’(x*) è vicina a 1 (e quindi se en è molto 1 g / x* maggiore di xn+1xn), mentre funziona molto bene per metodi di ordine 2 in cui si abbia g’(x*) = 0 (come quello di Newton); il criterio resta soddisfacente quando è 1 < g’(x*) < 0. Per il metodo di bisezione esiste anche un criterio spontaneo: il calcolo può venire interrotto quando si arriva a |mnMn| < w. Questo criterio, tuttavia, è più esigente di quello generale. en Esercizi 1) Calcola i primi 3 passaggi per trovare almeno una soluzione col metodo di bisezione nelle seguenti equazioni. a) 6x = 5x (è x* = 4,999871) d) 5(x3) = x (è x* = 1,34129) Usa m0 = 2 e M0 = 5; trova x3 = 4,8125. Usa m0 = 2 e M0 = 1; trova x3 = 1,3125. b) log7x = x4 (è x* = 4,806841) Usa m0 = 1 e M0 = 5; trova x3 = 4,75. e) 3x 7 = lnx (è x* = 1,847773) Usa m0 = 0,5 e M0 = 5; trova x3 = 1,90625. c) x7x5+x+7 = 0 (è x* = 1,41228) Usa m0 = 3 e M0 = 3; trova x3 = 1,125. f) 2x = x2 (è x* = 0,76666; e x* = 2...) Usa m0 = 2 e M0 = 2; trova x3 = 0,75. 2) Calcola i primi 3 passaggi per trovare almeno una soluzione col metodo del punto fisso nelle seguenti equazioni. a) 6x = 5x d) 5(x3) = x Usa x0 = 2; trova x3 = 4,999871. Usa x0 = 0; trova x3 = 1,34093. b) log7x = x4 Usa x0 = 3; trova x3 = 4,803992. e) 3x 7 = lnx Usa x0 = 1; trova x3 = 0,002486. c) x7x5+x+7 = 0 Usa x0 = 1,4; trova x3 = 2,6E+11. f) 2x = x2 Usa x0 = 3; trova x3 = 3,470089. 3) Calcola i primi 3 passaggi per trovare almeno una soluzione col metodo di Newton nelle seguenti equazioni. a) 6x = 5x d) 5(x3) = x Usa x0 = 5; trova x3 = 3,326813. Usa x0 = 4; trova x3 = #NUM!. b) log7x = x4 Usa x0 = 2; trova x3 = 4,806841. e) 3x 7 = lnx Usa x0 = 1; trova x3 = 1,905302. c) x7x5+x+7 = 0 Usa x0 = 0; trova x3 = 5,15487. f) 2x = x2 Usa x0 = 0; trova x3 = 0,77347.