<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" xmlns:md="http://cnx.rice.edu/mdml/0.4" id="id2255528">
  <name>"Notes on the Design of Optimal FIR Filters" Appendix B</name>
  <metadata>
  <md:version>1.2</md:version>
  <md:created>2008/05/20 16:16:29 GMT-5</md:created>
  <md:revised>2008/10/15 11:04:36.644 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="jrt">
      <md:firstname>John</md:firstname>
      <md:othername>R</md:othername>
      <md:surname>Treichler</md:surname>
      <md:email>jrt@appsig.com</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="jrt">
      <md:firstname>John</md:firstname>
      <md:othername>R</md:othername>
      <md:surname>Treichler</md:surname>
      <md:email>jrt@appsig.com</md:email>
    </md:maintainer>
    <md:maintainer id="dcwill">
      <md:firstname>Daniel</md:firstname>
      <md:othername>Collins</md:othername>
      <md:surname>Williamson</md:surname>
      <md:email>dcwill@cnx.org</md:email>
    </md:maintainer>
    <md:maintainer id="richb">
      <md:firstname>Richard</md:firstname>
      <md:othername>G.</md:othername>
      <md:surname>Baraniuk</md:surname>
      <md:email>richb@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="cburrus">
      <md:firstname>C.</md:firstname>
      <md:othername>Sidney</md:othername>
      <md:surname>Burrus</md:surname>
      <md:email>csb@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="rswagner">
      <md:firstname>Raymond</md:firstname>
      
      <md:surname>Wagner</md:surname>
      <md:email>rwagner@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  

  <md:abstract/>
</metadata>
  <content>
    <section id="uid1">
      <name>Some Notes on Chebyshev Polynomials</name>
      <para id="id2255548"><cnxn document="m17234" target="uid6">The section "The Derivation of the Formula" from the module titled "Filter Sizing"</cnxn> 

used some of the properties of the Chebyshev
polynomials to develop the key formulas used for FIR filter sizing.
This appendix provides a very brief review of these polynomials and the
equations used to generate them.</para>
      <para id="id2255557"><cnxn target="uid2"/> shows a set of polynomials which have the
property that, for values of <m:math overflow="scroll"><m:mi>x</m:mi></m:math> between -1 and 1, the polynomial has
peak magnitude of unity. A footnote in <cnxn document="m17234" target="uid6">The section "The Derivation of the Formula" from the module titled "Filter Sizing"</cnxn> 

