Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Approssimare 1/x con funzione esponenziale

Analisi, geometria, algebra, topologia...

Moderatori: Foto UtentePietroBaima, Foto UtenteIanero

0
voti

[21] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtentePietroBaima » 27 nov 2021, 21:25

Se però illustri come hai fatto rendi questo thread utile anche ad altri in futuro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
86,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 11677
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[22] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto Utentedadduni » 27 nov 2021, 22:35

No, scusami tu non mi sono spiegato per nulla bene.
Mi interesserebbe qualcosa su approssimazioni di funzioni mirata allefficienza del calcolo numerico
Avatar utente
Foto Utentedadduni
1.813 2 7 12
Expert EY
Expert EY
 
Messaggi: 1255
Iscritto il: 23 mag 2014, 16:26

0
voti

[23] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtenteGioArca67 » 27 nov 2021, 22:42

Posto che ormai ha poco senso fare cose del genere, un modo veloce e approssimato per il calcolo di 1/x può sfruttare Newton Raphson e il modo di rappresentare un numero floating point ricordando che log x^y = y log x. Si approssima il logaritmo e si fa un giro con Newton Raphson più o meno così:

Codice: Seleziona tutto
float inv_fast(float x) {
    union { float f; int i; } v;  //in C è permesso type punning
    float w, sx;  // w serve solo per gli ordini superiori

    sx = (x < 0) ? -1:1;
    x = sx * x;

    v.i = (int)(0x7EF4Fb9d - *(uint32_t *)&x);  // serve stdint.h
    w = x * v.f;  // se iterazione singola di N-R può essere messo  alla successiva

     v.f = v.f * (2 - w);     // Una iterazione di N-R, Err = -3.36e-3 * 2^(-floor(log2(x)))
    // v.f = v.f * ( 4 + w * (-6 + w * (4 - w)));  // Seconda iterazione, Err = -1.13e-5 * 2^(-floor(log2(x)))
    // v.f = v.f * (8 + w * (-28 + w * (56 + w * (-70 + w *(56 + w * (-28 + w * (8 - w)))))));  // Terza Iterazione, Err = +-6.8e-8 *  2^(-floor(log2(x)))

    return v.f * sx;
}



costa 2 moltiplicazioni e 1 somma
Avatar utente
Foto UtenteGioArca67
2.542 4 4 9
Master
Master
 
Messaggi: 2415
Iscritto il: 12 mar 2021, 9:36

1
voti

[24] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto Utentecoto » 27 nov 2021, 23:12

PietroBaima ha scritto:Se però illustri come hai fatto rendi questo thread utile anche ad altri in futuro.

Credevo di dover risolvere un problema che non esiste.
Pensavo di dover estrarre il valore medio da un segnale rettangolare per poter misurare modulo e fase.
Invece il simulatore è in grado di farlo da solo per qualsiasi tipo di segnale.
L'unica trasformazione necessaria è convertite lo stimolo sinusoidale in un jitter se si vuole misurare il guadagno ad anello in un punto in cui io segnale è rettangolare.
Come ben spiegato qui https://ieeexplore.ieee.org/document/4766277
Avatar utente
Foto Utentecoto
15 3
 
Messaggi: 17
Iscritto il: 9 giu 2020, 12:45

3
voti

[25] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto Utentexyz » 27 nov 2021, 23:29

Francamente mi sembrava strano che il calcolo di un inverso impiegava meno temo di un esponenziale. Per l'esponenziale di solito si usa per il calcolarlo l'algoritmo CORDIC.

Comunque per i posteri utilizzando le regressioni non lineari e partendo dal più semplice modello che rispetti i vincoli:

y = a + b\,e^ {- c\,x }

Per trovare i coefficienti a, b e c che approssima meglio y = 1/x ho utilizzato il programma R, questo è lo script di calcolo con un range a caso per altri range basta cambiare i valori:

Codice: Seleziona tutto
x <- seq(0.5, 5, 0.1)
y <- 1 / x

plot(x, y, type="o", col="blue", xlab="x", ylab="1/x")
model<-nls(y ~ a + b * exp(-c*x), start=list(a=1, b=1, c=1))

print(summary(model))

lines(x, predict(model), col="red", lty=2, lwd=3)


il valore dei coefficienti trovati:

Codice: Seleziona tutto
Formula: y ~ a + b * exp(-c * x)

Parameters:
  Estimate Std. Error t value Pr(>|t|)   
a  0.25210    0.01027   24.55   <2e-16 ***
b  3.18816    0.11192   28.48   <2e-16 ***
c  1.36780    0.04804   28.47   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.04295 on 43 degrees of freedom

