30  Divisibilidade de polinômios e o Teorema de Divisão

30.1 Divisibilidade entre polinômios

Definição 30.1 Seja \(R\) um anel e sejam \(f(x),g(x)\in R[x]\). Dizemos que \(f(x)\) divide \(g(x)\), ou que \(g(x)\) é divisível por \(f(x)\) ou que \(g(x)\) é um múltiplo de \(f(x)\) se existir \(h(x)\in R[x]\) tal que \(f(x)h(x)=g(x)\). Quando \(f(x)\) divide \(g(x)\), escrevemos que \(f(x)\mid g(x)\)

Exemplo 30.1 Podemos dizer por exemplo que \(x+1\mid x^2-1\) considerando estes polinômios, por exemplo, em \(\Z[x]\). De fato \(x^2-1=(x-1)(x+1)\). Note que a divisibilidade entre dois polinômios depende do anel \(R\) de coeficientes. Por exemplo se \(f(x)=2x+2\) e \(g(x)=x^2-1\) são polinômios em \(\Q[x]\), então \(f(x)\mid g(x)\), pois \(g(x)=f(x)h(x)\) onde \(h(x)=(1/2)(x-1)\). Por outro lado, se consideramos estes polinômios em \(\Z[x]\) então \(f(x)\nmid g(x)\)

As propriedades principais da divisibilidade entre polinômios são as mesmas que entre números inteiros. No seguinte lema nós resumimos as propriedades mais importantes. Pode notar que o conceito da divisibilidade pode ser definido em um anel arbitrário (e não apenas nos anéis \(\Z\) ou \(R[x]\)), mas nós não vamos fazer isso nesta disciplina.

Lema 30.1 Seja \(R\) um anel, sejam \(f(x),g(x),h(x)\in R[x]\). As seguintes afirmações são válidas.

  • \(f(x)\mid f(x)\).
  • Se \(f(x)\mid g(x)\) e \(g(x)\mid h(x)\) então \(f(x)\mid h(x)\).
  • Se \(R\) é um domínio, \(f(x)\mid g(x)\) e \(g(x)\mid f(x)\), então existe algum \(\alpha\in R\) invertível tal que \(g(x)=\alpha f(x)\).

Comprovação. (1), (2): Exercício.

  1. Assuma que \(R\) é um domínio, \(f(x)\mid g(x)\) e \(g(x)\mid f(x)\). Se \(f(x)=0\), então \(g(x)=0\) e a afirmação está verdadeira. Assuma agora que \(f(x)\neq 0\). Então existem \(q_1(x),q_2(x)\) tais que \(g(x)=f(x)q_1(x)\) e \(f(x)=g(x)q_2(x)\). Logo \[ f(x)=q_2(x)g(x)=q_2(x)q_1(x)f(x). \] Como \(R\) é um domínio, \(R[x]\) também é, e como \(f(x)\) é não nulo aplica-se a lei cancelativa que implica que \(1=q_2(x)q_1(x)\). Agora a definição de elementos invertíveis implica que \(q_1(x)\) e \(q_2(x)\) são invertíveis em \(R[x]\) e obtemos de um lema anterior que \(q_1(x)\) e \(q_2(x)\) são elementos invertíveis de \(R\).

30.2 O Teorema de Divisão para polinômios

Exemplo 30.2 Considere \(f(x)=x^3-2x^2+x-1\) e \(g(x)=x^2-1\) como polinômios em \(\Q[x]\). Usando o método bem conhecido do ensino médio, pode-se calcular o quociente de \(f(x)\) por \(g(x)\) e o resto: \[\begin{align*} &x^3-2x^2+x-1 : x^2-1 = x-2\\ &- [x^3-x] \\\hline &-2x^2+2x-1\\ -& [-2x^2+2]\\\hline &2x-3 \end{align*}\] Obtemos que \[ f(x)=(x-2)g(x)+(2x-3) \] Pode-se dizer que o quociente de \(f(x)\) por \(g(x)\) é \(x-2\) e o resto de \(f(x)\) por \(g(x)\) é \(2x-3\)

A conta que fizemos no exemplo anterior nos lembra da Teorema de Divisão de Euclides que enunciamos na primeira parte da disciplina para números inteiros. De fato, existe um teorema análogo para polinômios que vamos enunciar e provar nesta página.

Teorema 30.1 (Teorema de Divisão de Euclides para Polinômios) Seja \(\F\) um corpo (por exemplo \(\Q\), \(\R\), \(\C\), ou \(\Z_p\) com \(p\) primo) e assuma que \(f(x),g(x)\in \F[x]\) com \(g(x)\neq 0\). Então existem unicamente polinômios \(q(x),r(x)\in \F[x]\) tais que \[ f(x)=q(x)g(x)+r(x)\quad\mbox{e}\quad r(x)=0\mbox{ ou }\grau{r(x)} < \grau{g(x)}. \]

