Radice cubica (e quinta) con la calcolatrice

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

Moderatori: Gianfranco, Bruno

Gianfranco
Supervisore del sito
Supervisore del sito
Messaggi: 1708
Iscritto il: ven mag 20, 2005 9:51 pm
Località: Sestri Levante
Contatta:

Radice cubica (e quinta) con la calcolatrice

Messaggio da Gianfranco »

Ciao a tutti,

Chiedo scusa, ma vi propongo un problemino semplice semplice...

Nelle mie lezioni di matematica incoraggio gli alunni (scuola media) ad usare la calcolatrice in modo intelligente.
Chiedo a tutti di procurarsi una calcolatrice economica con:
a) le operazioni +, -, x, :
b) la radice quadrata
c) i tasti M+, M-, Mrc (operazioni sulla memoria)

L'altro giorno gli alunni di terza, dopo aver capito che la radice quarta si calcola premendo due volte di seguito il tasto di radice quadrata, mi hanno chiesto:
-Come si fa a calcolare la radice cubica, e la radice quinta?

Il metodo dovrebbe consistere in una sequenza breve di tasti da digitare in modo automatico.
La precisione richiesta è di una o due cifre decimali.

Ad esempio:
$\sqr[3]{2384}$ = 13,36 o 13,4 vanno bene
$\sqr[5]{678932}$ = 14,67 o 14,7 vanno bene

Qual è la più breve (e/o la più semplice) sequenza di tasti da premere per ottenere la radice cubica di un numero? E la radice quinta?

Gianfranco Bo

Admin
Amministratore del sito
Amministratore del sito
Messaggi: 869
Iscritto il: mer apr 20, 2005 3:47 pm
Località: Benevento

Messaggio da Admin »

Ciao Gianfranco,
non penso sia il metodo più breve, comunque ti mostro l'algoritmo cui ho pensato per la radice cubica:

Supponiamo di voler calcolare la radice cubica di un numero x;
per prima ricaviamo $\sqr x$ e $\sqr[4] x$;

sappiamo che $\sqr[4] x 1$

a questo punto, effettuiamo la seguente operazione:
  1. ricaviamo il valore centralle dell'intervallo tra $\sqr[4] x$ e $\sqr x$, che è:
    $c=\sqr[4] x+\frac{(\sqr x - \sqr[4] x)}{2}$
    ci ricaviamo, poi, $c^3$ e lo confrontiamo col nostro valore x iniziale;
ripetiamo l'operazione 1. (albero binario di ricerca) fino a raggiungere la precisione desisderata.

Admin
Pietro Vitelli (Amministratore del Forum)
"Un matematico è una macchina che converte caffè in teoremi" Paul Erdös
www.pvitelli.net

Ospite

Messaggio da Ospite »

esempio:

x^(1/3)
=
x^(0.33333...)
=
x^((0.3333..*2^n)/2^n)
=(circa)
x^(round((0.3333..*2^n))/2^n)

più n è grande più è preciso il risultato.

esempio, radice cubica di 3, con n=10:
3^(round(1/3*2^10)/2^10)
=
3^(341/2^10)=sqrt(...sqrt(sqrt(3*3*3*3...*3))...)
moltiplicare 341 volte 3 e poi fare 10 volte la radice quadrata, viene:
3^(341/2^10)=sqrt(...sqrt(sqrt(3*3*3*3...*3))...)=1.4422
errore assoluto: 5.156867885611760e-004


Ciao

Ospite

Messaggio da Ospite »

dimenticavo:

con n=5 già si ha l'accuratezza voluta.

ciao

Admin
Amministratore del sito
Amministratore del sito
Messaggi: 869
Iscritto il: mer apr 20, 2005 3:47 pm
Località: Benevento

Messaggio da Admin »

Bello!
non ci avevo pensato.

Gianfranco, ma Ospite sei tu?

Ciao
Admin
Pietro Vitelli (Amministratore del Forum)
"Un matematico è una macchina che converte caffè in teoremi" Paul Erdös
www.pvitelli.net

Ospite

