Domanda matematica che emerge dall'uso della trasformata bilineare


10

Quindi questo è legato al ricettario e ho provato a risolverlo forse due decenni fa, ho rinunciato e mi è stato ricordato il problema irrisolto. Ma è piuttosto dannatamente semplice, ma mi sono ancora ammaccato nel fango.

Questo è un semplice filtro passa-banda (BPF) con frequenza di risonanza e risonanza :Ω0Q

H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1

Alla frequenza di risonanza

|H(jΩ)|H(jΩ0)=1

e le fasce superiore e inferiore sono definite in modo tale

|H(jΩU)|2=|H(jΩ02BW/2)|2=12

|H(jΩL)|2=|H(jΩ02BW/2)|2=12

Le chiamiamo "fasciature a mezza potenza" . Poiché siamo audio, definiamo la larghezza di banda in ottave e nel mondo analogico questa larghezza di banda in ottave, , è correlata a come:BWQ

1Q=2BW12BW=2sinh(ln(2)2BW)

Stiamo usando la trasformazione bilineare (con frequenza di risonanza preformata) che mappa:

sΩ01tan(ω0/2)1z11+z1jΩΩ0jtan(ω/2)tan(ω0/2)

lasciando e .z=ejωs=jΩ

La frequenza angolare risonante del filtro analogico è e con la compensazione del warping di frequenza eseguita alla frequenza di risonanza nel filtro digitale realizzato, quando (la frequenza di risonanza definita dall'utente), quindi . ω = ω 0 Ω = Ω 0Ω0ω=ω0Ω=Ω0

Quindi, se la frequenza angolare analogica è

ΩΩ0=tan(ω/2)tan(ω0/2)

quindi viene mappato sulla frequenza angolare digitale come

ω=2arctan(ΩΩ0tan(ω0/2))

Ora, le fasce superiori e inferiori nel mondo analogico lo sono

Ω L = Ω 0 2 - B W / 2

ΩU=Ω02BW/2
ΩL=Ω02BW/2

e nel dominio della frequenza digitale lo sono

ωU=2arctan(ΩUΩ0tan(ω0/2))=2arctan(2BW/2tan(ω0/2))

ωL=2arctan(ΩLΩ0tan(ω0/2))=2arctan(2BW/2tan(ω0/2))

Quindi la differenza effettiva, nella frequenza di registro dei bandeges (che è la larghezza di banda effettiva nel filtro digitale) è:

bw=log2(ωU)log2(ωL)=log2(2arctan(2BW/2tan(ω0/2)))log2(2arctan(2BW/2tan(ω0/2))) 

o

ln(2)bw=ln(arctan(eln(2)BW/2tan(ω0/2)))ln(arctan(eln(2)BW/2tan(ω0/2)))

Questo ha una forma funzionale di

f(x)=ln(arctan(αex))ln(arctan(αex))

dove , ex ln ( 2 )f(x)ln(2)bwαxln(2)2BWαtan(ω0/2)

Quello che voglio fare è invertire (ma so che non posso farlo esattamente con un bel modulo chiuso). Ho già fatto un'approssimazione del primo ordine e voglio aumentarla fino a un'approssimazione del terzo ordine. E questo è diventato una specie di cane femmina copulare, anche se dovrebbe essere diretto.f(x)

Ora questo ha a che fare con la formula di inversione di Lagrange e voglio solo portarlo a un termine in più di quello che ho.

Sappiamo dall'alto che è una funzione di simmetria dispari:f(x)

f(x)=f(x)

Ciò significa che e tutti i termini di ordine pari della serie Maclaurin saranno zero:f(0)=0

y=f(x)=a1x+a3x3+...

La funzione inversa è anche una simmetria dispari, passa attraverso lo zero e può essere espressa come una serie di Maclaurin

x=g(y)=b1y+b3y3+...

e se sappiamo cosa sono e di , allora abbiamo una buona idea di cosa devono essere e :a 3 f ( x )a1a3f(x)b 3b1b3

b1=1a1b3=a3a14

Ora sono in grado di calcolare la derivata di e valutarla a zero e ottengof(x)

a1=2α(1+α2)arctan(α)=sin(ω0)ω0/2
b1=(1+α2)arctan(α)2α=ω0/2sin(ω0)

Ma sto facendo una cagna per ottenere e quindi . Qualcuno può farlo? Mi accontenterei persino di un'espressione solida per la terza derivata di valutata in .b 3 f ( x ) x = 0a3b3f(x)x=0


2
Giusto per chiarire: il tuo obiettivo è invertire , cioè per una data , vuoi trovare la ? In particolare, lo vuoi fare per espansione polinomiale e stai cercando il 3o coefficiente (dato che il 2o è zero, fai alla stranezza della funzione). Giusto? f(x)x
f(x)=ln(arctan(αex))ln(arctan(αex))
f(x)x
Maximilian Matthé,

2
Quindi vuoi sapere dato , cioè vuoi sapere quale larghezza di banda del filtro analogico devi scegliere per ottenere la larghezza di banda desiderata del filtro digitale, giusto? b wBWbw
Matt L.

2
si, si e si.
robert bristow-johnson,

1
@ robertbristow-johnson Non ho letto la domanda troppo attentamente, ma ho notato che sei interessato a at . Va bene usare Mathematica o Wolfram Alpha per calcolarlo? Ottengo un risultato abbastanza pulito: . wolframalpha.com/input/… E se si rimuove la parte "valuta a x = 0", Wolfram sputa il canino femmina accoppiante nella sua piena gloria. x = 0 4 ( 8 - π 2 ) α 3f(x)x=04(8π2)α3π3
Atul Ingle,

1
Errore di battitura nella mia lì. Il risultato "pulito" è in realtà: wolframalpha.com/input/…- ( 6 a 2 ) / ( ( a 2 + 1 ) 2 a t a n ( a ) 2 ) + ( 2 a ) / ( ( a 2 + 1 ) a t a n ( a ) ) + ( 16 a 5 ) / ( ( a 2 +f(x)(6a2)/((a2+1)2atan(a)2)+(2a)/((a2+1)atan(a))+(16a5)/((a2+1)3atan(a))+(12a4)/((a2+1)3atan(a)2)(16a3)/((a2+1)2atan(a))+(4a3)/((a2+1)3atan(1)(a)3)
Atul Ingle,

Risposte:


4

Per completare la mia parte con questa domanda: Ecco una risposta in qualche modo abbreviata basata su un'espansione manuale della funzione dispari in una serie fino al terzo ordine. Alcuni ulteriori dettagli sono disponibili su mathSE .f(x)

f(x)=ln(arctan(αex))ln(arctan(αex))(1)=f1x+f3x3+O(x5)

Inizialmente ci concentriamo sul termine di sinistra di e cominciamo con f ( x )

ln(arctan(αex))
f(x)

Espansione in serie di :arctan

Otteniamo

arctan(αex)=n=0(1)n2n+1α2n+1e(2n+1)x=(2)=j=01j!n=0(1)n(2n+1)j1α2n+1xj

Ora deriviamo da (2) i coefficienti fino a . Usando l' operatore coefficiente per indicare il coefficiente di in una serie che otteniamo [ x k ] x k [ x 0 ] arctan ( α e x )x3[xk]xk

[x0]arctan(αex)=n=0(1)n2n+1α2n+1=arctanα[x1]arctan(αex)=n=0(1)nα2n+1=α1+α2[x2]arctan(αex)=12n=0(1)n(2n+1)α2n+1==α2ddα(α1+α2)=α(1α2)2(1+α2)2[x3]arctan(αex)=16n=0(1)n(2n+1)2α2n+1=α26n=0(1)n(2n+1)(2n)α2n1+α6n=0(1)n(2n+1)α2n==(α26d2dα2+α6ddα)(α1+α2)==α56α3+α6(1+α2)3

Concludiamo

arctan(αex)=arctan(α)+α1+α2x+α(1α2)2(1+α2)2x2(3)+α56α3+α6(1+α2)3x3+O(x4)

Poteri nelle serie logaritmiche:

Per derivare i coefficienti delle serie logaritmiche scriviamo l'espressione (3) come e consideriamo arctan(αex)

ln(arctan(αex))=n=1(1)n+1n(arctan(αex)1)n
ln ( arctan ( α e x
arctan(αex)=a0+a1x+a2x2+a3x3+O(x4)
(4)ln(arctan(αex))=n=1(1)n+1n((a01)+a1x+a2x2+a3x3)n+O(x4)

Ora impostiamo ed estraiamo i coefficienti di a da x 0 x 3 ( A ( xA(x)=(a01)+a1x+a2x2+a3x3x0x3

(A(x))n=((a01)+a1x+a2x2+a3x3)n=j=0n(nj)(a01)j(a1x+a2x2+a3x3)nj(5)=j=0n(nj)(a01)jk=0nj(njk)a1kxk(a2x2+a3x3)njk

Otteniamo da (5)

[x0](A(x))n==(a01)n[x1](A(x))n==a1n(a01)n1[x2](A(x))n==a2n(a01)n1+12n(n1)a12(a01)n2[x3](A(x))n==na3(a01)n1+a1a2n(n1)(a01)n2(6)+16n(n1)(n2)a13(a01)n3

Espansione in serie del logaritmo:

Calcoliamo usando (6) i coefficienti di in termini dia j , 0 j 3ln(arctan(αex))aj,0j3

[x0]ln(arctan(αex))=n=1(1)n+1n[x0]A(x)=n=1(1)n+1n[x0](a01)n=ln(a01)[x1]ln(arctan(αex))=n=1(1)n+1n[x1]A(x)=n=1(1)n+1n[x0]a1n(a01)n1=a1n=0(1)n(a01)n=a1a0[x2]ln(arctan(αex))=n=1(1)n+1n[x2]A(x)=n=1(1)n+1n(a2n(a01)n1+12n(n1)a12(a01)n2)==(a2+a122dda0)(1a0)=a2a0a122a02[x3]ln(arctan(αex))=n=1(1)n+1n[x3]A(x)=n=1(1)n+1n(na3(a01)n1+a1a2n(n1)(a01)n2+16n(n1)(n2)a13(a01)n3)==(a3+a1a2dda0+a136d2da02)(1a0)(7)=a3a0a1a2a02+a133a03

Espansione in serie di :f(x)

Adesso è tempo di raccogliere. Finalmente otteniamo con (3) e (7) rispettando che è disparif(x)

f(x)=ln(arctan(αex))ln(arctan(αex))==2a1a0x+2(a3a0a1a2a02+a133a03)x3+O(x5)=2α(1+α2)arctan(α)x+α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)x3+O(x5)

Markus, mentre hai ragione su , poiché sappiamo che ha una simmetria dispari e che i termini di ordine pari sono zero, penso che tu possa dire che questa espansione è buona per . f ( x ) O ( x 5 )O(x4)f(x)O(x5)
robert bristow-johnson,

@ robertbristow-johnson: Sì, certo. Aggiornato di conseguenza. :-)
Markus Scheuer,

Grande sforzo! Cercando di leggere questa risposta dettagliata e lunga non riuscivo a vedere come si potesse isolare , nell'equazione (4), al di fuori del logaritmo? La serie infinita include già ogni potenza di , quindi cosa significa lì il termine isolato ? x O ( x 4 )O(x4)xO(x4)
Fat32,

Ovviamente ho avuto la sensazione di quello che vuoi dire lì, ma poi la notazione corretta potrebbe essere qualcosa del genere: dove ho usato per stare lontano da tutte le altre tue notazioni. E nota che ho usato e per distinguere tra quei due set di coefficienti. Quindi ora la tua equazione (4) e questa riga sopra non sono esattamente le stesse. Non credo, tuttavia, influenzerà nessuno dei tuoi ulteriori progressi. T O 1 O 2
ln(arctan(αex)) = n=1(1)n+1n((a01)+a1x+a2x2+a3x3+O1(x4))n = T0+T1x+T2x2+T3x3+O2(x4)
TO1O2
Fat32,

@ Fat32: potresti voler guardare la notazione big-O
Markus Scheuer,

3

(Conversione del commento in risposta.)

Usando Wolfram Alpha, at restituisce: x = 0f(x)x=0

f(0)=6α2(α2+1)2(arctan(α))2 + 2α(α2+1)arctan(α)+16α5(α2+1)3arctan(α) + 12α4(α2+1)3(arctan(α))216α3(α2+1)2arctan(α) + 4α3(α2+1)3(arctan(α))3=2(α46α2+1)α(α2+1)3arctan(α)+6(α21)α2(α2+1)3(arctan(α))2+4α3(α2+1)3(arctan(α))3

http://www.wolframalpha.com/input/?i=evaluate+d3%2Fdx3++(+ln+(arctan+(a+exp(+x)))+-+ln+(arctan(a+exp(-+x) )) +) + a + x% 3D0

Possiamo anche ricontrollare se questo corrisponde alla risposta di Markus qui .

Il suo coefficiente di risulta esserex3

α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2).

Se lo moltiplichiamo per 6 e riordiniamo alcuni fattori, otteniamo:

2α(α46α2+1)(1+α2)3arctan(α)6α2(1α2)(1+α2)3(arctan(α))2+4α3(1+α2)3(arctan(α))3

che corrisponde!


Atul, sembra che la tua risposta semplificata non sia coerente con la risposta di Markus alla SE matematica. dovrebbe essere il caso che non credo che ogni termine nella tua f '' '(0) sia coerente con Markus. potrebbe essere che Markus abbia torto.
f(x)|x0 = 3!a3=6a3
robert bristow-johnson,

2
@ robertbristow-johnson Penso che corrispondano.
Atul Ingle,

lo fanno ora. penso che Markus abbia avuto un errore. ha fatto la sua risposta alla vecchia maniera.
robert bristow-johnson,

Atul, otterrai la tua generosità. ma ho esplorato le regole sulla generosità e non mi lasciano dividere, ma mi permettono di premiarlo due volte, ma una alla volta. quindi dal momento che Markus ha meno rappresentante di te qui su dsp.se e dal momento che ha dato una risposta senza l'aiuto di un computer, premio per primo la sua generosità. poi inserirò un'altra taglia su questa domanda e poi te la assegnerò. dice che devo aspettare 23 ore. non so chi otterrà ancora il mio "segno di spunta".
robert bristow-johnson,

1
@ robertbristow-johnson scusate la risposta tardiva. I coefficienti sono rispettivamente per . wolframalpha.com/input/…ω 2 0 , ω 4 02/3,2/15,16/945,2/945ω02,ω04,ω06,ω08
Atul Ingle,

3

Il problema posto nella domanda sembra non avere una soluzione a forma chiusa. Come menzionato nella domanda e mostrato in altre risposte, il risultato può essere sviluppato in una serie, che può essere realizzata da qualsiasi strumento matematico simbolico come Mathematica. Tuttavia, i termini diventano piuttosto complicati e brutti, e non è chiaro quanto sia buona l'approssimazione quando includiamo termini fino al terzo ordine. Poiché non è possibile ottenere una formula esatta, potrebbe essere meglio calcolare la soluzione numericamente, il che, diversamente dall'approssimazione, darà un risultato (quasi) esatto.

Tuttavia, non è questa la risposta. Suggerisco un percorso diverso che dia una soluzione esatta cambiando la formulazione del problema. Dopo averci pensato per un po 'si scopre che è la specifica della frequenza centrale e la specifica della larghezza di banda come rapporto (o, equivalentemente, in ottave) che causa l'intrattabilità matematica. Esistono due modi per uscire dal dilemma:ω0

  1. specifica la larghezza di banda del filtro a tempo discreto come una differenza di frequenze , dove e sono rispettivamente i bordi inferiore e superiore del filtro a tempo discreto.ω 1 ω 2Δω=ω2ω1ω1ω2
  2. prescrivere il rapporto e invece di prescrivere una delle due frequenze di bordo o .ω 0 ω 1 ω 2ω2/ω1ω0ω1ω2

In entrambi i casi è possibile una semplice soluzione analitica. Poiché è desiderabile prescrivere la larghezza di banda del filtro a tempo discreto come un rapporto (o, equivalentemente, in ottave), descriverò il secondo approccio.

Definiamo le frequenze limite e del filtro a tempo continuo perΩ 2Ω1Ω2

(1)|H(jΩ1)|2=|H(jΩ2)|2=12

con , dove è la funzione di trasferimento di un filtro passa banda di secondo ordine: H ( s )Ω2>Ω1H(s)

(2)H(s)=ΔΩss2+ΔΩs+Ω02

con e . Nota che e per .Ω 2 0ΔΩ=Ω2Ω1 H ( j Ω 0 ) = 1 | H ( j Ω ) | < 1Ω02=Ω1Ω2H(jΩ0)=1|H(jΩ)|<1ΩΩ0

Usiamo la trasformazione bilineare per mappare le frequenze di bordo e del filtro a tempo discreto sulle frequenze di bordo e del filtro a tempo continuo. Senza perdita di generalità possiamo scegliere . Ai nostri scopi la trasformazione bilineare assume quindi la formaω 2 Ω 1 Ω 2ω1ω2Ω1Ω2Ω1=1

(3)s=1tan(ω12)z1z+1

corrispondente alla seguente relazione tra frequenze a tempo continuo e frequenze a tempo discreto:

(4)Ω=tan(ω2)tan(ω12)

Da otteniamo impostando . Con e calcolati da , otteniamo la funzione di trasferimento del filtro prototipo analogico da . Applicando la trasformata bilineare , otteniamo la funzione di trasferimento del filtro passa banda a tempo discreto:Ω 2 ω =(4)Ω2Ω 1 = 1 Ω 2 ( 4 ) ( 2 )ω=ω2Ω1=1Ω2(4)(2)(3)

(5)Hd(z)=gz21z2+az+b

con

(6)g=ΔΩc1+ΔΩc+Ω02c2a=2(Ω02c21)1+ΔΩc+Ω02c2b=1ΔΩc+Ω02c21+ΔΩc+Ω02c2c=tan(ω12)

Sommario:

La larghezza di banda del filtro a tempo discreto può essere specificata in ottave (o, generalmente, come un rapporto), e i parametri del filtro prototipo analogico possono essere calcolati esattamente, in modo tale da ottenere la larghezza di banda specificata. Invece della frequenza centrale , specifichiamo i bordi della banda e . La frequenza centrale definita da è un risultato del progetto.ω 1ω0ω1| H d ( e j ω 0 ) | = 1ω2|Hd(ejω0)|=1

I passaggi necessari sono i seguenti:

  1. Specifica il rapporto desiderato tra i bordi di banda e uno dei bordi di banda (che ovviamente equivale a specificare semplicemente e ).ω 1 ω 2ω2/ω1ω1ω2
  2. Scegli e determina da . Calcola e del filtro prototipo analogico .Ω 2 ( 4 ) Δ Ω = Ω 2 - Ω 1 Ω 2 0 = Ω 1 Ω 2Ω1=1Ω2(4)ΔΩ=Ω2Ω1Ω02=Ω1Ω2(2)
  3. Valutare le costanti per ottenere la funzione di trasferimento a tempo discreto .(6)(5)

Si noti che con l'approccio più comune dove e sono specificati, la banda effettiva bordi e sono il risultato del processo di progettazione. Nella soluzione proposta, è possibile specificare i bordi della banda e è il risultato del processo di progettazione. Il vantaggio di quest'ultimo approccio è che la larghezza di banda può essere specificata in ottave e la soluzione è esatta, ovvero il filtro risultante ha esattamente la larghezza di banda specificata in ottave. Δ ω = ω 2 - ω 1 ω 1 ω 2 ωω0Δω=ω2ω1ω1ω2ω0

Esempio:

Specifichiamo una larghezza di banda di un'ottava e scegliamo il bordo inferiore come . Questo dà un bordo superiore . I bordi della banda del filtro prototipo analogico sono e da (con ) . Questo dà e . Con otteniamo la funzione di trasferimento a tempo discretoω 2 = 2ω1=0.2πΩ 1 = 1 ( 4 ) ω = ω 2 Ω 2 = 2.2361 Δ Ω = Ω 2 - Ω 1 = 1.2361 Ω 2ω2=2ω1=0.4πΩ1=1(4)ω=ω2Ω2=2.2361ΔΩ=Ω2Ω1=1.2361(6)(5)Ω02=Ω1Ω2=2.2361(6)(5)

Hd(z)=0.24524z21z20.93294z+0.50953

che raggiunge esattamente una larghezza di banda di 1 ottava e i bordi della banda specificati, come mostrato nella figura seguente:

inserisci qui la descrizione dell'immagine

Soluzione numerica del problema originale:

Dai commenti capisco che è importante essere in grado di specificare esattamente la frequenza centrale per la quale è soddisfatto. Come accennato in precedenza, non è possibile ottenere una soluzione a forma chiusa esatta e uno sviluppo in serie produce espressioni piuttosto ingombranti.ω0|Hd(ejω0)|=1

Per motivi di chiarezza, vorrei riassumere le possibili opzioni con i loro vantaggi e svantaggi:

  1. specificare la larghezza di banda desiderata come differenza di frequenza e specificare ; in questo caso è possibile una semplice soluzione a forma chiusa.ω 0Δω=ω2ω1ω0
  2. specifica i bordi di banda e (o, equivalentemente, la larghezza di banda in ottave e uno dei bordi di banda); questo porta anche a una semplice soluzione a forma chiusa, come spiegato sopra, ma la frequenza centrale è un risultato del progetto e non può essere specificata.ω 2 ω 0ω1ω2ω0
  3. specifica la larghezza di banda desiderata in ottave e la frequenza centrale (come richiesto nella domanda); nessuna soluzione in forma chiusa è possibile, né esiste (per il momento) alcuna semplice approssimazione. Per questo motivo ritengo sia auspicabile disporre di un metodo semplice ed efficace per ottenere una soluzione numerica. Questo è ciò che è spiegato di seguito.ω0

Quando viene specificato usiamo una forma della trasformata bilineare con una costante di normalizzazione diversa da quella usata in e : ( 3 ) ( 4 )ω0(3)(4)

(7)Ω=tan(ω2)tan(ω02)

Definiamo . Indicare il rapporto specificato dei bordi della banda del filtro a tempo discreto comeΩ0=1

(8)r=ω2ω1

Con otteniamo da e( 7 ) (c=tan(ω0/2)(7)(8)

(9)r=arctan(cΩ2)arctan(cΩ1)

Con , può essere riscritto nel seguente formato:Ω1Ω2=Ω02=1(9)

(10)f(Ω1)=rarctan(cΩ1)arctan(cΩ1)=0

Per un dato valore di questa equazione può essere risolta per con alcune iterazioni di Newton. Per questo abbiamo bisogno della derivata di :rΩ1f(Ω1)

(11)f(Ω1)=c(r1+c2Ω12+1c2+Ω12)

Con , sappiamo che deve trovarsi nell'intervallo . Anche se è possibile trovare soluzioni iniziali più intelligenti, si scopre che la supposizione iniziale funziona bene per la maggior parte delle specifiche e si tradurrà in soluzioni molto accurate dopo solo iterazioni del metodo di Newton:Ω0=1Ω1(0,1)Ω1(0)=0.14

(12)Ω1(n+1)=Ω1(n)f(Ω1(n))f(Ω1(n))

Con ottenuto con alcune iterazioni di possiamo determinare e e e usiamo e per calcolare i coefficienti di il filtro a tempo discreto. Notare che la costante è ora data da . ( 12Ω1(12)Ω2=1/Ω1ΔΩ=Ω2Ω1(5)(6)cc=tan(ω0/2)

Esempio 1:

Specifichiamo e una larghezza di banda di ottave. Ciò corrisponde a un rapporto . Con un'ipotesi iniziale di , iterazioni del metodo di Newton hanno portato a una soluzione , da cui è possibile calcolare i coefficienti del tempo discreto come spiegato sopra. La figura seguente mostra il risultato:ω0=0.6π0.5r=ω2/ω1=20.5=2=1.4142Ω1=0.14Ω1=0.71

inserisci qui la descrizione dell'immagine

Il filtro è stato calcolato con questo script Matlab / Octave:

% specifiche
bw = 0,5; % larghezza di banda desiderata in ottave
w0 = .6 * pi; % frequenza di risonanza

r = 2 ^ (bw); Rapporto% dei bordi della fascia
W1 = .1; % ipotesi iniziale (funziona per la maggior parte delle specifiche)
Nit = 4; % # Iterazioni di Newton
c = abbronzatura (w0 / 2);

% Newton
per i = 1: Nit,
    f = r * atan (c * W1) - atan (c / W1);
    fp = c * (r / (1 + c ^ 2 * W1 ^ 2) + 1 / (c ^ 2 + W1 ^ 2));
    W1 = W1 - f / fp
fine

W1 = abs (W1);
if (W1> = 1), errore ("Impossibile convergere. Riduci il valore dell'ipotesi iniziale."); fine

W2 = 1 / W1;
dW = W2 - W1;

% filtro a tempo discreto
scala = 1 + dW * c + W1 * W2 * c ^ 2;
b = (dW * c / scale) * [1,0, -1];
a = [1, 2 * (W1 * W2 * c ^ 2-1) / scala, (1-dW * c + W1 * W2 * c ^ 2) / scala];

Esempio 2:

Aggiungo un altro esempio per mostrare che questo metodo può anche gestire specifiche per le quali la maggior parte delle approssimazioni darà risultati non sensati. Questo è spesso il caso in cui la larghezza di banda desiderata e la frequenza di risonanza sono entrambe elevate. Progettiamo un filtro con e ottave. Quattro iterazioni del metodo di Newton con un'ipotesi iniziale danno come risultato un valore finale di , cioè in una larghezza di banda del prototipo analogico di ottave. Il filtro a tempo discreto corrispondente ha i seguenti coefficienti e la sua risposta in frequenza è mostrata nel diagramma seguente:b p = 4 Ω ( 0 )ω0=0.95πbw=4Ω1(0)=0.1Ω1=0.00775log2(Ω2/Ω1)=log2(1/Ω12)14

b = 0.90986 * [1,0, -1];
a = [1.00000 0.17806 -0.81972];

inserisci qui la descrizione dell'immagine

I bordi della banda di metà potenza risultanti sono e , che sono effettivamente esattamente a ottave (cioè un fattore ).ω 2 = 0,999612 π 4 16ω1=0.062476πω2=0.999612π416


due commenti iniziali (non l'ho ancora letto, Matt): primo, sono interessato alla frequenza di log più che alla frequenza lineare. per la BPF analogica (o BPF digitale con frequenza di risonanza molto più bassa di Nyquist), esiste una perfetta simmetria sulla frequenza di risonanza.
robert bristow-johnson,

e il secondo commento è questo, mentre ti ringrazio per essere apparentemente fedele alla notazione di e , vorrei che ti attenessi alla notazione che le frequenze di risonanza analogica e digitale sono e , rispettivamente, e le bande analogiche superiore e inferiore sono rispettivamente e e allo stesso modo per le bande digitali: e . sappiamo che, con frequenza di registro, metà della larghezza di banda è superiore a e metà inferiore. ma, a causa della deformazione, ciò non è esattamente vero per il filtro BPF digitale. zs=jΩz=ejωΩ0ω0ΩUΩLωUωLΩ0
robert bristow-johnson

mentre leggo di più, è importante per me che la frequenza di risonanza venga mappata esattamente attraverso la trasformazione bilineare. quindi capisco questo approccio, Matt, ma voglio attenermi alla mappatura esatta di e quindi modificare il fino a quando è quello che è specificato. ω0BWbw
robert bristow-johnson,

@ robertbristow-johnson: OK, abbastanza giusto, vuoi una specifica esatta di . Questo è possibile se specifichi come differenza lineare (che non vuoi, ho capito). Una soluzione chiara non è possibile con specificato e una larghezza di banda in ottave. ω0Δωω0
Matt L.

1
@ robertbristow-johnson: ho aggiunto una soluzione numerica molto semplice alla mia risposta (4 iterazioni di Newton).
Matt L.

3

okay, ho promesso di aumentare la taglia e manterrò la mia promessa. ma devo confessare che potrei rinnegare un po 'il fatto di essere soddisfatto solo della terza derivata di . quello che voglio davvero sono i due coefficienti per .f(x)g(y)

quindi non mi rendevo conto che esistesse questo linguaggio Wolfram come alternativa alla matematica o Derive e non mi rendevo conto che potesse calcolare così facilmente la terza derivata e semplificare l'espressione.

e questo ragazzo di Markus al SE di matematica ha pubblicato questa risposta (che pensavo dovesse essere la quantità di grunge che pensavo fosse necessaria).

y=f(x)=ln(arctan(αex))ln(arctan(αex))a1x + a3x3=2α(1+α2)arctan(α)x+α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)x3

così ho messo insieme l'approssimazione del terzo ordine all'inverso:

x=g(y)b1y + b3y3=1a1y  a3a14y3=(1+α2)arctan(α)2αy(1+α2)(arctan(α))348α3(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)y3=(1+α2)arctan(α)2αy(1+α2)(arctan(α))348α(α26+α23(1α2)αarctan(α)+2(arctan(α))2)y3=y(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)y24)

speravo che qualcuno lo facesse. richiama , ey=f(x)ln(2)bwg(y)=xln(2)2BWαtan(ω0/2)

x=g(y)y(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)y24)ln(2)2BW(ln(2)bw)(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)(ln(2)bw)24)

ho tre identità trigonometriche convenienti:

12(α+α1)=12(tan(ω0/2)+1tan(ω0/2))=1sin(ω0)

12(αα1)=12(tan(ω0/2)1tan(ω0/2))=1tan(ω0)

12(α2+α2)=12(tan2(ω0/2)+1tan2(ω0/2))=1sin2(ω0)+1tan2(ω0)=2sin2(ω0)1

"finalmente" abbiamo ottenuto:

BWbwω0sin(ω0)(1 + (ln(2))224(2(ω021)(ω0sin(ω0))2+3ω0tan(ω0))(bw)2)

non è poi così male si adatta su una sola riga. se qualcuno vede un errore o un buon modo per semplificare ulteriormente, per favore fammi sapere.

con l'approssimazione della serie di potenze dal commento sopra,

BWbwω0sin(ω0)(1 + (ln(2))2(136ω021180ω0422835ω06)(bw)2)

inoltre, non sono sicuro che la risposta di Atul per e la risposta di Markus per siano coerenti. mi chiedo se qualcuno potrebbe essere in grado di dirlo in una risposta che potrebbe entrare nella generosità. f(0)a3
robert bristow-johnson,

Ho anche scoperto il notebook cloud di Wolfram che è come Mathematica nel tuo browser. Vai su sandbox.open.wolframcloud.com/app e digita 6*SeriesCoefficient[ Series[Log[ArcTan[a E^x]] - Log[ArcTan[a/E^x]],{x,0,5}],3]
Atul Ingle,

@AtulIngle, ho incorporato le correzioni di Markus nella funzione inversa. ti dispiacerebbe controllare il risultato per ? g(y)
robert bristow-johnson,

Gradirei se qualcuno ricontrollasse la mia sostituzione in , in particolare il fattore che moltiplica . molto presto restituirò a che provocherà una semplificazione e una forma completamente diverse. ma mi terrò un po 'nel caso qualcuno mi dica che le mie semplificazioni sopra sono sbagliate. g(y)y2αtan(ω0/2)
robert bristow-johnson,

1
@ robert bistow-johnson Ho controllato la tua espressione finale per g (y) usando Mathematica, sembra giusto.
Atul Ingle,

2

quindi ecco alcuni risultati quantitativi. ho tracciato la larghezza di banda specw per il filtro digitale sull'asse xe la larghezza di banda digitale risultante sull'asse y. ci sono cinque grafici dal verde al rosso che rappresentano la frequenza di risonanza normalizzata da Nyquist:bwω0

ω0π= [0,0002 0,2441 0,4880 0,7320 0,9759]

quindi la frequenza di risonanza va da quasi DC a quasi Nyquist.

qui non vi è alcun compenso (o pre-warping) per la larghezza di banda: inserisci qui la descrizione dell'immagine

ecco la semplice compensazione del primo ordine che il libro di cucina ha sempre fatto: inserisci qui la descrizione dell'immagine

ecco la compensazione del terzo ordine che abbiamo appena risolto qui: inserisci qui la descrizione dell'immagine

ciò che vogliamo è che tutte le linee si trovino direttamente sulla diagonale principale.

i aveva fatto un errore nel caso del terzo ordine e corretto in questa revisione. essa fa apparire come il ravvicinamento terzo ordine di è un po 'meglio il ravvicinamento primo ordine per piccole .g(y)bw

così ho manipolato il coefficiente del termine del 3 ° ordine (voglio lasciare lo stesso termine del 1 ° ordine), diminuendone l'effetto. questo è moltiplicando solo il termine del 3 ° ordine per il 50%:

inserisci qui la descrizione dell'immagine

questo lo sta riducendo al 33%:

inserisci qui la descrizione dell'immagine

e questo riduce il termine del 3 ° ordine al 25%:

inserisci qui la descrizione dell'immagine

poiché l'oggetto di una funzione inversa è annullare la funzione specificata, il punto di tutto ciò è far sì che le curve della funzione composita si trovino il più vicino possibile alla diagonale principale. non è male per un Nyquist fino al 75% per frequenza di risonanza e larghezza di banda 3 ottave . ma non molto meglio per farne valere davvero la pena nel codice "Coefficiente di cottura" che viene eseguito ogni volta che l'utente gira una manopola o fa scorrere un cursore.ω0bw


Come può la larghezza di banda diventare negativa nella seconda e terza trama ??
Matt L.

non può, motivo per cui finora non sono impressionato da questa approssimazione del terzo ordine al reale che è la funzione inversa di non credo che l'approssimazione del terzo ordine sia un miglioramento rispetto all'approssimazione del primo ordine che esiste da un paio di decenni . quindi ciò che è tracciato è dove è l'approssimazione al vero inverso dove perché è bipolare (anche se la larghezza di banda negativa è priva di senso) può diventare negativo. f ( x ) = ln ( arctan ( αx=g(y)f( g (y)) g (y)g(y)y=f(g(y))f(x)f( g (y))
f(x)=ln(arctan(αex)arctan(αex))
f(g^(y))
g^(y)g(y)
y=f(g(y))
f(x)f(g^(y))
robert bristow-johnson

oh, @MattL. il fatto che passi attraverso l'origine non dovrebbe sorprenderti anche se la larghezza di banda non è mai realmente negativa. quella funzione di mappatura della larghezza di banda è una strana simmetria, quindi la prima e la seconda trama non mi sorprendono affatto. ma la terza trama è deludente. f(x)
robert bristow-johnson,

Mi stavo solo chiedendo perché hai tracciato le curve per le larghezze di banda negative. Ma comunque, se non sbaglio, la serie che usi è una specie di espansione della serie Taylor a , giusto? Quindi perché dovresti aspettarti che si avvicini bene al comportamento reale a larghezze di banda maggiori se usi solo due termini? bw=0
Matt L.

volevo solo assicurarmi che le funzioni fossero strane-simmetriche e attraversassero davvero bene l'origine. sì, questo è tutto sulla serie di Taylor (o più precisamente, Maclaurin). noterai, @MattL., che penso che un termine funzioni piuttosto bene per tutte le frequenze di risonanza che non sono tremendamente vicine a Nyquist. lasciando inalterato il termine lineare, mi sono arricciato un po 'con il termine del terzo ordine (rimanete sintonizzati, mostrerò i risultati) e funziona abbastanza bene. ma non molto meglio del primo ordine che penso dovrei preoccuparmi di cambiarlo nel ricettario.
robert bristow-johnson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.