Metodo della regula falsi (metodo delle secanti con intervallo)
Il metodo della regula falsi, detto anche metodo della falsa posizione, delle corde o di Lagrange, è un metodo numerico iterativo che utilizzo per approssimare una radice dell'equazione \(f(x)=0\) in un intervallo \( [a,b] \) in cui la funzione è continua e assume valori di segno opposto agli estremi $$ f(a) \cdot f(b) = -1 $$ È una variante del metodo delle secanti.
Come funziona il metodo della regula falsi?
Per applicare il metodo considero un intervallo \([a_0,b_0]\) in cui la funzione \(f(x)\) è continua e assume valori di segno opposto agli estremi.
$$f(a_0)\cdot f(b_0)<0$$
Per il teorema degli zeri so che nell'intervallo esiste almeno una radice \(c\). Suppongo, per semplicità, che sia unica.

Per trovare una prima approssimazione della radice considero i due punti del grafico della funzione agli estremi dell'intervallo:
$$A(a_0,f(a_0)) \qquad B(b_0,f(b_0))$$
Poi traccio la retta secante che passa per questi punti e individuo la sua intersezione con l'asse delle ascisse.

Indico con \(x_1\) l'ascissa del punto di intersezione. Questo valore rappresenta la mia prima approssimazione della radice \(c\).
Per calcolarlo utilizzo l'equazione della retta passante per due punti:
$$\frac{y-f(a_0)}{f(b_0)-f(a_0)}=\frac{x-a_0}{b_0-a_0}$$
Pongo \(y=0\), perché cerco l'intersezione con l'asse delle ascisse, e ricavo:
$$ \boxed{x_1=a_0-\frac{(b_0-a_0)f(a_0)}{f(b_0)-f(a_0)}} $$
A questo punto ho ottenuto una prima approssimazione della radice. Devo però verificare se è esatta oppure se posso migliorarla.
- Se \(f(x_1)=0\), ho trovato la radice esatta dell'equazione. Il procedimento termina qui.
- Se \(f(x_1) \ne 0\), devo modificare l'intervallo e reiterare il procedimento. Scelgo il nuovo intervallo \( [a_{n+1},b_{n+1}] \) in modo che la funzione continui ad assumere valori di segno opposto agli estremi. In questo modo mantengo sempre la radice nell'intervallo \( [a_{n+1},b_{n+1}] \), indipendentemente dai segni iniziali della funzione.
In generale, a ogni iterazione, se \(f(x_{n+1})\ne 0 \), aggiorno gli estremi secondo la regola:
$$ \begin{cases} a_{n+1}=a_n,\quad b_{n+1}=x_{n+1} & \text{se } f(a_n)f(x_{n+1})<0 \\\\[6pt] a_{n+1}=x_{n+1},\quad b_{n+1}=b_n & \text{se } f(a_n)f(x_{n+1})>0 \end{cases} $$
Questa è la regola generale della regula falsi, valida indipendentemente dal segno iniziale di \(f(a_0)\).
Ripeto quindi il procedimento nel nuovo intervallo, ottenendo una seconda approssimazione \(x_{n+1}\). E via dicendo.
Quando interrompo il procedimento?
Continuo a calcolare nuove approssimazioni fino a raggiungere la precisione desiderata.
Un criterio pratico consiste nel fissare una tolleranza \(\varepsilon>0\) e interrompere il procedimento quando la differenza tra due approssimazioni successive diventa sufficientemente piccola:
$$ |x_{n+1}-x_n|<\varepsilon $$
Questa condizione indica che le approssimazioni successive sono molto vicine, anche se non mi garantisce da sola che l'errore rispetto alla radice esatta sia effettivamente inferiore a \(\varepsilon\). Infatti, due approssimazioni successive possono essere molto vicine tra loro, ma ancora lontane dalla radice esatta.
Nota. Se voglio una garanzia sulla precisione, posso utilizzare un secondo criterio: verifico che l'ampiezza dell'intervallo che contiene la radice sia inferiore alla tolleranza. $$ b_n-a_n < \varepsilon $$ Infatti, poiché la radice (c) appartiene all'intervallo ([a_n,b_n]), so che per ogni approssimazione (x_n) appartenente allo stesso intervallo vale: $$|x_n-c|\leq b_n-a_n < \varepsilon $$ Pertanto, quando l'ampiezza dell'intervallo diventa inferiore a (\varepsilon), posso interrompere il procedimento, perché ho la garanzia che l'errore assoluto dell'approssimazione sia inferiore alla tolleranza prefissata.
Un esempio pratico
Voglio approssimare la radice dell'equazione:
$$x^3-x-2=0$$
utilizzando il metodo della regula falsi nell'intervallo \([1,2]\).
Considero la funzione:
$$f(x)=x^3-x-2$$
Per prima cosa verifico che la funzione assuma valori di segno opposto agli estremi dell'intervallo.
$$f(1)=1^3-1-2=-2$$
$$f(2)=2^3-2-2=4$$
La funzione assume effettivamente dei valori opposti agli estremi.
$$f(1)\cdot f(2)=-2\cdot4=-8<0$$
Quindi, poiché la funzione è continua, per il teorema degli zeri so che esiste almeno una radice nell'intervallo \([1,2]\).

