双一次変換の使用から生じる数学的な質問


10

これはクックブックに関連しているので、おそらく20年前に解決しようとしましたが、あきらめ、未解決の問題を思い出しました。しかし、それはかなりまっすぐ進むのですが、私はまだ泥に詰まっています。

これは、共振周波数を持つ単純なバンドパスフィルター(BPF)です。 Ω0と共振:Q

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

共振周波数で

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

上部と下部のバンドエッジは次のように定義されています

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

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

これらを「ハーフパワーバンドエッジ」と呼びます。私たちはオーディオなので、オクターブ単位で帯域幅を定義し、アナログの世界では、オクターブ単位のこの帯域幅BWQに関連しています。Qようにます。

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

マップする双線形変換(事前にワープした共振周波数)を使用しています。

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

せるとz=ejωs=jΩ

アナログフィルターの共振周波数はであり、実現したデジタルフィルターの共振周波数に対して周波数ワーピング補正が行われ、(ユーザー定義の共振周波数)の場合、Ω0ω=ω0Ω=Ω0ます。

したがって、アナログ角周波数が

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

次に、デジタル角周波数にマッピングされます。

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

さて、アナログの世界の上部と下部のバンドエッジは

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

そしてデジタル周波数領域では

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

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

次に、帯域幅の対数周波数での実際の差(デジタルフィルターの実際の帯域幅)は次のとおりです。

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

または

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

これは、関数形式を持っています

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

ここで、、 およびf(x)ln(2)bwxln(2)2BWαtan(ω0/2)

私がやりたいことは、反転することです(ただし、素敵な閉じた形では正確に実行できないことはわかっています)。すでに1次近似を行っているので、3次近似に上げたいと思います。そして、これは簡単なはずですが、交尾する雌のイヌになっています。f(x)

これはラグランジュ反転公式と関係があるので、私が持っているよりも1項だけ長くしたいと思います。

上から、が奇対称関数であることを知っています。f(x)

f(x)=f(x)

つまり、あり、Maclaurin級数の偶数次の項はすべてゼロになります。f(0)=0

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

逆関数も奇数対称であり、ゼロを通過し、マクラウリン級数として表すことができます

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

そして、とが何であるかを知っている場合、と何である必要があるかについて、良い考えがあります。a1a3f(x)b1b3

b1=1a1b3=a3a14

これで、導関数を計算してゼロで評価でき、f(x)

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

しかし、私はを取得しているため、取得している時代の雌犬を抱えています。誰かがこれを行うことができますか?評価された 3次導関数の確実な式でさえ解決し。a3b3f(x)x=0


2
明確にするために:あなたの目標は、つまり、指定されたに対して、を検索しますか?特に、多項式展開によってそれを実行したい場合、3番目の係数を探します(2番目はゼロであるため、関数の奇数に対して行います)。正しい?
f(x)=ln(arctan(αex))ln(arctan(αex))
f(x)x
MaximilianMatthé2017

2
つまり、指定してを知りたい、つまり、デジタルフィルターの目的の帯域幅を取得するために選択する必要があるアナログフィルターの帯域幅を知りたいということですか。BWbw
Matt L.

2
はい、はい、そしてはい。
ロバートブリストウジョンソン2017

1
@ robertbristow-ジョンソン私はあまりにも慎重に質問を読んでいないが、私はあなたに興味を持っている通告しなかった時。それを計算するためにMathematicaまたはWolfram Alphaを使用しても大丈夫ですか?かなりクリーンな結果が得られます:。wolframalpha.com/input/…そして、「x = 0で評価」の部分を削除すると、Wolframは結合しているメスの犬をその栄光の中で吐き出します。f(x)x=04(8π2)α3π3
Atul Ingle 2017

1
そこに私のタイプミスがあります。「クリーン」な結果は実際には wolframalpha.com/input/...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)
アトゥールイングル

回答:


4

私の部分をこの質問に補足するために:ここで、奇数関数 を3次までのシリーズに配置します。詳細については、 mathSEをご覧くださいf(x)

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

左辺の最初の我々の焦点にのとで始まります

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

級数展開:arctan

を取得し

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

ここで、(2)までの係数を導出します。使用係数オペレータ係数示すために、我々が入手直列に 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

我々は結論

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

対数系列の累乗:

対数系列の係数を導出するには、 式(3)をと記述します そして

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

