Pagina 1 di 1

radici ad indice generico con metodo ricorsivo

Inviato: mer apr 18, 2012 10:01 am
da fabtor
Ciao a tutti, mi chiedevo se esiste il modo di generalizzare il "metodo babilonese" per radici di qualunque indice.

Per maggior chiarezza segue il metodo babilonese x il calcolo delle radici quadrate:


$\sqr{R} =x(n) = lim_{n\to\infty} \frac{(x(n-1) + \frac{R}{x(n-1)})}{2}$

N.B. $(n)$ e $(n-1)$ sono dei pedici alla $x$

P.S. Inoltre mi chiedevo se esiste, o al limite come si dovrebbe iniziare ad operare per individuare, un metodo ricorsivo sullo stile del "metodo babionese" per il calcolo degli esponenti di una potenza in una data base conoscendo il risultato della potenza stessa, senza dover scomodare i logaritmi.

Cioè trovare x sapendo che $a^{x } = b$ con a e b noti ($a > 0$, $a \neq 1$ e $b > 0).$

Re: radici ad indice generico con metodo ricorsivo

Inviato: ven apr 20, 2012 4:11 pm
da karl
Ad occhio direi che il metodo "babilonese" è semplicemente un caso particolare del metodo di Newton o delle tangenti. Precisamente, se devo risolvere l'equazione f(x)=0 , posso usare la ricorsione data dal sistema:
(1) $\begin{cases} x_o=a\\x_k=x_{k-1}-\frac{f(x_{k-1})}{f'(x_{k-1})}\\k\geq 1\end{cases}$
essendo a un valore iniziale opportuno ed f' il simbolo di derivata prima.
Nel caso generale della ricerca della radice ennesima (reale) di un numero reale R ,si ha:
$f(x)=x^n-R,x_o=R$ e quindi la (1) diventa :
(2) $\begin{cases} x_o=R\\x_k=x_{k-1}-\frac{x_{k-1}^n-R}{nx_{k-1}^{n-1}}\\k\geq 1\end{cases}$

(ho usato k come pedice per non fare confusione con l' " n " dell'esponente ). Facendo qualche semplificazione, la (2) si può scrivere anche così:
(3) $\begin{cases} x_o=R\\x_k=\frac{n-1}{n}x_{k-1}+\frac{R}{nx_{k-1}^{n-1}}\\k\geq 1\end{cases}$
che è la formula generale richiesta. Di norma questa formula si gestisce con un programma scritto in uno dei tanti linguaggi di programmazione esistenti e pertanto non ritengo che si debba far tendere k all'infinito ma piuttosto fermare il programma medesimo fino al raggiungimento di una conveniente approssimazione.
Se nella (3) si pone n= 2 ( caso della radice quadrata ) si ottiene proprio la formula "babilonese".
Quanto al secondo quesito credo che si possa usare lo stesso metodo scegliendo $f(x)=a^x-b,x_o=b$

Re: radici ad indice generico con metodo ricorsivo

Inviato: mar apr 24, 2012 10:51 pm
da Pasquale
Una volta misi su un programmino in Decimal Basic, da far girare in doppia precisione (10/1000), per il calcolo approssimato delle radici ennesime.

Non ricordo più le elucubrazioni dell'epoca (non le ho rivisitate), ma nei limiti delle possibilità di Decimal Basic, il programma funzionicchiava.

Al termine dell'elaborazione, viene stampata la radice e per controprova il radicando ricavato dalla potenza della radice, in modo da soppesare l'accettabilità dell'approssimazione.


INPUT PROMPT "inserisci indice della radice e radicando, separati da una virgola ":indice,radicando
PRINT
PRINT
LET p = ROUND(2^74/indice)
FOR m=1 TO 74
LET radicando=SQR(radicando)
NEXT M
LET bas=radicando

LET pot = 9223372036854775807 !'(massimo indice ammesso per le potenze in Decimal Basic)

IF p<=pot THEN
LET radice=bas^p
ELSE
LET n=INT(p/pot)
LET res=p-n*pot
LET radice=1
FOR m=1 TO n
LET radice=radice*bas^pot
NEXT M
LET radice=radice*bas^res
END IF
PRINT radice
PRINT
PRINT radice^indice
PRINT radicando

END


Tutto questo per fare questo tipo di operazione su numeri relativamente lunghi e indici abbastanza alti, sempre nei limiti delle possibilità di Decimal Basic, altrimenti sarebbe sempre possibile semplificare con le potenze frazionarie, che però vengono accettate da Decimal Basic solo in precisione semplice, quindi con possibilità più ristrette, ma con maggiore precisione fino a tale limite


LET x= 617673396283947
LET y=x^(1/31)
PRINT y
print y^31


Nell'esempio sopra, si vede che Decimal Basic consente di estrarre radici di numeri lunghi al massimo 15 cifre, con approssimazione variabile, secondo il radicando e/o l'indice della radice.