Messaggio da Ospite »

No non sono Gianfranco...sono il vecchio archimede....

Ciao

Admin
Amministratore del sito
Amministratore del sito
Messaggi: 869
Iscritto il: mer apr 20, 2005 3:47 pm
Località: Benevento

Messaggio da Admin »

Eureka!

è un piacere risentirti!

registrati al forum ed unisciti a noi!

complimenti ancora per l'algoritmo!

Ciao
Admin
Pietro Vitelli (Amministratore del Forum)
"Un matematico è una macchina che converte caffè in teoremi" Paul Erdös
www.pvitelli.net

Gianfranco
Supervisore del sito
Supervisore del sito
Messaggi: 1708
Iscritto il: ven mag 20, 2005 9:51 pm
Località: Sestri Levante
Contatta:

Messaggio da Gianfranco »

Grazie Archimede,

Il metodo che tu proponi è semplice e automatico.
Radice cubica.
Ad esempio, con 6 livelli si fa (R è il tasto di Radice Quadrata):
a) digitare il numero
b) premere: RRRRRR=x====================
Per ricordarlo, sinteticamente:
(numero)(6R)=x(20=)
In tutto 28 tasti più il numero digitato.

Ho verificato che nel range 2-1000000, l'errore cresce variando dallo 0.3% al 7% del valore esatto.
Non è male!

Radice quinta.
Procedendo analogamente:
x^((0.2*2^n)/2^n)
con 7 livelli si fa:
a) digitare il numero
b) premere: RRRRRRR=x========================
Per ricordarlo, sinteticamente:
(numero)(7R)=x(24=)
In tutto 33 tasti più il numero digitato.

Ho verificato che nel range 2-1000000, l'errore cresce variando dallo 0.3% al 6% del valore esatto.
Anche in questo caso non è male!

Il metodo che avevo trovato io, a parità di tasti premuti, dà risultati più precisi ma è molto più difficile da ricordare.

Pietro, ho provato anche il tuo metodo ma non ho ben capito come procedere dopo aver trovato il primo c.

Gianfranco

Ospite

Messaggio da Ospite »

Ciao a tutti,
sono contento che il metodo vi sia piaciuto.

Questo sistema deriva dall'esperienza avuta di programmazione di algoritmi
di controllo sviluppati in Matlab (quindi a virgoila mobile) in processore a virgola fissa (fixed-point). Dove i numeri non interi vengono aprrossimati come
rapporto di un numeratore e denominatore, dove il denominatore
deve essere un multiplo di 2 (che poi si traduce in schift dei registri del processore).

Scusate se entro come Ospite, la prossima volta faccio il login..

archimede

Ospite

Messaggio da Ospite »

Dimeticavo ancora....

penso sia più corretto parlare di acuratezza che di precisione....
è diverso...

Ciao

Admin
Amministratore del sito
Amministratore del sito
Messaggi: 869
Iscritto il: mer apr 20, 2005 3:47 pm
Località: Benevento

Messaggio da Admin »

Ciao Gianfranco,
il mio metodo è più macchinoso;
però, se effettuiamo le operazioni di addizione e divisione per 2 previste nel mio metodo a mente, senza usare la calcolatrice, si riesce ad utilizzare un numero ridotto di tasti; inoltre mi è venuto in mente un possibile perfezionamento di questo metodo che risulta più breve; più tardi invio un altro post;

Per il momento ti spiego il metodo iniziale che ho proposto, con un esempio:

supponiamo di voler calcolare $\sqr[3]{30}$ con precisione estesa a 1 cifra decimale;
1. ci ricaviamo $\sqr{30}$:
$\sqr{30}\approx 5,48$

2. ci ricaviamo $\sqr[4]{30}$:
$\sqr[4]{30}\approx 2,34$

Ora sappiamo che $\sqr[4]{30}30$

Quindi adesso sappiamo che $\sqr[3]{30}$ è compresa nell'intervallo $]\sqr[4]{30}\,,\,\sqr[3]{c}[$

Immagine