現在セットとのcoeffcients抽出にから A(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

(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

対数の級数展開:

(6))の係数を観点からln(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

級数展開:f(x)

収穫する時が来ました。最後に、が奇数であることを考慮して、(3)および(7)で取得します。f(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、については正しいですが、は奇数対称性であり、偶数次の項がゼロであることを知っているので、この展開は適していると言えます。O(x4)f(x)O(x5)
ロバートブリストウジョンソン2017

@ robertbristow-johnson:はい、もちろんです。それに応じて更新されました。:-)
Markus Scheuer 2017

大変な努力を!この詳細で長い解答を読もうとすると、式(4)で対数の外でどのように分離できるのかわかりませんでしたか?無限級数はすでにすべての累乗を含んでいるので、孤立した項は何を意味するのでしょうか?O(x4)xO(x4)
Fat32

もちろん、私はそこであなたが何を意味したいのかという感覚を得ましたが、適切な表記は次のようなものになるでしょう:ここで、を使用して他のすべての表記法から離れています。また、これら2つの係数セットを区別するためにとを使用したことに注意してください。したがって、方程式(4)とこの上の行は完全に同じではありません。しかし、それがあなたのさらなる進歩に影響を与えるとは思いません。
ln(arctan(αex)) = n=1(1)n+1n((a01)+a1x+a2x2+a3x3+O1(x4))n = T0+T1x+T2x2+T3x3+O2(x4)
TO1O2
Fat32


3

(回答をコメントに変換。)

Wolfram Alphaを使用すると、x = 0でのは次のように評価されます: f(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) ))+)+ at + x%3D0

これがMarkusの回答と一致するかどうかをここで再確認することもできます

彼の係数あることを出てきますx3

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

これに6を掛けて、いくつかの要素を並べ替えると、次のようになります。

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

マッチする!


Atul、あなたの単純化された答えは、数学SEでのMarkusの答えと一致していないようです。それがある場合でなければなりません 私はあなたのf '' '(0)のすべての項がMarkusと一致するとは思いません。Markusが間違っている可能性があります。
f(x)|x0 = 3!a3=6a3
robert bristow-johnson 2017

2
@ robertbristow-johnson一致すると思います。
Atul Ingle

彼らは今します。Markusには間違いがあったに違いない。彼がやった彼の答えは良い昔ながらの方法を。
ロバートブリストウジョンソン2017

Atul、あなたはあなたの賞金を手に入れます。バウンティに関するルールを調査したところ、バウンティを分割することはできませんでしたが、一度に1つずつ、2回授与することができました。Markusは担当者がdsp.seのあなたよりも少ないため、彼はコンピューターの助けを借りずに答えを提示したので、最初に彼の賞金を授与します。それから私はこの質問に別の賞金を置き、それからあなたにそれを与えます。それは私が23時間待つ必要があると言います。まだ私の「チェックマーク」を取得するつもりはない。
robert bristow-johnson 2017

1
@ robertbristow-johnson返信が遅くなってすみません。係数はのためにω 2 0ω 4 0ω 6 0ω 8 0それぞれ。wolframalpha.com/input/…–2/3,2/15,16/945,2/945ω02,ω04,ω06,ω08
Atul Ingle

3

質問で提起された問題には、閉形式の解決策がないようです。質問で述べられ、他の回答で示されているように、結果はシリーズに展開できます。これは、Mathematicaなどの任意の記号数学ツールで実行できます。ただし、項は非常に複雑で見苦しいものになり、3次までの項を含めると、近似がどれほど優れているかは不明です。正確な式を取得することはできないため、近似を使用する場合とは異なり、(ほぼ)正確な結果が得られる数値で解を計算する方がよい場合があります。

ただし、これは私の答えではありません。問題の定式化を変更することによって正確な解決策を提供する別のルートを提案します。それは、中心周波数の仕様であることが判明しながら、それについて考えた後数学的扱いにくを引き起こし、(オクターブで同等又は、)比として帯域幅の仕様。ジレンマから抜け出す方法は2つあります。ω0

  1. 離散時間フィルタの帯域幅を指定する周波数のω 1及びω 2は、それぞれ、離散時間フィルタの下側および上側バンドエッジです。Δω=ω2ω1ω1ω2
  2. 比を規定、および代わりにω 0 2つのエッジ周波数のPRESCRIBEの1 ω 1又はω 2ω2/ω1ω0ω1ω2