Comprovação. Existência: Vamos provar a existência por indução no grau de \(f(x)\). Se \(f(x)=0\), então pode-se tomar \(q(x)=r(x)=0\). Assuma então que \(f(x)\neq 0\) e seja \(k=\grau{f(x)}\). Se \(k=0\), então \(f(x)\) é constante; por exemplo \(f(x)=\alpha\) onde \(\alpha\in\F\). Se \(\grau{g(x)}=0\) então \(g(x)=\beta\) com \(\beta\in \F\) e pode tomar \(q(x)=\alpha/\beta\) e \(r(x)=0\). Se \(\grau{g(x)} > 0\), então podemos tomar \(q(x)=0\) e \(r(x)=f(x)=\alpha\). É fácil verificar que estas escolhas para \(q(x)\) e \(r(x)\) satisfazem a equação no teorema.

Assuma agora que \(k\geq 0\) e que a afirmação da existência no teorema está válida para polinômios \(f(x),g(x)\in\F[x]\) com \(g(x)\neq 0\) e \(\grau{f(x)} < k\). Seja \(f(x)\) um polinômio de grau \(k\). Se \(\grau{g(x)} > \grau{f(x)}\) então podemos tomar \(q(x)=0\) e \(r(x)=f(x)\). Assuma então que \(\grau{g(x)}\leq \grau{f(x)}\). Assuma que \[\begin{align*} f(x)&=\alpha_k x^k+\mbox{termos de menor grau};\\ g(x)&=\beta_\ell x^\ell+\mbox{termos de menor grau}; \end{align*}\] com \(\alpha_k,\beta_\ell\in\F\setminus\{0\}\). Considere \[ f_1(x)=f(x)-(\alpha_k/\beta_\ell)x^{k-\ell}g(x). \] Temos que \(\grau{f_1(x)} < \grau{f(x)}\) então a hipótese da indução se aplica para \(f_1(x)\) e podemos escrever \[ f_1(x)=q_1(x)g(x)+r(x) \] onde \(r(x)=0\) ou \(\grau{r(x)} < \grau{g(x)}\). Ora, obtemos que \[\begin{align*} f(x)&=f_1(x)+(\alpha_k/\beta_m)x^{k-\ell}g(x)\\&=q_1(x)g(x)+r(x)+(\alpha_k/\beta_m)x^{k-\ell}g(x)\\&= (q_1(x)+(\alpha_k/\beta_m)x^{k-\ell})g(x)+r(x). \end{align*}\] Podemos tomar então \(q(x)=q_1(x)+(\alpha_k/\beta_m)x^{k-\ell}\) e \(r(x)\) como acima.

Unicidade: Assuma que temos para algum \(f(x),g(x)\in\F[x]\) com \(g(x)\neq 0\) que \[ f(x)=q_1(x)g(x)+r_1(x)=q_2(x)g(x)+r_2(x) \] com \(r_1(x)=0\) ou \(\grau{r_1(x)} < \grau{g(x)}\) e \(r_2(x)=0\) ou \(\grau{r_2(x)} < \grau{g(x)}\). A equação acima implica que \[ (q_1(x)-q_2(x))g(x)=r_2(x)-r_1(x). \] O lado esquerdo desta equação é um polinômio que ou é igual a zero ou seu grau é maior ou igual a grau de \(g(x)\). No lado direito, temos um polinômio que é ou zero ou seu grau é menor que o grau de \(g(x)\). Isso é possível apenas quando os polinômios nos dois lados da equação são iguais a zero. Ou seja, \[ (q_1(x)-q_2(x))g(x)=0. \] Como \(\F[x]\) é um domínio e \(g(x)\neq 0\), temos que \(q_1(x)-q_2(x)=0\); ou seja \(q_1(x)=q_2(x)\). Denotando \(q_1(x)=q_2(x)=q(x)\), obtemos que \[ f(x)=q(x)g(x)+r_1(x)=q(x)g(x)+r_2(x), \] mas isso implica que \(r_1(x)=r_2(x)\). Obtivemos assim que a decomposição de \(f(x)\) é única.

Definição 30.2 O polinômio \(q(x)\) no teorema anterior chama-se o quociente de \(f(x)\) por \(g(x)\), enquanto \(r(x)\) chama-se o resto

A biblioteca SymPy da linguagem Python pode ser usada para fazer computações com polinômios. Vamos por exemplo refazer o exemplo no início desta página em Python.

>>> from sympy import poly, QQ
>>> from sympy.abc import x
>>> f = poly( x**3-2*x**2+x-1, domain = QQ )
>>> g = poly( x**2-1, domain = QQ )
>>> f//g
Poly(x−2,x,domain=ℚ)
>>> f % g 
Poly(2x3,x,domain=ℚ)
>>> g*(f//g)+f%g  == f
True