<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/253875</link>
    <title>MATLAB Central Newsreader - Question on evaluating polynomials/polyval</title>
    <description>Feed for thread: Question on evaluating polynomials/polyval</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Tue, 16 Jun 2009 19:09:14 -0400</pubDate>
      <title>Question on evaluating polynomials/polyval</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/253875#657888</link>
      <author>adam</author>
      <description>So the main method that is used by programs/computers to evaluate&lt;br&gt;
polynomials is Horner's Method. That's cool...but i was reading&lt;br&gt;
polyval.m, Matlab's polynomial evaluator, and noticed:&lt;br&gt;
&lt;br&gt;
% Make it scream for scalar x.  Polynomial evaluation can be&lt;br&gt;
% implemented as a recursive digital filter.&lt;br&gt;
y = filter(1,[1 -x],p);&lt;br&gt;
y = y(nc);&lt;br&gt;
&lt;br&gt;
Here x is the point of evaluation and p is a vector of polynomial&lt;br&gt;
coefficients. I've tried to work out the filter equation and see how&lt;br&gt;
poly evaluation is a filter, but I don't see it. Can anyone help?&lt;br&gt;
&lt;br&gt;
Thanks!</description>
    </item>
    <item>
      <pubDate>Tue, 16 Jun 2009 20:49:02 -0400</pubDate>
      <title>Re: Question on evaluating polynomials/polyval</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/253875#657923</link>
      <author>John D'Errico</author>
      <description>adam &amp;lt;adam.attarian@gmail.com&amp;gt; wrote in message &amp;lt;d8a640f2-ec55-4e7c-bc30-ef3249f46abf@j12g2000vbl.googlegroups.com&amp;gt;...&lt;br&gt;
&amp;gt; So the main method that is used by programs/computers to evaluate&lt;br&gt;
&amp;gt; polynomials is Horner's Method. That's cool...but i was reading&lt;br&gt;
&amp;gt; polyval.m, Matlab's polynomial evaluator, and noticed:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; % Make it scream for scalar x.  Polynomial evaluation can be&lt;br&gt;
&amp;gt; % implemented as a recursive digital filter.&lt;br&gt;
&amp;gt; y = filter(1,[1 -x],p);&lt;br&gt;
&amp;gt; y = y(nc);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Here x is the point of evaluation and p is a vector of polynomial&lt;br&gt;
&amp;gt; coefficients. I've tried to work out the filter equation and see how&lt;br&gt;
&amp;gt; poly evaluation is a filter, but I don't see it. Can anyone help?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thanks!&lt;br&gt;
&lt;br&gt;
Here is a fragment from the help to filter.&lt;br&gt;
&lt;br&gt;
Y = FILTER(B,A,X) filters the data in vector X with the&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filter described by vectors A and B to create the filtered&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data Y.  The filter is a &quot;Direct Form II Transposed&quot;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation of the standard difference equation:&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- a(2)*y(n-1) - ... - a(na+1)*y(n-na)&lt;br&gt;
&lt;br&gt;
Now, look at how filter is called.&lt;br&gt;
&lt;br&gt;
B = 1&lt;br&gt;
A = [1, -x]&lt;br&gt;
X = p&lt;br&gt;
&lt;br&gt;
So the vector X is our list of polynomial coefficients.&lt;br&gt;
&lt;br&gt;
a(1) * y(n) = b(1)*p(n) - a(2)*y(n-1)&lt;br&gt;
&lt;br&gt;
We have B = 1,&lt;br&gt;
&lt;br&gt;
a(1) * y(n) = p(n) - a(2)*y(n-1)&lt;br&gt;
&lt;br&gt;
Likewise, a(1) = 1 is known, and a(2) = -x, is the&lt;br&gt;
point to be evaluated.&lt;br&gt;
&lt;br&gt;
y(n) = p(n) - x*y(n-1)&lt;br&gt;
&lt;br&gt;
This is a difference equation. Start out with n = 1.&lt;br&gt;
&lt;br&gt;
y(1) = p(1) + x*y(0)&lt;br&gt;
&lt;br&gt;
Define y(0) = 0. So y(1) = p(1). Step forwards in&lt;br&gt;
the loop. When n = 2, what happens?&lt;br&gt;
&lt;br&gt;
y(2) = p(2) + x*y(1) = p(2) + x*p(1)&lt;br&gt;
&lt;br&gt;
Look at n = 3. &lt;br&gt;
&lt;br&gt;
y(3) = p(3) + x*y(2) = p(3) + x*(p(2) + x*p(1))&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= p(3) + P92)*x + p(1)*x^2&lt;br&gt;
&lt;br&gt;
Continue until we run out of polynomial coefficients.&lt;br&gt;
&lt;br&gt;
See that it really is just Horner's rule, implemented&lt;br&gt;
as a recursive filter.&lt;br&gt;
&lt;br&gt;
John</description>
    </item>
    <item>
      <pubDate>Tue, 16 Jun 2009 21:35:08 -0400</pubDate>
      <title>Re: Question on evaluating polynomials/polyval</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/253875#657937</link>
      <author>Adam Attarian</author>
      <description>On Jun 16, 4:49&#160;pm, &quot;John D'Errico&quot; &amp;lt;woodch...@rochester.rr.com&amp;gt;&lt;br&gt;