Nota. Inoltre, deduco che la radice è unica in \( [1,2] \) poiché la derivata prima della funzione \(f'(x)=3x^2-1>0\) è sempre positiva in questo intervallo, ossia la funzione è strettamente crescente.
Prima iterazione
Pongo \(a_0=1\) e \(b_0=2\) e applico la formula della regula falsi:
$$x_1=a_0-\frac{(b_0-a_0)f(a_0)}{f(b_0)-f(a_0)}$$
Sostituisco i valori:
$$x_1=1-\frac{(2-1)(-2)}{4-(-2)}$$
$$\boxed{x_1=\frac43\approx1{,}333333}$$
In altre parole, traccio una retta secante tra i due estremi e individuo il punto di intersezione $ x_1 $ sull'asse dell'ascisse.

Ora calcolo il valore della funzione in \(x_1\):
$$f\left(\frac43\right)=\left(\frac43\right)^3-\frac43-2$$
$$\boxed{f(x_1)=-\frac{26}{27}\approx-0{,}962963}$$
Poiché \(f(x_1)\ne0\), devo scegliere un nuovo intervallo.
Confronto il segno di \(f(a_0)\) con quello di \(f(x_1)\):
$$f(a_0)f(x_1)=(-2)\left(-\frac{26}{27}\right)>0$$
I due valori hanno lo stesso segno. Pertanto sostituisco l'estremo sinistro con \(x_1\):
$$a_1=x_1=\frac43,\qquad b_1=2$$
Il nuovo intervallo è:
$$ \left[\frac43,2\right] $$
Seconda iterazione
Ripeto il procedimento utilizzando il nuovo intervallo.
$$x_2=a_1-\frac{(b_1-a_1)f(a_1)}{f(b_1)-f(a_1)}$$
Sostituisco i valori:
$$x_2=\frac43-\frac{\left(2-\frac43\right)\left(-\frac{26}{27}\right)}{4-\left(-\frac{26}{27}\right)}$$
Ottengo:
$$\boxed{x_2=\frac{98}{67}\approx1{,}462687}$$
Geometricamente, ho tracciato un'altra retta secante tra gli estremi dell'intervallo $ \left[\frac43,2\right] $ e ho individuato l'intersezione $ x_2 $ sull'asse dell'ascisse.

A questo punto calcolo \(f(x_2)\):
$$f(x_2)\approx-0{,}333339$$
Anche in questo caso è negativa \(f(x_2)<0\). Pertanto mantengo fisso l'estremo destro \(b_2=2\) e pongo \(a_2=x_2\).
$$ a_2=x_2=[1{,}462687 ,\qquad b_1=2$$
Il nuovo intervallo diventa:
$$ [1{,}462687,\ 2] $$
Iterazioni successive
Ripeto lo stesso procedimento, mantenendo sempre gli estremi in cui la funzione assume valori di segno opposto.
- Iterazione 1: \(x_1\approx1{,}333333\), \(f(x_1)\approx-0{,}962963\)
- Iterazione 2: \(x_2\approx1{,}462687\), \(f(x_2)\approx-0{,}333339\)
- Iterazione 3: \(x_3\approx1{,}504019\), \(f(x_3)\approx-0{,}101818\)
- Iterazione 4: \(x_4\approx1{,}516331\), \(f(x_4)\approx-0{,}029895\)
- Iterazione 5: \(x_5\approx1{,}519919\), \(f(x_5)\approx-0{,}008675\)
- Iterazione 6: \(x_6\approx1{,}520957\), \(f(x_6)\approx-0{,}002509\)
- Iterazione 7: \(x_7\approx1{,}521258\), \(f(x_7)\approx-0{,}000725\)
- Iterazione 8: \(x_8\approx1{,}521344\), \(f(x_8)\approx-0{,}000209\)
Osservo che le approssimazioni sono crescenti e si avvicinano progressivamente alla radice da sinistra.
La radice dell'equazione, arrotondata a sei cifre decimali, è:
$$\boxed{c\approx1{,}521380}$$
Dopo otto iterazioni ho ottenuto un'approssimazione \(x_8\approx1{,}521344\), con un errore di circa \(0{,}000035\).

Questo esempio mostra come il metodo della regula falsi permetta di avvicinarmi progressivamente alla radice, mantenendo sempre un intervallo che la contiene.
Qual è la differenza tra regula falsi e metodo delle secanti?
I due metodi utilizzano la stessa costruzione geometrica, ma differiscono nella scelta dei punti con cui traccio le rette successive.
- Nel metodo della regula falsi mantengo sempre un intervallo in cui la funzione assume valori di segno opposto agli estremi. In questo modo conservo la garanzia che nell'intervallo esista almeno una radice.
- Nel metodo delle secanti classico utilizzo le ultime due approssimazioni per costruire la nuova retta, senza imporre che la funzione abbia segni opposti nei due punti. La formula del metodo delle secanti classico è: $$\boxed{x_{n+1}=x_n-\frac{f(x_n)(x_n-x_{n-1})}{f(x_n)-f(x_{n-1})}}$$
Quale scegliere tra i due metodi?
La regula falsi offre il vantaggio di mantenere la radice all'interno di un intervallo. Pertanto, garantisce la convergenza a una radice quando la funzione è continua e assume valori di segno opposto agli estremi. Tuttavia, può convergere lentamente quando uno degli estremi rimane fisso per molte iterazioni.
Il metodo delle secanti classico, invece, può convergere più rapidamente ma non offre la stessa garanzia di mantenere la radice all'interno dell'intervallo. Infatti, può accadere che le approssimazioni si allontanino dalla radice e il metodo non converga alla soluzione cercata.
Note
Alcune osservazioni e note pratiche su questo metodo
1] Metodo semplificato se la concavità è costante
Se la funzione è sufficientemente regolare e la derivata seconda \(f''(x)\) mantiene un segno strettamente positivo o negativo nell'intervallo, posso semplificare il procedimento.
In queste condizioni la successione delle approssimazioni è monotona e uno degli estremi dell'intervallo rimane fisso.
Distinguo due casi.
Primo caso: \(f(a_0)\cdot f''(x)>0\)
Se il valore della funzione in \(a_0\) e la derivata seconda hanno lo stesso segno, mantengo fisso l'estremo \(a_0\).
Pongo \(x_0=b_0\) e utilizzo la formula:
$$\boxed{x_{n+1}=x_n-\frac{a_0-x_n}{f(a_0)-f(x_n)}f(x_n)}$$
In questo caso aggiorno soltanto l'altro estremo dell'intervallo.
Secondo caso: \(f(a_0)\cdot f''(x)<0\)
Se il valore della funzione in \(a_0\) e la derivata seconda hanno segni opposti, mantengo fisso l'estremo \(b_0\).
Pongo \(x_0=a_0\) e utilizzo la formula:
$$\boxed{x_{n+1}=x_n-\frac{b_0-x_n}{f(b_0)-f(x_n)}f(x_n)}$$
Anche in questo caso aggiorno un solo estremo.
Se la successione è crescente, ottengo approssimazioni per difetto della radice. Se invece è decrescente, ottengo approssimazioni per eccesso.
E così via.