allo stesso modo, consideriamo il valore centrale di quest'ultimo intervallo, che chiamiamo $\sqr[3]{c_{\tiny 1}}$; si ha:

$\sqr[3]{c_{\tiny 1}}=\frac{\sqr[3]{c_{\tiny 1}}+\sqr[4]{30}}{2}=\frac{3,91+2,34}{2}=3,12$

4. confrontiamo ora $\sqr[3]{c_{\tiny 1}}$ con $\sqr[3]{30}$; si ha:

$c_{\tiny 1}=(\sqr[3]{c_{\tiny 1}})^3=(3,12)^3=30,37\quad \Rightarrow\quad c_{\tiny 1}>30$
in questo caso c è di poco superiore a 30 ($c_{\tiny 1}-30=0,37$);
in generale, se tale differenza è $<1$, vuol dire che abbiamo raggiunto una precisione di almeno 1 cifra decimale;

infatti abbiamo $c_{\tiny 1}=3,12$ mentre $\sqr[3]{30}\approx 3,107$.

Continuando allo stesso modo si aumenta il grado di precisione.

Comunque l'ho perfezionato in modo da ridurre il numero di confronti.

A breve lo posto.

Admin
Pietro Vitelli (Amministratore del Forum)
"Un matematico è una macchina che converte caffè in teoremi" Paul Erdös
www.pvitelli.net

delfo52
Livello 9
Livello 9
Messaggi: 1556
Iscritto il: mer mag 25, 2005 4:19 pm
Località: bologna

Messaggio da delfo52 »

in pratica, il tuo sistema è il vecchio sistema...nasometrico !
Non prenderla come una offesa. Sai bene che sono un cultore della matematica approssimativa, sia nella teoria che, soprattutto, nella pratica.
Il procedimento per dimezzamenti successivi, dopo appena un po' di pratica, si perfeziona da solo. Basta che, ad occhio, uno sia capace di "stringere nell'angolo" la soluzione giusta, in sezioni dell'intervallo minori della metà, e in tre o quattro passaggi, la accuratezza del risultato si amplifica (nel senso che si rimpicciolisce)
Enrico

Pasquale
Livello 12
Livello 12
Messaggi: 2853
Iscritto il: mer mag 25, 2005 2:14 am

Messaggio da Pasquale »

Molto bello l'algoritmo di Archimede, che riduce tutto al calcolo di radici quadrate, il che è molto utile anche per chi utilizza il Decimal Basic: infatti, in Decimal Basic, se si lavora con la precisione minore (tasto 10), è possibile effettuare qualsiasi radice ennesima, in quanto è ammessa la potenza frazionaria [es: 3^(1/7) permette di effettuare la radice settima di 3], però se devo effettuare la radice di un numero lungo più di 15 cifre, allora il risultato perde di precisione ( es: 1234567890123456 viene rappresentato con 1.23456789012346E15 = 1234567890123460; la sua radice settima è 143.195942087411, la cui settima potenza è 1.23456789012345E15 = 1.234567890123450).
Occorrerebbe quindi lavorare con la precisione maggiore (tasto 10/1000), ma in questo ambiente non è supportata la potenza frazionaria e qui subentra l'algoritmo di Archimede, tradotto nel seguente programma in Decimal Basic per il calcolo della radice ennesima di numeri lunghi fra 16 e 20/21 cifre:

INPUT PROMPT "inserisci indice della radice e radicando, separati da una virgola ":indice,radicando
PRINT
PRINT
PRINT "radicando =";radicando
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 =";radice
PRINT "radicando =";radice^indice

END