どちらの場合も、簡単な分析ソリューションが可能です。離散時間フィルターの帯域幅を比率として(またはオクターブ単位で)規定することが望ましいため、2番目のアプローチについて説明します。

のは、エッジ周波数を定義してみましょうΩ 2による連続時間フィルタのをΩ1Ω2

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

H sは二次バンドパスフィルタの伝達関数です。Ω2>Ω1H(s)

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

with ΔΩ=Ω2Ω1, and Ω02=Ω1Ω2. Note that H(jΩ0)=1, and |H(jΩ)|<1 for ΩΩ0.

We use the bilinear transform to map the edge frequencies ω1 and ω2 of the discrete-time filter to the edge frequencies Ω1 and Ω2 of the continuous-time filter. Without loss of generality we can choose Ω1=1. For our purposes the bilinear transform then takes the form

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

corresponding to the following relationship between continuous-time and discrete-time frequencies:

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

From (4) we obtain Ω2 by setting ω=ω2. With Ω1=1 and Ω2 computed from (4), we obtain the transfer function of the analog prototype filter from (2). Applying the bilinear transform (3), we get the transfer function of the discrete-time band pass filter:

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

with

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

Summary:

The bandwidth of the discrete-time filter can be specified in octaves (or, generally, as a ratio), and the parameters of the analog prototype filter can be computed exactly, such that the specified bandwidth is achieved. Instead of the center frequency ω0, we specify the band edges ω1 and ω2. The center frequency defined by |Hd(ejω0)|=1 is an outcome of the design.

The necessary steps are as follows:

  1. Specify the desired ratio of band edges ω2/ω1, and one of the band edges (which is of course equivalent to simply specifying ω1 and ω2).
  2. Choose Ω1=1 and determine Ω2 from (4). Compute ΔΩ=Ω2Ω1 and Ω02=Ω1Ω2 of the analog prototype filter (2).
  3. Evaluate the constants (6) to obtain the discrete-time transfer function (5).

Note that with the more common approach where ω0 and Δω=ω2ω1 are specified, the actual band edges ω1 and ω2 are an outcome of the design process. In the proposed solution, the band edges can be specified and ω0 is an outcome of the design process. The advantage of the latter approach is that the bandwidth can be specified in octaves and the solution is exact, i.e., the resulting filter has exactly the specified bandwidth in octaves.

Example:

Let's specify a bandwidth of one octave, and we choose the lower band edge as ω1=0.2π. This gives an upper band edge ω2=2ω1=0.4π. The band edges of the analog prototype filter are Ω1=1 and from (4) (with ω=ω2) Ω2=2.2361. This gives ΔΩ=Ω2Ω1=1.2361 and Ω02=Ω1Ω2=2.2361. With (6) we get for the discrete-time transfer function (5)

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

which achieves exactly a bandwidth of 1 octave, and the specified band edges, as shown in the figure below:

enter image description here

Numerical solution of the original problem:

From the comments I understand that it is important to be able to exactly specify the center frequency ω0 for which |Hd(ejω0)|=1 is satisfied. As mentioned before it is not possible to get an exact closed-form solution, and a series development produces quite unwieldy expressions.

For the sake of clarity I would like to summarize the possible options with their advantages and disadvantages:

  1. specify the desired bandwidth as a frequency difference Δω=ω2ω1, and specify ω0; in this case a simple closed-form solution is possible.
  2. specify the band edges ω1 and ω2 (or, equivalently, the bandwidth in octaves, and one of the band edges); this also leads to a simple closed-form solution, as explained above, but the center frequency ω0 is an outcome of the design and cannot be specified.
  3. specify the desired bandwidth in octaves and the center frequency ω0 (as asked in the question); no closed form solution is possible, nor is there (for the time being) any simple approximation. For this reason I think it's desirable to have a simple and efficient method for obtaining a numerical solution. This is what is explained below.

When ω0 is specified we use a form of the bilinear transform with a normalization constant that is different from the one used in (3) and (4):

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

We define Ω0=1. Denote the specified ratio of band edges of the discrete-time filter as

(8)r=ω2ω1

With c=tan(ω0/2) we get from (7) and (8)

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

With Ω1Ω2=Ω02=1, (9) can be rewritten in the following form:

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

