Hi folks, I wanted to share a technique I came up with for evaluating sequential points of a polynomial, which is especially useful when you are drawing them. A naive approach would be evaluate the whole polynomial at each point, but the method I'll show you allows you to evaluate at a few points, and then for each subsequent point just use additions.

The basic premise is to use ##f(x)## as a starting point to get to ##f(x+1)##. For example, take ##f(x)=3+2x##. To get to ##f(x+1)##, all you have to do is add 2. Things get more complicated as you go to higher degree polynomials. For example, take ##f(x)=3+2x-3x^{2}+x^{3}##. Then to get to ##f(x+1)##, you need to add ##3x^{2}-3x##. However, you can go even further by finding how to get from ##3x^{2}-3x## to ##3(x+1)^{2}-3(x+1)##.

Now comes the theory.

Take ##f_{1}(x)=f(x+1)-f(x)## and ##f_{n+1}(x)=f_{n}(x+1)-f_{n}(x)##.

Then ##f(x+1)=f(x)+f_{1}(x)## and ##f_{n}(x+1)=f_{n}(x)+f_{n+1}(x)##.

##\begin{aligned}

f_{2}(x) &=f_{1}(x+1)-f_{1}(x),\\

&=(f(x+2)-f(x+1))-(f(x+1)-f(x)),\\

&=f(x+2)-2f(x+1)+f(x).

\end{aligned}##

##\begin{aligned}

f_{3}(x)&=f_{2}(x+1)-f_{2}(x),\\

&=(f(x+3)-2f(x+2)+f(x+1))-(f(x+2)-2f(x+1)+f(x)),\\

&=f(x+3)-3f(x+2)+3f(x+1))-f(x).

\end{aligned}##

And in general,

##f_{n}(x)=\sum_{k=0}^{n}{{n\choose k}(-1)^{k}f(x+n-k)}##

If you set ##x=0##:

##f_{n}(0)=\sum_{k=0}^{n}{{n\choose k}(-1)^{k}f(n-k)}##

So now let's take again, ##f(x)=3+2x-3x^{2}+x^{3}##.

##\begin{aligned}

f(0)&=3,\\

f_{1}(0)&=f(1)-f(0)&=0,\\

f_{2}(0)&=f(2)-2f(1)+f(0)&=0,\\

f_{3}(0)&=f(3)-3f(2)+3f(1)-f(0)&=6,\\

f_{k>3}(0)&=0.\\

\end{aligned}##

So what these values allow us to do, ##{3,0,0,6}##, is use a chain of additions to get the next value, instead of evaluating the cubic polynomial at each x:

##\begin{array}{rrrr}

[&3,&0,&0,&6]\\

[&3,&0,&6,&6]\\

[&3,&6,&12,&6]\\

[&9,&18,&18,&6]\\

[&27,&36,&24,&6]\\

[&63,&60,&30,&6]\\

[&123,&90,&36,&6]\\

[&213,&126,&42,&6]\\

...

\end{array}##

Basically, add the second element to the first, third element to the second, and fourth element to the third. The new value is the first. Repeat. So the next iteration would yield [213+126,126+42,42+6,6]=[339,168,48,6], and indeed, f(8)=339.

I'd like to apologise for how garbled this is, I'm really tired.

Also, you should note that for an n-th degree polynomial, you need to compute up to ##f_{n}(x)##, but everything after that is 0.