Adição de Polinômios em Código
Sobre a Matemática
Para somar vários polinômios, é preciso escrever todos os seus termos uns depois dos outros, cada um com seu sinal, e reduzir os termos semelhantes.
Seja o polinômio a-b, ao qual se deve acrescentar outro polinômio c-d.
Ao polinômio a-b, acrescentando c, acrescenta-se d, a mais, porque a-b deve ser aumentado só do excesso de c sobre d. A soma de a-b+c deve, pois, ser diminuída de d, e vem a ser: a-b+c-d. Este resultado legitima a regra precedente.
Para somar vários polinômios, pode-se escrevê-los uns abaixo dos outros, de modo que os termos semelhantes se correspondem, e fazer depois a redução.
Modo de indicar a adição – Para indicar a adição de vários polinômios, escreve-se cada qual entre parênteses, e depois escrevem-se estes parânteses em seguida uns aos outros, separando-os pelo sinal +. Segundo isso, para indicar a soma dos polinômios a-b+c-d, b-c+d-a, c-d+a-b, escreve-se: (a-b+c-d)+(b-c+d-a)+(c-d+a-b).
Sobre o Código
Na linguagem de programação Python,
from – é a palavra-chave usada para importar módulos ou partes específicas de um módulo.
collections – é o módulo da biblioteca padrão que fornece tipos de dados especializados, como defaultdict, Counter, etc.
import – é a palavra-chave usada para trazer módulos ou funções externas para o código.
defaultdict() – é a estrutura de dicionário que cria automaticamente valores padrão quando uma chave inexistente é acessada.
def – é a palavra-chave usada para definir uma função.
Docstring – é o texto entre aspas triplas logo após a definição de função, usado para documentar o que a função faz. Pode ser acessado pelo comando help() ou pelo atributo .__doc__.
for..in...: – é a estrutura de repetição que percorre elementos de uma sequência (lista, string, etc.).
.replace() – é o método de string que substitui partes de um texto por outro.
.split() – é o método de string que divide o texto em partes, retornando uma lista.
if: – é a estrutura condicional usada para executar código se uma condição for verdadeira.
elif: (Else if) – é usado para testar outra condição se a anterior não for verdadeira.
else: – é a parte final da estrutura condicional, executada se nenhuma condição anterior for satisfeita.
== – é o operador de comparação que verifica se dois valores são iguais.
continue – é o comando dentro de loops que pula para a próxima iteração, ignorando o restante do código atual.
.isdigit() – e o método de string que retorna True se todos os caracteres forem dígitos numéricos.
+= – é o operador de atribuição que soma um valor a uma variável existente.
.append(str) – é o método de lista que adiciona um novo elemento ao final da lista.
f"..{}" (f-string) – é a forma de interpolar variáveis dentro de strings usando {}.
.join() – é o método de string que junta elementos de uma lista em uma única string, separados por um delimitador.
print() – é a função que exibe valores ou mensagens na saída padrão (console).
# – é usado para criar comentários ao código, que são notas para se entender melhor o que o código faz.
Vamos ao código…
from collections import defaultdict
def somar_polinomios(*polinomios):
"""
Recebe vários polinômios (como strings) e retorna a soma reduzida.
Exemplo: somar_polinomios("a-b+c-d", "b-c+d-a", "c-d+a-b")
"""
termos = defaultdict(int)
for polinomio in polinomios:
# Substitui sinais para facilitar separação
polinomio = polinomio.replace("-", "+-")
partes = polinomio.split("+")
for parte in partes:
if parte.strip() == "":
continue
coef = 1
var = parte.strip()
# Se começa com "-", coeficiente é -1
if var.startswith("-"):
coef = -1
var = var[1:]
# Se for só número, trata como constante
if var.isdigit():
termos["constante"] += coef * int(var)
else:
termos[var] += coef
# Monta resultado
resultado = []
for var, coef in termos.items():
if coef == 0:
continue
if var == "constante":
resultado.append(str(coef))
else:
if coef == 1:
resultado.append(var)
elif coef == -1:
resultado.append(f"-{var}")
else:
resultado.append(f"{coef}{var}")
return "+".join(resultado).replace("+-", "-")
# Exemplo de uso
print(somar_polinomios("a-b+c-d", "b-c+d-a", "c-d+a-b"))| Código Python (.py) | O que faz |
| from collections import defaultdict | Importa defaultdict, uma estrutura de dicionário que cria valores padrão automaticamente (neste caso, usado para somar coeficientes dos termos). |
| def somar_polinomios(*polinomios): | Define a função somar_polinomios, que recebe vários polinômios como argumentos (strings). |
| “”” Recebe vários polinômios… “”” | Docstring explicando o que a função faz e dando um exemplo de uso. |
| termos = defaultdict(int) | Cria um dicionário onde cada chave (variável ou constante) começa com valor 0. Isso permite somar coeficientes facilmente. |
| for polinomio in polinomios: | Inicia um loop para percorrer cada polinômio fornecido como argumento. |
| polinomio = polinomio.replace(“-“, “+-“) | Substitui sinais de menos por +- para facilitar a separação dos termos. |
| partes = polinomio.split(“+”) | Divide o polinômio em uma lista de termos separados pelo sinal +. |
| for parte in partes: | Loop para analisar cada termo da lista partes. |
| if parte.strip() == “”: continue | Ignora termos vazios (que podem aparecer após a divisão). |
| coef = 1 | Define coeficiente inicial como 1. |
| var = parte.strip() | Remove espaços extras do termo atual. |
| if var.startswith(“-“): | Verifica se o termo começa com -. |
| coef = -1 | Se começar com -, define coeficiente como -1. |
| var = var[1:] | Remove o sinal – da frente da variável. |
| if var.isdigit(): | Verifica se o termo é apenas um número (constante). |
| termos[“constante”] += coef * int(var) | Se for número, soma ao termo especial “constante”. |
| else: | Caso contrário, o termo é uma variável (ex.: a, b, c). |
| termos[var] += coef | Soma o coeficiente da variável correspondente no dicionário. |
| resultado = [] | Cria uma lista para armazenar os termos finais do polinômio reduzido. |
| for var, coef in termos.items(): | Percorre cada variável e seu coeficiente no dicionário. |
| if coef == 0: continue | Ignora termos cujo coeficiente final seja 0. |
| if var == “constante”: | Caso seja uma constante numérica. |
| resultado.append(str(coef)) | Adiciona o valor numérico ao resultado. |
| else: | Caso seja uma variável. |
| if coef == 1: | Se coeficiente for 1, adiciona apenas a variável (ex.: a). |
| resultado.append(var) | Adiciona a variável sem número. |
| elif coef == -1: | Se coeficiente for -1, adiciona -variável. |
| resultado.append(f”-{var}”) | Adiciona termo negativo. |
| else: | Caso coeficiente seja diferente de 1 ou -1. |
| resultado.append(f”{coef}{var}”) | Adiciona termo com coeficiente explícito (ex.: 2a, -3b). |
| return “+”.join(resultado).replace(“+-“, “-“) | Junta todos os termos com + e corrige sinais redundantes (+- vira -). |
| print(somar_polinomios(“a-b+c-d”, “b-c+d-a”, “c-d+a-b”)) | Exemplo de uso: imprime a soma dos três polinômios fornecidos. |
Saída do código (valor de retorno)…
a-b+c-d
Fonte:
– Editora Didática Paulista. Ensino Didático 2000: Ensino Fundamental e Ensino Médio. Sorocaba: Editora Didática Paulista, [s.d.].
– Códigos e comentários gerados por Microsoft Copilot com revisão nossa.
– https://docs.python.org/pt-br/3/ [Documentação Oficial do Python]