For a given value of r this equation can be solved for Ω1 with a few Newton iterations. For this we need the derivative of f(Ω1):

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

With Ω0=1, we know that Ω1 must be in the interval (0,1). Even though it's possible to come up with smarter initial solutions, it turns out that the initial guess Ω1(0)=0.1 works well for most specs, and will result in very accurate solutions after only 4 iterations of Newton's method:

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

With Ω1 obtained with a few iterations of (12) we can determine Ω2=1/Ω1 and ΔΩ=Ω2Ω1, and and we use (5) and (6) to compute the coefficients of the discrete-time filter. Note that the constant c is now given by c=tan(ω0/2).

Example 1:

Let's specify ω0=0.6π and a bandwidth of 0.5 octaves. This corresponds to a ratio r=ω2/ω1=20.5=2=1.4142. With an initial guess of Ω1=0.1, 4 iterations of Newton's method resulted in a solution Ω1=0.71, from which the coefficients of the discrete-time can be computed as explained above. The figure below shows the result:

enter image description here

The filter was calculated with this Matlab/Octave script:

% specifications
bw = 0.5;    % desired bandwidth in octaves
w0 = .6*pi;  % resonant frequency

r = 2^(bw);  % ratio of band edges
W1 = .1;     % initial guess (works for most specs)
Nit = 4;     % # Newton iterations
c = tan(w0/2);

% Newton
for 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
end

W1 = abs(W1);
if (W1 >= 1), error('Failed to converge. Reduce value of initial guess.'); end

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

% discrete-time filter
scale = 1 + dW*c + W1*W2*c^2;
b = ( dW*c/scale) * [1,0,-1];
a = [1, 2*(W1*W2*c^2-1)/scale, (1-dW*c+W1*W2*c^2)/scale ];

Example 2:

I add another example to show that this method can also deal with specifications for which most approximations will give non-sensical results. This is often the case when the desired bandwidth and the resonant frequency are both large. Let's design a filter with ω0=0.95π and bw=4 octaves. Four iterations of Newton's method with an initial guess Ω1(0)=0.1 result in a final value of Ω1=0.00775, i.e., in a bandwidth of the analog prototype of log2(Ω2/Ω1)=log2(1/Ω12)14 octaves. The corresponding discrete-time filter has the following coefficients and its frequency response is shown in the plot below:

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

enter image description here

The resulting half power band edges are ω1=0.062476π and ω2=0.999612π, which are indeed exactly 4 octaves (i.e., a factor of 16) apart.


two initial comments (i haven't read this through, yet, Matt): first, i am interested in log frequency more so than linear frequency. for the analog BPF (or the digital BPF with resonant frequency much lower than Nyquist), there is perfect symmetry about the resonant frequency.
robert bristow-johnson

and the second comment is this, while i thank you for apparently sticking with the notation of s=jΩ and z=ejω, i wish you would stick to the notation that the analog and digital resonant frequencies are Ω0 and ω0, respectively, and the analog upper and lower bandedges are ΩU and ΩL respectively and likewise for the digital bandedges: ωU and ωL. we know that, in log frequency, half of the bandwidth is above Ω0 and half is below. but, due to warping, that is not exactly true for the digital BPF filter.
robert bristow-johnson

as i read this more, it is important to me that the resonant frequency gets mapped through the bilinear transform exactly. so i understand this approach, Matt, but i want to stick with exact mapping of ω0 and then tweak the BW until bw is what is specified.
robert bristow-johnson

@robertbristow-johnson: OK, fair enough, you want an exact specification of ω0. That's possible if you specify Δω as a linear difference (which you don't want, I understand). A neat solution is not possible with specified ω0 AND a bandwidth in octaves.
Matt L.

1
@robertbristow-johnson: I've added a very simple numerical solution to my answer (4 Newton iterations).
Matt L.

3

okay, i promised to put up bounty and i will keep my promise. but i have to confess that i might renege a little bit on being satisfied with just the third derivative of f(x). what i really want are the two coefficients for g(y).

so i didn't realize that there was this Wolfram language as an alternative to mathematica or Derive and i didn't realize it could so easily compute the third derivative and simplify the expression.

and this Markus guy at the math SE posted this answer (which i thought was gonna have to be the amount of grunge i thought would be needed).

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

so i put together the third-order approximation to the inverse:

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)

