radici ad indice generico con metodo ricorsivo

Il forum di Base5, dove è possibile postare problemi, quiz, indovinelli, rompicapo, enigmi e quant'altro riguardi la matematica ricreativa e oltre.

Moderatori: Gianfranco, Bruno

Rispondi
fabtor
Livello 5
Livello 5
Messaggi: 226
Iscritto il: mar nov 17, 2009 3:59 pm

radici ad indice generico con metodo ricorsivo

Messaggio da fabtor » mer apr 18, 2012 9:01 am

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).
Ah, se i portieri avessero sulla maglia: |e^{-i\pi}|...

Pongo y = x^{2} quindi y=\frac {x^{2}}{pongo}
[tratto da un compito in classe di uno studente di prima superiore]

Il vero gnomone aureo: http://thumbs.dreamstime.com/z/gnomo-de ... 526933.jpg

karl
Livello 4
Livello 4
Messaggi: 100
Iscritto il: gio mar 29, 2007 2:03 pm

Re: radici ad indice generico con metodo ricorsivo

Messaggio da karl » ven apr 20, 2012 3:11 pm

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

Pasquale
Livello 11
Livello 11
Messaggi: 2351
Iscritto il: mer mag 25, 2005 1:14 am

Re: radici ad indice generico con metodo ricorsivo

Messaggio da Pasquale » mar apr 24, 2012 9:51 pm

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.
_________________

\text {     }ciao Immagine ciao
E' la somma che fa il totale (Totò)

Rispondi