pointed out
that the Russian engineer Chebyshev developed these polynomials as part
of design effort which required minimizing the maximum lateral excursion of
a locomotive drive rod. For each polynomial order, say <m:math overflow="scroll"><m:mi>M</m:mi></m:math>, the objective is
to choose the polynomial's coefficients so that that it “ripples" between
<m:math overflow="scroll"><m:mrow><m:mi>x</m:mi><m:mo>=</m:mo><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:math> and <m:math overflow="scroll"><m:mrow><m:mi>x</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow></m:math> and then proceeds off proportional to <m:math overflow="scroll"><m:msup><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo></m:mrow><m:mi>M</m:mi></m:msup></m:math> for values
of <m:math overflow="scroll"><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo><m:mo>&gt;</m:mo><m:mn>1</m:mn><m:mo>.</m:mo></m:mrow></m:math> Not only did Chebyshev find such polynomials, he found that
one exists for each positive value of <m:math overflow="scroll"><m:mi>M</m:mi></m:math>, and that they are related thorugh
a recursion equation, that is, the polynomial for <m:math overflow="scroll"><m:mi>M</m:mi></m:math> can directly obtained
for the polynomial for <m:math overflow="scroll"><m:mi>M</m:mi></m:math>-1.</para>
      <figure id="uid2" orient="horizontal">
        <media type="application/postscript" src="fig12.eps">
          <media type="image/png" src="fig12.png"><!-- NOTE: width parameter changes size of image online (pixels). original width is 366. --><param name="width" value="366"/></media>
        </media>
        <caption>Graphs of Chebyshev Polynomials of Orders 0 through 4</caption>
      </figure>
      <para id="id2255712">Consider the following recursion expression:</para>
      <equation id="uid3">
        <m:math mode="display" overflow="scroll">
          <m:mrow>
            <m:msub>
              <m:mi>P</m:mi>
              <m:mi>M</m:mi>
            </m:msub>
            <m:mrow>
              <m:mo>(</m:mo>
              <m:mi>x</m:mi>
              <m:mo>)</m:mo>
            </m:mrow>
            <m:mo>=</m:mo>
            <m:mn>2</m:mn>
            <m:mi>x</m:mi>
            <m:mo>·</m:mo>
            <m:msub>
              <m:mi>P</m:mi>
              <m:mrow>
                <m:mi>M</m:mi>
                <m:mo>-</m:mo>
                <m:mn>1</m:mn>
              </m:mrow>
            </m:msub>
            <m:mrow>
              <m:mo>(</m:mo>
              <m:mi>x</m:mi>
              <m:mo>)</m:mo>
            </m:mrow>
            <m:mo>-</m:mo>
            <m:msub>
              <m:mi>P</m:mi>
              <m:mrow>
                <m:mi>M</m:mi>
                <m:mo>-</m:mo>
                <m:mn>2</m:mn>
              </m:mrow>
            </m:msub>
            <m:mrow>
              <m:mo>(</m:mo>
              <m:mi>x</m:mi>
              <m:mo>)</m:mo>
            </m:mrow>
            <m:mo>,</m:mo>
          </m:mrow>
        </m:math>
      </equation>
      <para id="id2254891">with initial conditions of</para>
      <equation id="id2254897">
        <m:math mode="display" overflow="scroll">
          <m:mrow>
            <m:msub>
              <m:mi>P</m:mi>
              <m:mn>0</m:mn>
            </m:msub>
            <m:mo>=</m:mo>
            <m:mn>1</m:mn>
          </m:mrow>
        </m:math>
      </equation>
      <para id="id2254918">and</para>
      <equation id="id2254923">
        <m:math mode="display" overflow="scroll">
          <m:mrow>
            <m:msub>
              <m:mi>P</m:mi>
              <m:mn>1</m:mn>
            </m:msub>
            <m:mo>=</m:mo>
            <m:mi>x</m:mi>
          </m:mrow>
        </m:math>
      </equation>
      <para id="id2256090">Note that both of these initial conditions meet (if
trivially) the stated
criteria for being Chebyshev polynomials.</para>
      <para id="id2256097">Using this recursion expression we find, for <m:math overflow="scroll"><m:mi>M</m:mi></m:math> from 0 to 5, that:</para>
      <equation id="id2256111"><m:math mode="display" overflow="scroll">
		<m:mtable displaystyle="true">
			<m:mtr>
				<m:mtd columnalign="right">
					<m:mrow>
						<m:msub>
							<m:mi>P</m:mi>
							<m:mn>0</m:mn>
						</m:msub>
						<m:mrow>
							<m:mo>(</m:mo>
							<m:mi>x</m:mi>
							<m:mo>)</m:mo>
						</m:mrow>
					</m:mrow>
				</m:mtd>
				<m:mtd>
					<m:mo>=</m:mo>
				</m:mtd>
				<m:mtd columnalign="left">
					<m:mn>1</m:mn>
				</m:mtd>
			</m:mtr>
			<m:mtr>
				<m:mtd columnalign="right">
					<m:mrow>
						<m:msub>
							<m:mi>P</m:mi>
							<m:mn>1</m:mn>
						</m:msub>
						<m:mrow>
							<m:mo>(</m:mo>
							<m:mi>x</m:mi>
							<m:mo>)</m:mo>
						</m:mrow>
					</m:mrow>
				</m:mtd>
				<m:mtd>
					<m:mo>=</m:mo>
				</m:mtd>
				<m:mtd columnalign="left">
					<m:mi>x</m:mi>
				</m:mtd>
			</m:mtr>
			<m:mtr>
				<m:mtd columnalign="right">
					<m:mrow>
						<m:msub>
							<m:mi>P</m:mi>
							<m:mn>2</m:mn>
						</m:msub>
						<m:mrow>
							<m:mo>(</m:mo>
							<m:mi>x</m:mi>
							<m:mo>)</m:mo>
						</m:mrow>
					</m:mrow>
				</m:mtd>
				<m:mtd>
					<m:mo>=</m:mo>
				</m:mtd>
				<m:mtd columnalign="left">
					<m:mrow>
						<m:mn>2</m:mn>
						<m:msup>
							<m:mi>x</m:mi>
							<m:mn>2</m:mn>
						</m:msup>
						<m:mo>-</m:mo>
						<m:mn>1</m:mn>
					</m:mrow>
				</m:mtd>
			</m:mtr>
			<m:mtr>
				<m:mtd columnalign="right">
					<m:mrow>
						<m:msub>
							<m:mi>P</m:mi>
							<m:mn>3</m:mn>
						</m:msub>
						<m:mrow>
							<m:mo>(</m:mo>
							<m:mi>x</m:mi>
							<m:mo>)</m:mo>
						</m:mrow>
					</m:mrow>
				</m:mtd>
				<m:mtd>
					<m:mo>=</m:mo>
				</m:mtd>
				<m:mtd columnalign="left">
					<m:mrow>
						<m:mn>4</m:mn>
						<m:msup>
							<m:mi>x</m:mi>
							<m:mn>3</m:mn>
						</m:msup>
						<m:mo>-</m:mo>
						<m:mn>3</m:mn>
						<m:mi>x</m:mi>
					</m:mrow>
				</m:mtd>
			</m:mtr>
			<m:mtr>
				<m:mtd columnalign="right">
					<m:mrow>
						<m:msub>
							<m:mi>P</m:mi>
							<m:mn>4</m:mn>
						</m:msub>
						<m:mrow>
							<m:mo>(</m:mo>
							<m:mi>x</m:mi>
							<m:mo>)</m:mo>
						</m:mrow>
					</m:mrow>
				</m:mtd>
				<m:mtd>
					<m:mo>=</m:mo>
				</m:mtd>
				<m:mtd columnalign="left">
					<m:mrow>
						<m:mn>8</m:mn>
						<m:msup>
							<m:mi>x</m:mi>
							<m:mn>4</m:mn>
						</m:msup>
						<m:mo>-</m:mo>
						<m:mn>8</m:mn>
						<m:msup>
							<m:mi>x</m:mi>
							<m:mn>2</m:mn>
						</m:msup>
						<m:mo>+</m:mo>
						<m:mn>1</m:mn>
					</m:mrow>
				</m:mtd>
			</m:mtr>
			<m:mtr>
				<m:mtd columnalign="right">
					<m:mrow>
						<m:msub>
							<m:mi>P</m:mi>
							<m:mn>5</m:mn>
						</m:msub>
						<m:mrow>
							<m:mo>(</m:mo>
							<m:mi>x</m:mi>
							<m:mo>)</m:mo>
						</m:mrow>
					</m:mrow>
				</m:mtd>
				<m:mtd>
					<m:mo>=</m:mo>
				</m:mtd>
				<m:mtd columnalign="left">
					<m:mrow>
						<m:mn>16</m:mn>
						<m:msup>
							<m:mi>x</m:mi>
							<m:mn>5</m:mn>
						</m:msup>
						<m:mo>-</m:mo>
						<m:mn>20</m:mn>
						<m:msup>
							<m:mi>x</m:mi>
							<m:mn>3</m:mn>
						</m:msup>
						<m:mo>+</m:mo>
						<m:mn>5</m:mn>
						<m:mi>x</m:mi>
					</m:mrow>
				</m:mtd>
			</m:mtr>
		</m:mtable>
	</m:math>