Alcuni passaggi sono obbligati dal fatto che Decimal Basic ha molte limitazioni; tutto per poche cifre fra 16 e 21 sembra poco, ma può servire e comunque per me era un esercizio: magari qualcuno può migliorarlo.
Se si aumenta la potenza 74esima del 2, si allungano i tempi di attesa, in quanto aumenta il valore di n, mentre se si abbassa, diminuisce la precisione, così come diminuisce la precisione se i numeri sono più lunghi di 21 cifre.
Ritornando alla radice settima di 1234567890123456, otteniamo 143.195942087411036433..., che elevato alla settima dà 1234567890123456.0000068.... (comunque resta il fatto che un risultato bisognerà pure troncarlo ad una certa quantità di cifre decimali, per cui la differenza diviene insignificante, ma se la radice non è il risultato che interessa e però deve essere riutilizzata in altri calcoli, allora un più preciso valore, memorizzato in una variabile, può risultare necessario).
Ultima modifica di Pasquale il ven mar 31, 2006 8:59 pm, modificato 3 volte in totale.
_________________

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

Admin
Amministratore del sito
Amministratore del sito
Messaggi: 869
Iscritto il: mer apr 20, 2005 3:47 pm
Località: Benevento

Messaggio da Admin »

Tutt'altro che offeso!
abbiamo lo stesso identico punto di vista sulla questione;
delfo52 ha scritto:Basta che, ad occhio, uno sia capace di "stringere nell'angolo" la soluzione giusta, in sezioni dell'intervallo minori della metà, e in tre o quattro passaggi, la accuratezza del risultato si amplifica (nel senso che si rimpicciolisce)
avevo pensato allo stesso modo per il perfezionamento;
ho iniziato vari calcoli, anche piuttosto avanzati;
mi ci vuole un pò di tempo;
rinvio il tutto ai prossimi giorni;

penso però che il metodo di Archimede dia la precisione migliore.

Ciao
Admin
Pietro Vitelli (Amministratore del Forum)
"Un matematico è una macchina che converte caffè in teoremi" Paul Erdös
www.pvitelli.net

Nicola
Livello 2
Livello 2
Messaggi: 29
Iscritto il: sab dic 10, 2005 9:57 pm
Località: Potenza

Messaggio da Nicola »

Ricordo di un metodo studiato in calcolo numerico per trovare il valore di una funzione continua $y=f(x)$ per un valore assegnato dell'argomento $x$. Si scrive la funzione in forma implicita $F(x,y)=0$, supponendo che anch'essa sia continua e abbia una derivata parziale continua$F_y(x,y)\neq0$. Detto $y_n$ un valore approssimato di $y$, applicando il teorema di Lagrange, si ha:

$F(x,y_n) = F(x,y_n) - F(x,y) = (y_n - y) F_y(x, \bar{y_n})$,

dove $\bar{y_n}$ è un valore compreso fra $y_n$ e $y$. Di qui

$y = y_n - \frac{F(x,y_n)}{ F_y(x, \bar{y_n})}$.

Non conosciamo il valore di $\bar{y_n}$. Ponendo $\bar{y_n} \approx y_n$, per il calcolo del valore di $y$ abbiamo un processo iterato

$y_{n+1} = y_n - \frac{F(x,y_n)}{ F_y(x, y_n)}$. $(n = 0, 1, 2,...)$.

Si riconosce, nella formula, un’applicazione del metodo delle tangenti di Newton. La convergenza del processo è assicurata se $F_y(x,y)$ e $F_{yy}(x,y)$ conservano i loro segni nell’intervallo considerato che contiene la radice $y$.

Per il calcolo della radice cubica, se $y = \sqr[3]{x}$, ponendo

$F(x,y) \equiv y^3 - x = 0$,

si ha

$F_y(x,y) = 3y^3$.

Pertanto si ottiene la formula iterativa :


$y_{n+1} = y_n - \frac{y_n^3 - x}{ 3y_n^2}$, oppure


$y_{n+1} = \frac{1}{3}(2y_n + \frac{x}{y_n^2})$.

Partendo da un valore approssimato (anche solo dalla parte intera) del numero di cui vogliamo la radice, il metodo garantisce una convergenza abbastanza rapida, ed è facilmente algoritmizzabile. In maniera analoga si procede con la radice quinta.

P.S. Per Pietro: mi sembra che il metodo funzioni egregiamente anche con i logaritmi, in qualsiasi base!
Nicola.
"La Matematica è una vera sinfonia dell'infinito" (David HILBERT).

Rispondi