Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-10-2002, 01:31   #1
KRYHAWOK
Senior Member
 
L'Avatar di KRYHAWOK
 
Iscritto dal: Sep 2001
Città: COMO, sul maestoso LARIO
Messaggi: 248
Funzione ERF in C++

Ciao gente.

Qualcuno mi sa dire dove posso recuperare una libreria C++ che contenga la funzione ERF, ossia l'integrale della gaussiana?

Grazie!
__________________
Athlon FX-53 / MSI K8N Neo2 Platinum / Corsair TwinX 1024 XL / 2 x WesternDigital Raptor 74GB - RAID 0 / Gainward PowerPack! 2200 GeF. 6800 256MB / Pioneer DVR-108 / LiteOn LTR-52327S / Enermax 550W / HP P1100 21" CRT
KRYHAWOK è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2002, 02:41   #2
KRYHAWOK
Senior Member
 
L'Avatar di KRYHAWOK
 
Iscritto dal: Sep 2001
Città: COMO, sul maestoso LARIO
Messaggi: 248
Dopo un po' di mosse penso di esserci arrivato:
il problema sta nel fatto che la funzione gaussiana non ha primitiva, quindi il calcolo dell'area sottesa è solo numerico: erf(x) non ha espressione analitica.

La gaussiana standardizzata è un'esponenziale, quindi trasformabile in una serie uniformemente convergente su tutto R. Ho poi integrato per serie per approssimare la funzione a mio piacimento. Per avere una precisione fino a 10^(-4) è necessario sommare non meno di 15 termini della serie ottenuta, ma devo ammettere che non è poi tanto male.

Ecco quindi l'espressione approssimata dell'area sottesa dalla gaussiana standardizzata in funzione di x (con f[0]=0). A partire da questa basta un bel ciclo FOR e il calcolo è fatto.
A chi può servire:



Se qualcuno ha un'idea migliore mi faccia sapere!
__________________
Athlon FX-53 / MSI K8N Neo2 Platinum / Corsair TwinX 1024 XL / 2 x WesternDigital Raptor 74GB - RAID 0 / Gainward PowerPack! 2200 GeF. 6800 256MB / Pioneer DVR-108 / LiteOn LTR-52327S / Enermax 550W / HP P1100 21" CRT
KRYHAWOK è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2002, 14:43   #3
KRYHAWOK
Senior Member
 
L'Avatar di KRYHAWOK
 
Iscritto dal: Sep 2001
Città: COMO, sul maestoso LARIO
Messaggi: 248
E' sorto un altro problema; pensavo che una volta trovata una formula analitica per il calcolo il gioco fosse finito.

Ho provato a tradurre in C++ la funzione che ho riportato sopra nel modo più ovvio, ossia:

*****************************************
long double normale(float x) {
long double sum=0;
for(i=0; i<=15; i++)
sum=sum+(pow(2,-i)*pow(x,2*i+1)*pow(-1,i))/((2*i+1)*fatt(i));
return sum/sqrt(1/(2*3.1415926)); }
*****************************************

..che traduce la formula. Ma i valori ottenuti non sono soddisfacenti: la stessa equazione, in Derive, dà un risultato mooolto migliore.

Ho provato allora ad eliminare il ciclo FOR, espcitando la sommatoria e scrivendo esplicitamente i coefficienti. In questo modo i valori sono nettamente più simili a quelli di Derive, ma non oltre x=0.7. Considerando che la normale è praticamente costante dopo x=3.7.... non ci siamo ancora.

Come posso tradurre in C++ la formula dell'immagine in modo decente?????

Grazie dell'aiuto!
__________________
Athlon FX-53 / MSI K8N Neo2 Platinum / Corsair TwinX 1024 XL / 2 x WesternDigital Raptor 74GB - RAID 0 / Gainward PowerPack! 2200 GeF. 6800 256MB / Pioneer DVR-108 / LiteOn LTR-52327S / Enermax 550W / HP P1100 21" CRT
KRYHAWOK è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2002, 17:24   #4
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Se non ricordo male ci sono degli algoritmi appositi per l'integrazione numerica, per renderla sia piu' veloce che piu' precisa.
Ora non chiedermi quali , pero' se ripesco il libro di calcolo numerico magari posso esserti d'aiuto.

Hai provato a compilare senza le ottimizzazioni sui floating point ?
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2002, 17:48   #5
KRYHAWOK
Senior Member
 
L'Avatar di KRYHAWOK
 
Iscritto dal: Sep 2001
Città: COMO, sul maestoso LARIO
Messaggi: 248
Cosa intendi "senza le ottimizzazioni sui floating point"? Scusa ma sto perdendo lucidità....
__________________
Athlon FX-53 / MSI K8N Neo2 Platinum / Corsair TwinX 1024 XL / 2 x WesternDigital Raptor 74GB - RAID 0 / Gainward PowerPack! 2200 GeF. 6800 256MB / Pioneer DVR-108 / LiteOn LTR-52327S / Enermax 550W / HP P1100 21" CRT
KRYHAWOK è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2002, 18:08   #6
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Intendevo dire che tra le ottimizzazioni del compilatore, spesso ce ne sono alcune che aumentano la velocita' sacrificando un po' la precisione sui floating point. Potresti vedere se nel tuo caso sono stato attivate ed eventualmente toglierle
( che compilatore usi ? )
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2002, 18:46   #7
KRYHAWOK
Senior Member
 
L'Avatar di KRYHAWOK
 
Iscritto dal: Sep 2001
Città: COMO, sul maestoso LARIO
Messaggi: 248
All'inizio pensavo che fosse colpa di approssimazioni del compilatore... poi mi son messo a spezzare la formula, monitorando man mano come cambiava il valore ottenuto dal ciclo FOR. I termini che si aggiungono alla serie dovrebbero essere più piccoli man mano che si procede, se voglio che la serie converga.... ma invece ho visto che fluttuavano abbastanza casualmente....

In sostanza, l'errore non era dovuto nè al compilatore, nè all'algoritmo, ma semplicemente alla funzione fatt(x) che avevo importato da una vecchia libreria che avevo fatto..... in quella libreria avevo impostato la funzione fattoriale così:

int fatt(int x) { ............}

Ovviamente andava bene finchè i fattoriali da calcolare erano piccoli... ma nell'algoritmo compare anche 15!
bastava modificare la funzione in modo che restituisse valori non interi<65535 (già 9!>65535............)

Se dio vuole adesso la funzione restituisce i valori corretti.... basta stare attenti a ricordarsi che da x=3.9 circa in poi la funzione è identicamente = 0.5, mente l'algoritmo di sopra non è in grado di reggere oltre un certo intervallo perchè la successione non converge più a ERF(x).

Ecco il grafico della serie calcolata fino al quindicesimo termine in rosso, che si sovrappone perfettamente al grafico della ERF(x) vera e propria (in nero, visibile agli estremi).



Cmq grazie dell'aiuto!
__________________
Athlon FX-53 / MSI K8N Neo2 Platinum / Corsair TwinX 1024 XL / 2 x WesternDigital Raptor 74GB - RAID 0 / Gainward PowerPack! 2200 GeF. 6800 256MB / Pioneer DVR-108 / LiteOn LTR-52327S / Enermax 550W / HP P1100 21" CRT
KRYHAWOK è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
XBOX: la nuova CEO non ha ancora le idee...
Intel non ha intenzione di abbandonare i...
La AI Mode sarà attiva di default...
Marvel's Wolverine non sarà un op...
Star Wars Zero Company esce ad agosto: n...
Bonus Decoder: fino al 70% di sconto con...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
'Non avrete aumenti': la decisione shock...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v