</equation>
      <para id="id2256374">These polynomials are plotted in <cnxn target="uid2"/>
and it may be confirmed by inspection that they meet the stated criteria.</para>
      <para id="id2256387">A surprising result is that there is yet another way to present these
polynomials. This method is given by the following equations:</para>
      <equation id="uid4"><m:math mode="display" overflow="scroll">
          <m:mtable displaystyle="true">
            <m:mtr>
              <m:mtd columnalign="right">
                <m:mrow>
                  <m:msub>
                    <m:mi>P</m:mi>
                    <m:mi>M</m:mi>
                  </m:msub>
                  <m:mrow>
                    <m:mo>(</m:mo>
                    <m:mi>x</m:mi>
                    <m:mo>)</m:mo>
                  </m:mrow>
                </m:mrow>
              </m:mtd>
              <m:mtd>
                <m:mo>=</m:mo>
              </m:mtd>
              <m:mtd columnalign="left">
                <m:mrow>
                  <m:mi>c</m:mi>
                  <m:mi>o</m:mi>
                  <m:mi>s</m:mi>
                  <m:mo>[</m:mo>
                  <m:mi>M</m:mi>
                  <m:mo>·</m:mo>
                  <m:mi>c</m:mi>
                  <m:mi>o</m:mi>
                  <m:msup>
                    <m:mi>s</m:mi>
                    <m:mrow>
                      <m:mo>-</m:mo>
                      <m:mn>1</m:mn>
                    </m:mrow>
                  </m:msup>
                  <m:mrow>
                    <m:mo>(</m:mo>
                    <m:mi>x</m:mi>
                    <m:mo>)</m:mo>
                  </m:mrow>
                  <m:mo>]</m:mo>
                  <m:mo>,</m:mo>
                  <m:mspace width="3.33333pt"/>
                  <m:mi>f</m:mi>
                  <m:mi>o</m:mi>
                  <m:mi>r</m:mi>
                  <m:mspace width="3.33333pt"/>
                  <m:mo>|</m:mo>
                  <m:mi>x</m:mi>
                  <m:mo>|</m:mo>
                  <m:mo>≤</m:mo>
                  <m:mn>1</m:mn>
                  <m:mo>,</m:mo>
                  <m:mspace width="3.33333pt"/>
                  <m:mi>a</m:mi>
                  <m:mi>n</m:mi>
                  <m:mi>d</m:mi>
                </m:mrow>
              </m:mtd>
            </m:mtr>
          </m:mtable>
        </m:math>
      </equation>
      <equation id="element-53"><m:math mode="display" overflow="scroll">
  <m:mtable displaystyle="true">
