Acessibilidade / Reportar erro

Uma generalização do polinômio dos quadrados mínimos condicionado

A generalization of the constrained least squares polynomial

Resumos

Este artigo descreve um programa de computador em MATLAB para a obtenção de um polinômio de ajuste dos quadrados mínimos, condicionado a passar por um conjunto arbitrário de nodos de ancoramento, contanto que ainda retenha um conveniente número de graus de liberdade.

ajustamento; quadrados mínimos; condicionamento


The article describes a computer program in MATLAB for obtaining a least-squares polynomial fit, constrained to pass through an arbitrary set of anchorage nodes, provided a sufficient number of freedom degrees is retained.

data fitting; least squares; constraint


NOTAS E DISCUSSÕES

Uma generalização do polinômio dos quadrados mínimos condicionado

A generalization of the constrained least squares polynomial

Oclide J. Dotto; Adalberto A. Dornelles Filho1 1 E-mail: aadornef@ucs.br.

Departamento de Matemática e Estatística, Universidade de Caxias do Sul, Caxias do Sul, RS, Brasil

RESUMO

Este artigo descreve um programa de computador em MATLAB para a obtenção de um polinômio de ajuste dos quadrados mínimos, condicionado a passar por um conjunto arbitrário de nodos de ancoramento, contanto que ainda retenha um conveniente número de graus de liberdade.

Palavras-chave: ajustamento, quadrados mínimos, condicionamento.

ABSTRACT

The article describes a computer program in MATLAB for obtaining a least-squares polynomial fit, constrained to pass through an arbitrary set of anchorage nodes, provided a sufficient number of freedom degrees is retained.

Keywords: data fitting, least squares, constraint.

1. Introdução

Em recente artigo [1] mostramos que é possível determinar um polinômio de ajuste dos quadrados mínimos (QM) preestabelecendo que contenha um nodo de ancoramento (um ponto fixado; a origem, por exemplo). Chamamos a um polinômio de ajuste desse tipo de polinômio dos quadrados mínimos condicionado (PQMC) ou ancorado. Nos comentários finais do citado artigo dissemos que se poderia tentar desenvolver um algoritmo que obrigue o polinômio a passar por um conjunto arbitrário de nodos de ancoramento, contanto que ainda retenha um número de graus de liberdade suficientemente elevado. Recentemente conseguimos obter um algoritmo para o PQMC com um número t qualquer de nodos de ancoramento. A Fig. 1 ilustra um exemplo de ajustamento do PQMC de ordem m = 4 ancorado em t = 2 nodos.


2. Algoritmo

Segue o algoritmo, implementado na linguagem do MATLAB. Para auxiliar a compreensão, intercalamos explicações detalhadas de diversos passos desse algoritmo.

O algoritmo tem, como dados de entrada, os vetores das abscissas x = [x1, ..., xn]T e ordenadas y = [y1, ..., yn]T dos n dados (dados experimentais, por exemplo), os vetores das abscissas u = [u1, ...,ut]T e ordenadas w = [w1, ..., wt]T dos t nodos de ancoramento (pontos que certamente pertencem à função teórica, por exemplo) e a ordem m do PQMC

P(x) = p1xm + p2xm-1 + ··· + pmx + pm+1,

a determinar. Quase sempre a ordem coincide com o grau do polinômio, mas algumas vezes, muito raramente, o grau é menor que a ordem; isso acontece quando é nulo o coeficiente p1.

No MATLAB, o comando length(x) determina o tamanho (número de componentes) do vetor x. Para que haja algum grau de liberdade do ajustamento polinomial ancorado, a ordem m do PQMC não deve ser menor que o número t de nodos de ancoramento. Por exemplo, se t = 2, então o polinômio deve ter grau m > 2, pois m = 1 determinaria a reta passando pelos 2 nodos, sem liberdade para o ajustamento.

O PQMC procurado pode ser escrito na forma

P(x) = Q(x) R(x) + S(x),

onde

S(x) = s1xt-1 + s2xt-2 + ··· + st-1x + st

é o polinômio interpolador pelos nodos de ancoramento com ordem t-1 e

R(x) = (x - u1) (x - u2) ··· (x - ut)

é um polinômio auxiliar. Já

Q(x) = q1xm-t + q2xm-t-1 + ··· + qm-tx + qm-t+1

é um polinômio de ajuste dos QM livre de ordem m -t.

Por construção, tanto R(x) quanto S(x) não possuem graus de liberdade, pois estão ancorados aos nodos u1, ...,ut. Já o polinômio de ajuste Q(x) possui m - t + 1 graus de liberdade que são, de fato, os graus de liberdade de P(x). Se, para i = 1, ..., t, temos R(ui) = 0, então P(ui) = S(ui), de forma que P(x) fica também ancorado aos nodos u1, ..., ut.