wrote:&lt;br&gt;
&amp;gt; adam &amp;lt;adam.attar...@gmail.com&amp;gt; wrote in message &amp;lt;d8a640f2-ec55-4e7c-bc30-ef3249f46...@j12g2000vbl.googlegroups.com&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt; So the main method that is used by programs/computers to evaluate&lt;br&gt;
&amp;gt; &amp;gt; polynomials is Horner's Method. That's cool...but i was reading&lt;br&gt;
&amp;gt; &amp;gt; polyval.m, Matlab's polynomial evaluator, and noticed:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; % Make it scream for scalar x. &#160;Polynomial evaluation can be&lt;br&gt;
&amp;gt; &amp;gt; % implemented as a recursive digital filter.&lt;br&gt;
&amp;gt; &amp;gt; y = filter(1,[1 -x],p);&lt;br&gt;
&amp;gt; &amp;gt; y = y(nc);&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; Here x is the point of evaluation and p is a vector of polynomial&lt;br&gt;
&amp;gt; &amp;gt; coefficients. I've tried to work out the filter equation and see how&lt;br&gt;
&amp;gt; &amp;gt; poly evaluation is a filter, but I don't see it. Can anyone help?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; Thanks!&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Here is a fragment from the help to filter.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Y = FILTER(B,A,X) filters the data in vector X with the&lt;br&gt;
&amp;gt; &#160; &#160; filter described by vectors A and B to create the filtered&lt;br&gt;
&amp;gt; &#160; &#160; data Y. &#160;The filter is a &quot;Direct Form II Transposed&quot;&lt;br&gt;
&amp;gt; &#160; &#160; implementation of the standard difference equation:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &#160; &#160; a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)&lt;br&gt;
&amp;gt; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; - a(2)*y(n-1) - ... - a(na+1)*y(n-na)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Now, look at how filter is called.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; B = 1&lt;br&gt;
&amp;gt; A = [1, -x]&lt;br&gt;
&amp;gt; X = p&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; So the vector X is our list of polynomial coefficients.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; a(1) * y(n) = b(1)*p(n) - a(2)*y(n-1)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; We have B = 1,&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; a(1) * y(n) = p(n) - a(2)*y(n-1)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Likewise, a(1) = 1 is known, and a(2) = -x, is the&lt;br&gt;
&amp;gt; point to be evaluated.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; y(n) = p(n) - x*y(n-1)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; This is a difference equation. Start out with n = 1.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; y(1) = p(1) + x*y(0)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Define y(0) = 0. So y(1) = p(1). Step forwards in&lt;br&gt;
&amp;gt; the loop. When n = 2, what happens?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; y(2) = p(2) + x*y(1) = p(2) + x*p(1)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Look at n = 3.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; y(3) = p(3) + x*y(2) = p(3) + x*(p(2) + x*p(1))&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &#160; &#160; &#160; = p(3) + P92)*x + p(1)*x^2&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Continue until we run out of polynomial coefficients.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; See that it really is just Horner's rule, implemented&lt;br&gt;
&amp;gt; as a recursive filter.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; John&lt;br&gt;
&lt;br&gt;
Thanks John; this helped clear things up.&lt;br&gt;
&lt;br&gt;
Adam</description>
    </item>
  </channel>
</rss>