<m:mtr>
              <m:mtd columnalign="right">
                <m:mrow>
                  <m:msub>
                    <m:mi>P</m:mi>
                    <m:mi>M</m:mi>
                  </m:msub>
                  <m:mrow>
                    <m:mo>(</m:mo>
                    <m:mi>x</m:mi>
                    <m:mo>)</m:mo>
                  </m:mrow>
                </m:mrow>
              </m:mtd>
              <m:mtd>
                <m:mo>=</m:mo>
              </m:mtd>
              <m:mtd columnalign="left">
                <m:mrow>
                  <m:mi>c</m:mi>
                  <m:mi>o</m:mi>
                  <m:mi>s</m:mi>
                  <m:mi>h</m:mi>
                  <m:mo>[</m:mo>
                  <m:mi>M</m:mi>
                  <m:mo>·</m:mo>
                  <m:mi>c</m:mi>
                  <m:mi>o</m:mi>
                  <m:mi>s</m:mi>
                  <m:msup>
                    <m:mi>h</m:mi>
                    <m:mrow>
                      <m:mo>-</m:mo>
                      <m:mn>1</m:mn>
                    </m:mrow>
                  </m:msup>
                  <m:mrow>
                    <m:mo>(</m:mo>
                    <m:mi>x</m:mi>
                    <m:mo>)</m:mo>
                  </m:mrow>
                  <m:mo>]</m:mo>
                  <m:mo>,</m:mo>
                  <m:mspace width="3.33333pt"/>
                  <m:mi>f</m:mi>
                  <m:mi>o</m:mi>
                  <m:mi>r</m:mi>
                  <m:mspace width="3.33333pt"/>
                  <m:mo>|</m:mo>
                  <m:mi>x</m:mi>
                  <m:mo>|</m:mo>
                  <m:mo>&gt;</m:mo>
                  <m:mn>1</m:mn>
                  <m:mo>.</m:mo>
                </m:mrow>
              </m:mtd>
            </m:mtr>
          </m:mtable>
        </m:math> </equation><para id="id2256607">Analytically it can be confirmed that these equations satisfy the recursion
