Regressão Polinomial

Podemos estender os conceitos da Regressão Linear e aproximar função de grau igual a maior que 2.

A função seria dada por:

\[g(x) = a_ng_n(x) + a_{n-1}g_{n-1}(x) + \ldots + a_1g(x) \]

Ou:

\[g(x) = a_nx^n + a_{n-1}x^{n-1} + \ldots + a_1x + a_0 \]

Onde teremos o sistema linear:

Exemplo 1

Dados os pontos abaixo, iremos calcular a função de aproximação de grau 2:

x \( 0\) \( 1.5\) \( 4.5\) \( 8\) \( 9\)
y \(1\) \(-2\) \(2.5\) \(1.4\) \(-2.1\)

Construímos a tabela dos valores de \(x\):

\(i\) \(x_i\) \(x_i^2\) \(x_i^3\) \(x_i^4\)
  1 \(0\) \(0^2 = 0\) \(0^3 = 0\) \(0^4 = 0\)
  2 \(1.5\) \(1.5^2 = 2.25\) \(1.5^3 = 3.375\) \(1.5^4 = 5.0625\)
  3 \(4.5\) \(4.5^2 = 20.25\) \(4.5^3 = 91.125\) \(4.5^4 = 410.062\)
  4 \(8\) \(8^2 = 64\) \(8^3 = 512\) \(8^4 = 4096\)
  5 \(9\) \(9^2 = 81\) \(9^3 = 729\) \(9^4 = 6561\)
\(\sum\) \(\color{red}{5}\) \(\color{blue}{23}\) \(\color{green}{167.5}\) \(\color{orange}{1335.5}\) \(\color{purple}{11072.1}\)

E a tabela de valores de \(y\):

\(i\) \(x_i\) \(y_i\) \(x_iy_i\) \(x_i^2y_i\)
  \(1\) \(0\) \(1\) \(0 \times 1 = 0\) \((0^2) \times 1 = 0\)
  \(2\) \(1.5\) \(-2\) \(1.5 \times -2 = -3\) \((1.5^2) \times -2 = -4.5\)
  \(3\) \(4.5\) \(2.5\) \(4.5 \times 2.5 = 11.25\) \((4.5^2) \times 2.5 = 50.625\)
  \(4\) \(8\) \(1.4\) \(8 \times 1.4 = 11.2\) \((8^2) \times 1.4 = 89.6\)
  \(5\) \(9\) \(-2.1\) \(9 \times -2.1 = -18.9\) \((9^2) \times -2.1 = -170.1\)
\(\sum\)     \(\color{yellow}{\colorbox{black}{0.8}}\) \(\color{green}{\colorbox{black}{0.55}}\) \(\color{orange}{\colorbox{black}{-34.375}}\)

O sistema linear genérico para esse caso ficaria:

\[ \left[\begin{matrix} n & \sum{x_i} & \sum{x_i^2} \\ \sum{x_i} & \sum{x_i^2} & \sum{x_i^3} & \\ \sum{x_i^2} & \sum{x_i^3} & \sum{x_i^4} & \\ \end{matrix} \right.\left| \begin{matrix} \sum{y_i} \\ \sum{x_iy_i} \\ \sum{x_i^2y_i} \end{matrix} \right] \]

E preenchendo os valores:

\[ \left[\begin{matrix} \color{red}{5} &\color{blue}{23} &\color{green}{167.5} & \\ \color{blue}{23} &\color{green}{167.5} &\color{orange}{1335.5} & \\ \color{green}{167.5} &\color{orange}{1335.5} &\color{purple}{11072.1} & \\ \end{matrix} \right.\left| \begin{matrix} \color{yellow}{\colorbox{black}{0.8}} \\ \color{green}{\colorbox{black}{0.55}} \\ \color{orange}{\colorbox{black}{-34.375}} \\\end{matrix} \right] \]

E resolvendo o sistema, temos:

\[ \left[\begin{matrix} 1 &0 &0 & \\ 0 &1 &0 & \\ 0 &0 &1 & \\ \end{matrix} \right.\left| \begin{matrix} -0.583355 \\0.986469 \\-0.113266 \end{matrix} \right] \]

Que resulta na nossa função de interpolação:

\[g(x) = -0.11327x^2 + 0.98647x - 0.58336\]

E o resultado no gráfico:

Exemplo 2

Serão utilizados os mesmos pontos, porém iremos calcular a função de aproximação de grau 3

x \( 0\) \( 1.5\) \( 4.5\) \( 8\) \( 9\)
y \(1\) \(-2\) \(2.5\) \(1.4\) \(-2.1\)

Tabela dos valores de \(x\):

\(i\) \(x_i\) \(x_i^2\) \(x_i^3\) \(x_i^4\) \(x_i^5\) \(x_i^6\)
  1 \(0\) \(0^2 = 0\) \(0^3 = 0\) \(0^4 = 0\) \(0^5 = 0\) \(0^6 = 0\)
  2 \(1.5\) \(1.5^2 = 2.25\) \(1.5^3 = 3.375\) \(1.5^4 = 5.0625\) \(1.5^5 = 7.59375\) \(1.5^6 = 11.3906\)
  3 \(4.5\) \(4.5^2 = 20.25\) \(4.5^3 = 91.125\) \(4.5^4 = 410.062\) \(4.5^5 = 1845.28\) \(4.5^6 = 8303.77\)
  4 \(8\) \(8^2 = 64\) \(8^3 = 512\) \(8^4 = 4096\) \(8^5 = 32768\) \(8^6 = 262144\)
  5 \(9\) \(9^2 = 81\) \(9^3 = 729\) \(9^4 = 6561\) \(9^5 = 59049\) \(9^6 = 531441\)
\(\sum\) \(\color{red}{5}\) \(\color{blue}{23}\) \(\color{green}{167.5}\) \(\color{orange}{1335.5}\) \(\color{purple}{11072.1}\) \(\color{Maroon}{93669.9}\) \(\color{RedViolet}{801900}\)

Tabela de valores de \(y\):

\(i\) \(x_i\) \(y_i\) \(x_iy_i\) \(x_i^2y_i\) \(x_i^3y_i\)
  \(1\) \(0\) \(1\) \(0 \times 1 = 0\) \((0^2) \times 1 = 0\) \((0^3) \times 1 = 0\)
  \(2\) \(1.5\) \(-2\) \(1.5 \times -2 = -3\) \((1.5^2) \times -2 = -4.5\) \((1.5^3) \times -2 = -6.75\)
  \(3\) \(4.5\) \(2.5\) \(4.5 \times 2.5 = 11.25\) \((4.5^2) \times 2.5 = 50.625\) \((4.5^3) \times 2.5 = 227.812\)
  \(4\) \(8\) \(1.4\) \(8 \times 1.4 = 11.2\) \((8^2) \times 1.4 = 89.6\) \((8^3) \times 1.4 = 716.8\)
  \(5\) \(9\) \(-2.1\) \(9 \times -2.1 = -18.9\) \((9^2) \times -2.1 = -170.1\) \((9^3) \times -2.1 = -1530.9\)
\(\sum\)     \(\color{yellow}{\colorbox{black}{0.8}}\) \(\color{green}{\colorbox{black}{0.55}}\) \(\color{orange}{\colorbox{black}{-34.375}}\) \(\color{SpringGreen}{\colorbox{black}{-593.038}}\)

Construindo a matriz do sistema linear:

\[ \left[\begin{matrix} n & \sum{x_i} & \sum{x_i^2} & \sum{x_i^3} \\ \sum{x_i} & \sum{x_i^2} & \sum{x_i^3} & \sum{x_i^4} \\ \sum{x_i^2} & \sum{x_i^3} & \sum{x_i^4} & \sum{x_i^5} \\ \sum{x_i^3} & \sum{x_i^4} & \sum{x_i^5} & \sum{x_i^6} \\ \end{matrix} \right.\left| \begin{matrix} \sum{y_i} \\ \sum{x_iy_i} \\ \sum{x_i^2y_i} \\ \sum{x_i^3y_i} \end{matrix} \right] \]

Com os valores:

\[ \left[\begin{matrix} \color{red}{5} &\color{blue}{23}\ &\color{green}{167.5} &\color{orange}{1335.5} & \\ \color{blue}{23}\ &\color{green}{167.5} &\color{orange}{1335.5} &\color{purple}{11072.1}1 & \\ \color{green}{167.5} &\color{orange}{1335.5} &\color{purple}{11072.1} &\color{Maroon}{93669.9} & \\ \color{orange}{1335.5} &\color{purple}{11072.1} &\color{Maroon}{93669.9} &\color{RedViolet}{801900} & \\ \end{matrix} \right.\left| \begin{matrix} \color{yellow}{\colorbox{black}{0.8}} \\ \color{green}{\colorbox{black}{0.55}} \\ \color{orange}{\colorbox{black}{-34.375}} \\ \color{SpringGreen}{\colorbox{black}{-593.038}} \end{matrix} \right] \]

E resolvendo o sistema, temos:

\[ \left[\begin{matrix} 1 &0 &0 &0 & \\ 0 &1 &0 &0 & \\ 0 &0 &1 &0 & \\ 0 &0 &0 &1 & \\ \end{matrix} \right.\left| \begin{matrix} 0.805668 \\-3.19947 \\1.22967 \\-0.101543 \\\end{matrix} \right] \]

Que resulta na nossa função de interpolação:

\[g(x) = -0.10154x^3 + 1.2297x^2 - 3.1995x + 0.80567\]

E o gráfico:

Dica de programação em HP PPL

Para realizar as somas em HP PPL, foi implementado o programa:

EXPORT Somatorias()
BEGIN
  LOCAL graus := 3; // Grau desejado na função de aproximação
  LOCAL i, j;
  M1:=[[0, 1.5, 4.5, 8, 9],
        [1,−2, 2.5, 1.4, −2.1]];
  M8:=[[0]]; // Local de armazenamento dos valores de X
  M9:=[[0]]; // Local de armazenamento dos valores de Y

  FOR i FROM 1 TO 5 DO // 5 linhas
            FOR j FROM 0 TO graus * 2 DO
                IF (M1(1, i) = 0 AND j = 0) THEN
                    M8(i, j+1) := 1;
                ELSE
                    M8(i, j+1) := M1(1, i) ^ j;
                END;
            END; 

            FOR j FROM 0 TO graus DO
                IF (M1(1, i) = 0 AND j = 0) THEN
                    M9(i, j+1) := M1(2, i);
                ELSE
                    M9(i, j+1) := M1(2, i) *  M1(1, i) ^ j;
                END;    
            END; 
        END;
  L1 := CAS.ΣLIST(M8); //Armazena os valores das somatórias de X na lista da calculadora L1
  L2 := CAS.ΣLIST(M9); // E de Y em L2
END;

Atividade

Dado os pontos, determine a função de aproximação solicitada para cada item

  • Função de Grau 2 para os pontos:

    x \( 2\) \( 4\) \( 10\) \( 14\)
    y \(2\) \(10.4\) \(21.1\) \(26.5\)
  • Função de Grau 3

    x \( 3\) \( 11\) \( 13\) \( 23\) \( 25\) \( 32\)
    y \(-22\) \(-257.6\) \(-347.2\) \(-1078.6\) \(-1271.7\) \(-2083.1\)
  • Função de Grau 4

    x \( -2\) \( 4\) \( 7\) \( 14\) \( 16\)
    y \(-18\) \(94.9\) \(571.3\) \(5071.9\) \(7649.7\)