Calcolatrice
che voi sappiate come fa la calcolatrice a calcolare le funzioni trigonometriche? usa polinomi di taylor di grado n sufficienti x avere un numero decente di decimali o altro?
come si può calcolare pi con un buon numero di decimali? mi pare si usi una certa differenza di arcotangenti, ma nn mi ricordo quale.
Giochino per calcolatrici: definisco la successione per ricorrenza:
a0=1/77
a(n+1)=78*a(n)-1
charamente ogni termine è uguale a 1/77 ma se provate a farlo con una calcolatrice...
come si può calcolare pi con un buon numero di decimali? mi pare si usi una certa differenza di arcotangenti, ma nn mi ricordo quale.
Giochino per calcolatrici: definisco la successione per ricorrenza:
a0=1/77
a(n+1)=78*a(n)-1
charamente ogni termine è uguale a 1/77 ma se provate a farlo con una calcolatrice...
Risposte
speravo in qualche delucidazione: camillo dice "maggiorando il resto", ma io non riesco a dare una risposta pulita e allora ho fatto girare un programmino che [per f=ln(1+x)] calcola nell'estremo x=1 l'errore della serie di Taylor troncata al termine di esponente n.
sembra che R(n) tenda a 0,5/n
cioè, per avere un errore < 10-5 (come il polinomio di Hastings di 5 termini), devo arrivare ad n=50000
da brivido! ecco perchè si sente dire che Taylor è lento a convergere!
se ho sbagliato correggetemi,
e ditemi, per favore, il modo teorico per arrivare al risultato che io (non sapendo far di meglio) ho ottenuto col rivoltante sistema della forza bruta.
tony
sembra che R(n) tenda a 0,5/n
cioè, per avere un errore < 10-5 (come il polinomio di Hastings di 5 termini), devo arrivare ad n=50000
da brivido! ecco perchè si sente dire che Taylor è lento a convergere!
se ho sbagliato correggetemi,
e ditemi, per favore, il modo teorico per arrivare al risultato che io (non sapendo far di meglio) ho ottenuto col rivoltante sistema della forza bruta.
tony
Nessuno prova a risponedere alla domanda "acidula" di Tony ?
Maggiorando il resto...
Maggiorando il resto...
questa del CORDIC è veramente intrigante!
ci vuole un sacco di tempo per assimilarla un po'
--------------------------------------------------------
per quanto riguarda le approssimazioni di Hastings e i coefficienti di diverse "viste" della
stessa funzione, li riporto per la funz. y = ln(1+x), così come lo ho ricopiati dal suddetto
Abramowitz, aggiungendovi una col. coi coeff. del corrispond. sviluppo in serie di Taylor:
per apprezzare il lavoro dell'Hastings, potrebbe esser divertente provare a
diagrammare con una scala opportuna l'errore:
p. es. y = [Hastings5 - ln(x)]*10^5
e notare come sia stato "spalmato" sull'intervallo [0,1];
facendo poi lo stesso per Hastings8 e per un Taylor a n termini
domanda acidula:
dopo quanti termini potrei troncare la serie di Taylor per garantire un errore
di 1*10^-5 per x=1 (come l'Hastings5 da 5 termini)?
tony
*Edited by - tony on 02/05/2004 00:19:09
ci vuole un sacco di tempo per assimilarla un po'
--------------------------------------------------------
per quanto riguarda le approssimazioni di Hastings e i coefficienti di diverse "viste" della
stessa funzione, li riporto per la funz. y = ln(1+x), così come lo ho ricopiati dal suddetto
Abramowitz, aggiungendovi una col. coi coeff. del corrispond. sviluppo in serie di Taylor:
ln(1+x) 0 <= x <= 1
col. [2]:
Hastings5 = a1*x + a2*x^2 +...+ a5*x^5
ln(1+x) = Hastings5 + E(x) con |E(x)| <= 10^-5
col. [3]:
Hastings8 = a1*x + a2*x^2 +...+ a8*x^8
ln(1+x) = Hastings8 + E(x) con |E(x)| <= 3*10^-8
col. [4]:
Taylor:
ln(1+x) = a1*x + a2*x^2 +...+ a10*x^10 + ...
[1] [2] [3] [4]
a1 = .99949 556 .99999 64239 1.0
a2 = -.49190 896 -.49987 41238 -.5
a3 = .28947 478 .33179 90258 .333...
a4 = -.13606 275 -.24073 38084 -.25
a5 = .03215 845 .16765 40711 .2
a6 = -.09532 93897 -.166...
a7 = .03608 84937 .142857..
a8 = -.00645 35442 -.125
a9 = .111...
a10= -.1
per apprezzare il lavoro dell'Hastings, potrebbe esser divertente provare a
diagrammare con una scala opportuna l'errore:
p. es. y = [Hastings5 - ln(x)]*10^5
e notare come sia stato "spalmato" sull'intervallo [0,1];
facendo poi lo stesso per Hastings8 e per un Taylor a n termini
domanda acidula:
dopo quanti termini potrei troncare la serie di Taylor per garantire un errore
di 1*10^-5 per x=1 (come l'Hastings5 da 5 termini)?
tony
*Edited by - tony on 02/05/2004 00:19:09
Agli inizi delle calcolatrici scientifiche da tavolo ( anni '70)
veniva usato l'algoritmo CORDIC (Coordinate Rotation Digital
Computer) per calcolare i valori delle funzioni trascendenti come:
seno, coseno, esponenziale etc.
Questo algoritmo ha la caratteristica di usare un po' di addizioni ma
UNA SOLA MOLTIPLICAZIONE : e il punto debole delle calcolatrici era
allora proprio la moltiplicazione che richiedeva un lungo tempo di
esecuzione.
Il metodo si basa sulla rotazione di vettori nel piano ....ed è
piuttosto ingegnoso.Sembra che fu ideato nel 1959, ma per tutt'altri
scopi.
Per maggiori informazioni vedere:
http://www.andraka.com/files/crdcsrvy.pdf
veniva usato l'algoritmo CORDIC (Coordinate Rotation Digital
Computer) per calcolare i valori delle funzioni trascendenti come:
seno, coseno, esponenziale etc.
Questo algoritmo ha la caratteristica di usare un po' di addizioni ma
UNA SOLA MOLTIPLICAZIONE : e il punto debole delle calcolatrici era
allora proprio la moltiplicazione che richiedeva un lungo tempo di
esecuzione.
Il metodo si basa sulla rotazione di vettori nel piano ....ed è
piuttosto ingegnoso.Sembra che fu ideato nel 1959, ma per tutt'altri
scopi.
Per maggiori informazioni vedere:
http://www.andraka.com/files/crdcsrvy.pdf
posso confermare quel che dice Pachito:
"smontando" le macro-istruzioni di "calcolo scientifico" in voga
quando ancora non erano state realizzate in harware (o firmware)
avevo trovato le stesse successioni di coefficienti faticosamente calcolate da Hastings "martellandole", limandole e lisciandole a mano (avvincente il suo racconto del procedimento) fino ad ottenerne,su tutto il campo definito, una uniforme distribuzione di errori non solo per la funzione, ma anche per alcune sue derivate.
un fatto curioso è che le sequenze variano a seconda della precisione diversa:
i primi 3 coeff. della successione di 4 termini (con precisione di 6 cifre) sono DIVERSI dai 3 della success. di 3 termini (con precis. 4 cifre)! (*)
quindi il lavoro è ben più accurato che non l'aggiunta di un termine di una serie; una fatica boia!
trovate uno spartano riassunto sull'Abramowitz (and Stegun, Handbook of Mathematical Functions), insieme ad altre sequenze "diaboliche".
ci vorrebbe un esperto di hardware per dirci che cosa c'è oggi nella pancia di un coprocessore aritmetico.
(*) Pachito, se le hai sottomano, pubblica le sequenze di coeff. per tutti i tre casi di approssimaz. citati nel tuo esempio.
tony
"smontando" le macro-istruzioni di "calcolo scientifico" in voga
quando ancora non erano state realizzate in harware (o firmware)
avevo trovato le stesse successioni di coefficienti faticosamente calcolate da Hastings "martellandole", limandole e lisciandole a mano (avvincente il suo racconto del procedimento) fino ad ottenerne,su tutto il campo definito, una uniforme distribuzione di errori non solo per la funzione, ma anche per alcune sue derivate.
un fatto curioso è che le sequenze variano a seconda della precisione diversa:
i primi 3 coeff. della successione di 4 termini (con precisione di 6 cifre) sono DIVERSI dai 3 della success. di 3 termini (con precis. 4 cifre)! (*)
quindi il lavoro è ben più accurato che non l'aggiunta di un termine di una serie; una fatica boia!
trovate uno spartano riassunto sull'Abramowitz (and Stegun, Handbook of Mathematical Functions), insieme ad altre sequenze "diaboliche".
ci vorrebbe un esperto di hardware per dirci che cosa c'è oggi nella pancia di un coprocessore aritmetico.
(*) Pachito, se le hai sottomano, pubblica le sequenze di coeff. per tutti i tre casi di approssimaz. citati nel tuo esempio.
tony
sinceramente non lo so, quello che ti posso dire è che noi, in informatica, per calcolare pi abbiamo usato il metodo di bisezione... l'approssimazione è relativamente veloce.. ma.. boh!!
Da "Approximation for digital computers" di Cecil Hasting.
sin
x/2
range -1<=x<=1
c1*x + c3*x^3 + c5*x^5
c1= 1.5706268
c3= -0.6432292
c5= 0.0727102
errore relativo < 1/10000
Aggiungendo 1 termine c7*x^7 errore relativo < 1/1000000
Aggiungendo 1 termine c9*x^9 errore relativo < 1/100000000
Di questi esempi se ne possono trovare parecchi anche di funzioni non analitiche come erf(x) 'error function' e funzioni integrali simili.
Modificato da - pachito il 18/04/2004 00:19:21
sin

range -1<=x<=1
c1*x + c3*x^3 + c5*x^5
c1= 1.5706268
c3= -0.6432292
c5= 0.0727102
errore relativo < 1/10000
Aggiungendo 1 termine c7*x^7 errore relativo < 1/1000000
Aggiungendo 1 termine c9*x^9 errore relativo < 1/100000000
Di questi esempi se ne possono trovare parecchi anche di funzioni non analitiche come erf(x) 'error function' e funzioni integrali simili.
Modificato da - pachito il 18/04/2004 00:19:21
No, non usa polinomi di Taylor, troppo lenti nel convergere e con precisione che dipende troppo dal valore di cui si chiede la funzione trigonometrica .
Domani vedo se trovo qualche indicazione su cosa usano.
ciao
Domani vedo se trovo qualche indicazione su cosa usano.
ciao