seen in equation <cnxn target="uid3"/>. To see that they describe the same polynomials
as seen in <cnxn target="uid2"/>, consider <cnxn target="uid4"/>
for values of <m:math overflow="scroll"><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo></m:mrow></m:math> between -1 and 1. For such values <m:math overflow="scroll"><m:mrow><m:mi>c</m:mi><m:mi>o</m:mi><m:msup><m:mi>s</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mi>x</m:mi></m:mrow></m:math> ranges
between <m:math overflow="scroll"><m:mi>π</m:mi></m:math> and 0. Thus <m:math overflow="scroll"><m:mrow><m:mi>M</m:mi><m:mo>·</m:mo><m:mi>c</m:mi><m:mi>o</m:mi><m:msup><m:mi>s</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mi>x</m:mi></m:mrow></m:math> ranges between
<m:math overflow="scroll"><m:mrow><m:mi>M</m:mi><m:mi>π</m:mi></m:mrow></m:math> and 0, and <m:math overflow="scroll"><m:mrow><m:mi>c</m:mi><m:mi>o</m:mi><m:mi>s</m:mi><m:mo>[</m:mo><m:mi>M</m:mi><m:mo>·</m:mo><m:mi>c</m:mi><m:mi>o</m:mi><m:msup><m:mi>s</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mi>x</m:mi><m:mo>]</m:mo></m:mrow></m:math> cycles between -1 or 1 and
1, hiting <m:math overflow="scroll"><m:mrow><m:mi>M</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:math> extrema on the way, counting the endpoints. Similar
analysis shows that equation <cnxn target="element-53"/> grows monotonically in
magnitude as <m:math overflow="scroll"><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo></m:mrow></m:math> does. In fact it is easy to show that
<m:math overflow="scroll"><m:mrow><m:mo>|</m:mo><m:mi>c</m:mi><m:mi>o</m:mi><m:mi>s</m:mi><m:mi>h</m:mi><m:mo>[</m:mo><m:mi>M</m:mi><m:mo>·</m:mo><m:mi>c</m:mi><m:mi>o</m:mi><m:mi>s</m:mi><m:msup><m:mi>h</m:mi><m:mrow><m:mo>-</m:mo><m:mn>1</m:mn></m:mrow></m:msup><m:mi>x</m:mi><m:mo>]</m:mo><m:mo>|</m:mo></m:mrow></m:math> assymptotically approaches <m:math overflow="scroll"><m:msup><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo></m:mrow><m:mi>M</m:mi></m:msup></m:math> as
<m:math overflow="scroll"><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo></m:mrow></m:math> gets much greater than one.</para>
      <para id="id2256875">This second form of the definition for Chebyshev polynomials is very useful
since it is a closed form and because it involves cosines, a functional
form appearing frequently in frequency-domain representations of filters.
In light of this a final twist might be noted. <cnxn target="element-53"/>
is in fact superfluous given <cnxn target="uid4"/>. To see this,
consider evaluating <cnxn target="uid4"/> for <m:math overflow="scroll"><m:mrow><m:mo>|</m:mo><m:mi>x</m:mi><m:mo>|</m:mo><m:mo>=</m:mo><m:mn>2</m:mn></m:mrow></m:math>. It initially
appears that this won't work, since arccosine cannot be evaluated for
arguments greater than unity. In fact it can, it's just that the result is
purely imaginary. It is easy, using Euler's definition of the cosine, to see
that the cosine of <m:math overflow="scroll"><m:mrow><m:mi>j</m:mi><m:mi>x</m:mi></m:mrow></m:math> is the same as the hyberbolic cosine of <m:math overflow="scroll"><m:mi>x</m:mi></m:math>. Thus
the arccosine of 2 is <m:math overflow="scroll"><m:mi>j</m:mi></m:math> times the inverse hyperbolic cosine of 2, that
is, <m:math overflow="scroll"><m:mrow><m:mi>j</m:mi><m:mo>·</m:mo><m:mn>1</m:mn><m:mo>.</m:mo><m:mn>31</m:mn></m:mrow></m:math>. Multiplying by M and taking the cosine of the
product yields the cosine of <m:math overflow="scroll"><m:mrow><m:mi>j</m:mi><m:mi>M</m:mi><m:mi>x</m:mi></m:mrow></m:math>, which is the hyperbolic cosine of <m:math overflow="scroll"><m:mrow><m:mi>M</m:mi><m:mi>x</m:mi></m:mrow></m:math>.
Thus, if imaginary arguments are permitted, then <cnxn target="uid4"/>
suffices to describe all of the Chebyshev polynomials.</para>
    </section>
  </content>
</document>