Inicialmente, determinamos os coeficientes s1, ..., st do polinômio interpolador S(x). No MATLAB, o comando vander(u) constrói, a partir do vetor u, a matriz de Vandermonde

e o comando s = V\w fornece a solução2 2 No MATLAB, o comando ''\'' fornece solução dos QM de um sistema linear A x = b. Um sistema linear pode não ter solução clássica, mas sempre tem solução dos QM. A solução dos QM é obtida pela resolução da equação normal A T A x = A T b. Essa solução dos QM é única quando A tem colunas linearmente independentes (seja A quadrada ou não). No caso de infinitas soluções de QM, a solução encontrada pelo MATLAB é a de menor norma. Importante: A solução dos QM coincide com a solução clássica quando esta existe. O sistema linear V s = w é determinado, isto é, possui uma única solução (clássica). Já o sistema linear a q = b é sobredeterminado, isto é, possui apenas solução dos QM. (clássica) do sistema linear V s = w.

Determinamos os coeficientes q1, ..., qm-t+1 do polinômio dos QM livre Q(x) observando que

Q(xi) R(xi) + S(xi) = yi, i = 1, ···, n,

e que esse conjunto de equações constitui um sistema linear sobredeterminado que deve ser resolvido no sentido dos QM. Ele pode ser reescrito como

Q(xi) R(xi) = yi – S(xi), i = 1, ···, n,

ou ainda,

Com o comando polyval(s, x(i)) efetuamos o cálculo de S(xi). Então montamos o sistema linear A q = b, onde

e

O comando q = A\b obtém a solução dos QM do sistema linear A q = b.

Finalmente obtemos os coeficientes p1, ..., pm+1 de P(x). Inicialmente, pela convolução dos vetores p e [ 1, -ui ]T executada pelo comando conv(p, [1; -u(i)]) e, em seguida, pela soma (devidamente deslocada) do vetor s. Isso é equivalente às operações polinomiais em Q(x)R(x) + S(x).

3. Ancoramento em um único nodo

O método descrito acima é geral. Como caso particular, temos o ajustamento condicionado a conter um único nodo (u1,w1); nesse caso o PQMC é da forma

P(x) = Q(x) (x - u1) + w1

onde Q(x) = q1xm-1 + q2xm-2 + ... + qm-1x +qm é um polinômio de ajuste de ordem m-1. Obtemos os coeficientes q1, ..., qm de Q(x) pela resolução (no sentido dos QM) do sistema linear A q = b, onde

4. Conclusão

O programa que acabamos de descrever é melhor que o programa polqmcond do referido artigo pelo fato de ser uma generalização deste, e, além disso, usar apenas cálculos numéricos (enquanto o último usa também cálculos simbólicos), o que o torna mais rápido e portável, isto é, pode ser convertido em outra linguagem mais facilmente. Os comandos específicos do MATLAB podem ser implementados pelo usuário, ou mesmo, podem já estar disponíveis em bibliotecas (LAPACK, por exemplo).

Recebido em 28/11/2006; Aceito em 19/3/2007

  • [1] Oclide J. Dotto e Adalberto A. Dornelles Filho, Revista Brasileira de Ensino de Física 28, 397 (2006).
  • 1
    E-mail:
  • 2
    No MATLAB, o comando ''\'' fornece solução dos QM de um sistema linear
    A x =
    b. Um sistema linear
    pode não ter solução clássica, mas
    sempre tem solução dos QM. A solução dos QM é obtida pela resolução da equação normal
    A
    T
    A x =
    A
    T
    b. Essa solução dos QM é
    única quando
    A tem colunas linearmente independentes (seja
    A quadrada ou não). No caso de infinitas soluções de QM, a solução encontrada pelo MATLAB é a de menor norma. Importante:
    A solução dos QM coincide com a solução clássica quando esta existe. O sistema linear
    V s =
    w é determinado, isto é, possui uma única solução (clássica). Já o sistema linear
    a q =
    b é sobredeterminado, isto é, possui apenas solução dos QM.
  • Datas de Publicação

    • Publicação nesta coleção
      07 Dez 2007
    • Data do Fascículo
      2007

    Histórico

    • Aceito
      19 Mar 2007
    • Recebido
      28 Nov 2006
    Sociedade Brasileira de Física Caixa Postal 66328, 05389-970 São Paulo SP - Brazil - São Paulo - SP - Brazil
    E-mail: marcio@sbfisica.org.br