top of page

Código para solução de equações polinomiais do 3° grau

Para os amantes de programação científica em Python, disponibilizo aqui um código que resolve equações polinomiais do 3° grau pela combinação entre a famosa fórmula de Bhaskara, o método de Newton-Raphon e o processo de divisão de polinômios.

O mais adequado para obtenção direta das raízes desse tipo de equação seria a implementação de um código que se utiliza da fórmula de Cardano. No entanto, o objetivo da estratégia adotada no código aqui disponibilizado é testar as potencialidades de soluções numéricas combinadas com soluções analíticas.

Segue o código em Python 3:

#-*-coding:utf8;-*- #qpy:3 #qpy:console print ('Formato geral da equacao de 3° grau é ax^3+bx^2+cx+d=0') a=input('Digite o valor de a: ') a=float(a) #Converte o texto num valor numérico real b=input('Digite o valor de b: ') b=float(b) #Converte o texto num valor numérico real c=input('Digite o valor de c: ') c=float(c) #Converte o texto num valor numérico real d=input('Digite o valor de d: ') d=float(d) #Converte o texto num valor numérico real

# Newton Raphson x0=(2**0.5) i = 0 MF = 1.0 while (MF > 10**(-17)): F = a*x0**3 + b*x0**2 + c*x0 + d dF = 3*a*x0**2 + 2*b*x0 + c if dF == 0.0: x1 = x0 - F/(dF + 10**(-13)) else: x1 = x0 - F/dF F = a*x1**3 + b*x1**2 + c*x1 + d MF = abs(F) i=i+1 x0=x1 if i > 500: print ("Não convergiu") break print("x1 = ", x0)

# Divisao de polinômios A = a B = a*x0 + b C = a*x0**2 + b*x0 + c

# Solução Equação de 2 grau # Calculo do valor delta delta = B**2 - 4*A*C if delta>=0: x1=(-B-delta**0.5)/(2*A) x2=(-B+delta**0.5)/(2*A) print ('x2 = ', x1) print ('x3 = ', x2) elif delta<0: raizdelta=complex(0,abs(delta)) x1=(-B-raizdelta)/(2*A) x2=(-B+raizdelta)/(2*A) print ('x2 = ', x1) print ('x3 = ', x2)

Descrição geral:

A primeira parte do código consiste na entrada dos valores dos coeficientes da equação.

De uma equação do terceiro grau espera-se pelo menos uma raiz real, por isso a segunda parte refere-se ao método numérico de Newton-Raphson para obtenção de raízes reais . Entretanto, o método não está na sua formulação geral, pois foi adaptado para lidar apenas com equações do terceiro grau. A terceira parte consiste em reduzir a ordem do polinômio para o segundo grau utilizando-se a raiz real por meio da divisão de polinômios . A quarta e última parte consiste na solução clássica de Bhaskara para se encontrar as duas raízes restantes.

Limitações:

Para os coeficientes (b) = (c) = (d) = 0 e o coeficiente (a) diferente de zero, os valores de x não resultam em exatamente zero. A solução numérica gera um pequeno erro que traz como resultado um valor de x pequeno, mas diferente de zero. Neste caso é indicado apertar a tolerância para valores bem pequenos.

Clique aqui e baixe o arquivo do programa na extensão *.py*

Bom é isso!

Boa diversão!

Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags
Siga
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square

© 2025 por MECSOLTECH.

  • YouTube Social  Icon
  • LinkedIn Social Icon
bottom of page