i was kinda hoping someone else would do this. recall y=f(x)ln(2)bw, g(y)=xln(2)2BW and α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)

i have three convenient trig identities:

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

"finally" we got:

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

this ain't so bad. fits on a single line. if someone sees an error or a good way to simplify further, please lemme know.

with the power series approximation from the comment above,

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

also, i am not sure that Atul's answer for f(0) and Markus's answer for a3 are consistent. i wonder if someone might be able to straight that out in an answer that could get in on the bounty.
robert bristow-johnson

I also found out about Wolfram's cloud notebook which is like Mathematica in your webbrowser. Go to sandbox.open.wolframcloud.com/app and type in 6*SeriesCoefficient[ Series[Log[ArcTan[a E^x]] - Log[ArcTan[a/E^x]],{x,0,5}],3]
Atul Ingle

@AtulIngle, i incorporated the Markus's corrections into the inverse function. would you mind checking the result for g(y)?
robert bristow-johnson

i would appreciate it if someone would check my substitution back to g(y), particularly the factor that multiplies y2. very soon i will return α back to tan(ω0/2) which will cause a whole other simplification and form. but i will hold off a little in case someone tells me my simplifications above are wrong.
robert bristow-johnson

1
@ robert bistow-johnson I checked your final expression for g(y) using Mathematica, it looks right.
Atul Ingle

2

so here are some quantitative results. i plotted spec'd bandwidth bw for the digital filter on the x-axis and the resulting digital bandwidth on the y-axis. there are five plots from green to red representing the resonant frequency ω0 normalized by Nyquist:

ω0π= [0.0002 0.2441 0.4880 0.7320 0.9759]

so the resonant frequency goes from nearly DC to nearly Nyquist.

here is no compensation (or pre-warping) at all for bandwidth: enter image description here

here is the simple first-order compensation that the Cookbook has done all along: enter image description here

here is the third-order compensation that we just solved here: enter image description here

what we want is for all of the lines to lie directly on the main diagonal.

i had made a mistake in the third-order case and corrected it in this revision. it does look like the third-order approximation to g(y) is a bit better than the first-order approximation for small bw.

so i diddled with the coefficient of the 3rd-order term (i wanna leave the 1st-order term the same), lessening it's effect. this is from multiplying just the 3rd-order term by 50%:

enter image description here

this is reducing it to 33%:

enter image description here

and this is reducing the 3rd-order term to 25%:

enter image description here

since the object of an inverse function is to undo the specified function, the point of this whole thing is to get the curves of the composite function to lie as close to the main diagonal as possible. it's not too bad for up to 75% Nyquist for resonant frequency ω0 and 3 octaves bandwidth bw. but not so much better to really make it worth it in the "coefficient cooking" code that is executed whenever the user turns a knob or slides a slider.


How can the bandwidth become negative in the second and third plot??
Matt L.

it can't, which is why i am so far unimpressed with this third-order approximation to the real x=g(y) which is the inverse function of
f(x)=ln(arctan(αex)arctan(αex))
i don't think that third-order approximation is an improvement over the first-order approximation that has existed for a couple decades. so what is plotted is
f(g^(y))
where g^(y) is the approximation to the true inverse g(y) where
y=f(g(y))
because f(x) is bipolar (even though negative bandwidth is nonsensical) f(g^(y)) can go negative.
robert bristow-johnson

oh, @MattL. the fact that f(x) passes through the origin should not surprize you even if bandwidth is never really negative. that bandwidth mapping function is odd symmetry, so the first and second plot do not surprize me at all. but the third plot is disappointing.
robert bristow-johnson

I was just wondering why you plotted the curves for negative bandwidths. But anyway, if I'm not mistaken then the series you use is a kind of Taylor series expansion at bw=0, right? So why would you even expect it to approximate the real behavior well at larger bandwidths if you only use two terms?
Matt L.

i just wanted to make sure the functions are odd-symmetry and go through the origin real nicely. yes, this is all about Taylor (or more specificly, Maclaurin) series. you will notice, @MattL., that i think one term does rather nicely for all of the resonant frequencies that ain't terribly close to Nyquist. leaving the linear term unchanged, i diddled a little with the third-order term a little (stay tuned, i'll show the results) and it does pretty well. but not so much better than the first-order that i think i should bother changing it in the Cookbook.
robert bristow-johnson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.