Number of iterations to convergence: 8
Achieved convergence tolerance: 6.92e-06


Il grafico, in blu 1/x e in rosso tratteggiato il modello con l'esponenziale:

plot.png
plot
Avatar utente
Foto Utentexyz
6.819 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1758
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

1
voti

[26] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtentePietroBaima » 28 nov 2021, 1:41

dadduni ha scritto:No, scusami tu non mi sono spiegato per nulla bene.
Mi interesserebbe qualcosa su approssimazioni di funzioni mirata allefficienza del calcolo numerico

Figurati.

Uno straclassico è il Rivlin, datato ma ancora godibile. Arriva fino all’approssimazione con funzioni razionali.
Theodore J. Rivlin, An Introduction to the approximation of functions, Dover pubs

Ben più spesso è il Timan, datato ma ancora pesante come quando lo si studia per la prima volta.
A.F. Timan, Theory of approximation of functions of a real variable, macmillan

Poi se vuoi farti male, ma tanto male ci sono tutti i libri di Boris Obsieger (ATTENZIONE: contiene matematica russa) cioè i vari numerical methods I-II-III-IV… (n+1).
Buono studio!
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
86,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 11677
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[27] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtenteMax2433BO » 28 nov 2021, 9:49

Mi scuso con tutti se disturbo inserendomi con un piccolo OT da ignorantissimo della materia ma spinto da pura curiosità:

@ Foto UtentePietroBaima

PietroBaima ha scritto:(...) ATTENZIONE: contiene matematica russa (...)


perché metti questo avviso?

C'è differenza tra la matematica russa rispetto a quella del resto del mondo?

La matematica non è un linguaggio universale?

O_/ Max
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
16,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 4065
Iscritto il: 25 set 2013, 16:29
Località: Universo - Via Lattea - Sistema Solare - Terzo pianeta...

2
voti

[28] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtentePietroBaima » 28 nov 2021, 12:18

E’ una segnalazione semiseria.
I libri di matematica russi (specialmente quelli della editrice MIR) sono particolarmente completi, ma particolarmente ostici.
I matematici russi hanno sempre brillato per la loro competenza e serietà.
Quando cadde la cortina di ferro e finalmente i matematici esteri poterono confrontarsi con i matematici russi scoprirono che molti risultati da loro trovati erano stati trovati in modo indipendente dai matematici russi, con alcuni casi in cui… i matematici russi avevano fatto di più !!

Si vede proprio che l’inverno russo è lungo e duro da superare.
(Sì, le donne le avevano, ma erano troppo impegnate a calcolare tabelle di integrali)

Mi ricordo che c’erano diverse bancarelle che svendevano i libri ingialliti della editrice MIR di analisi, calcolo superiore e di matematica in genere e io li compravo perché li trovavo belli e completi.
Erano scritti in russo, che io non conosco, ma le parole erano così poche che si poteva tranquillamente seguire il filo del discorso dalle formule.
Avevo imparato a riconoscere qualche carattere in cirillico, utilizzato per indicare i se e i solo se, ma non mi ricordo più tanto bene.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
86,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 11677
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[29] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtenteGioArca67 » 28 nov 2021, 13:15

Concordo!
Direi quasi cervellotici. Ma ineccepibili.
Avatar utente
Foto UtenteGioArca67
2.542 4 4 9
Master
Master
 
Messaggi: 2415
Iscritto il: 12 mar 2021, 9:36

0
voti

[30] Re: Approssimare 1/x con funzione esponenziale

Messaggioda Foto UtenteMax2433BO » 29 nov 2021, 8:32

Ti ringrazio Foto UtentePietroBaima :ok:

PietroBaima ha scritto:(...) Sì, le donne le avevano, ma erano troppo impegnate a calcolare tabelle di integrali (...)


(:OOO:)

PietrBaima ha scritto:(...) Mi ricordo che c’erano diverse bancarelle che svendevano i libri ingialliti della editrice MIR di analisi, calcolo superiore e di matematica in genere e io li compravo perché li trovavo belli e completi (...)


Per caso tra questi c'è qualcuno dei testi che citi?

O_/ Max
Disapprovo quello che dite, ma difenderò fino alla morte il vostro diritto di dirlo [attribuita a Voltaire]

Sapere sia di sapere una cosa, sia di non saperla: questa è conoscenza. [Confucio, "I colloqui"]
Avatar utente
Foto UtenteMax2433BO
16,0k 4 10 13
G.Master EY
G.Master EY
 
Messaggi: 4065
Iscritto il: 25 set 2013, 16:29
Località: Universo - Via Lattea - Sistema Solare - Terzo pianeta...

PrecedenteProssimo

Torna a Matematica generale

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti