def explog(a,n):
if not n:return 1
if not n%2:
exp = explog(a,n//2)
return exp * exp
return a * explog(a, n-1)
def evaluarPol(coeficientes,x):
cont= 0
grado = len(coeficientes) - 1
for i in range(grado + 1):
cont += coeficientes[i]*explog(x, grado - i)
return cont
def solucion_polynomio(coeficientes,rango=(-100,100),err=0.000001):
a, b = rango
if evaluarPol(coeficientes,a)* evaluarPol(coeficientes,b) > 0:return []
L= []
while b-a >= err:
m =(a+b)/2
if not evaluarPol(coeficientes,m):
L.append(m)
a=m
b=m
if evaluarPol(coeficientes,m)*evaluarPol(coeficientes, a)< 0:
b=m
else:a = m
L.append((a+b)/2)
return L
# Ejemplo de uso
coeficientes = [3, 2, 6, 2]
print("Coeficientes del polinomio:", coeficientes)
print("Soluciones:", solucion_polynomio(coeficientes))
ZGVmIGV4cGxvZyhhLG4pOgogICAgaWYgbm90IG46cmV0dXJuIDEKICAgIGlmIG5vdCBuJTI6CiAgICAgICAgZXhwID0gZXhwbG9nKGEsbi8vMikKICAgICAgICByZXR1cm4gZXhwICogZXhwCiAgICByZXR1cm4gYSAqIGV4cGxvZyhhLCBuLTEpCgpkZWYgZXZhbHVhclBvbChjb2VmaWNpZW50ZXMseCk6CiAgICBjb250PSAwCiAgICBncmFkbyA9IGxlbihjb2VmaWNpZW50ZXMpIC0gMQogICAgZm9yIGkgaW4gcmFuZ2UoZ3JhZG8gKyAxKToKICAgICAgICBjb250ICs9IGNvZWZpY2llbnRlc1tpXSpleHBsb2coeCwgZ3JhZG8gLSBpKQogICAgcmV0dXJuIGNvbnQKICAgIApkZWYgc29sdWNpb25fcG9seW5vbWlvKGNvZWZpY2llbnRlcyxyYW5nbz0oLTEwMCwxMDApLGVycj0wLjAwMDAwMSk6CiAgICBhLCBiID0gcmFuZ28KICAgIGlmIGV2YWx1YXJQb2woY29lZmljaWVudGVzLGEpKiBldmFsdWFyUG9sKGNvZWZpY2llbnRlcyxiKSA+IDA6cmV0dXJuIFtdICAKICAgIEw9IFtdCiAgICB3aGlsZSBiLWEgPj0gZXJyOgogICAgICAgIG0gPShhK2IpLzIKICAgICAgICBpZiBub3QgZXZhbHVhclBvbChjb2VmaWNpZW50ZXMsbSk6CiAgICAgICAgICAgIEwuYXBwZW5kKG0pCiAgICAgICAgICAgIGE9bQogICAgICAgICAgICBiPW0KICAgICAgICBpZiBldmFsdWFyUG9sKGNvZWZpY2llbnRlcyxtKSpldmFsdWFyUG9sKGNvZWZpY2llbnRlcywgYSk8IDA6CiAgICAgICAgICAgIGI9bQogICAgICAgIGVsc2U6YSA9IG0KICAgIEwuYXBwZW5kKChhK2IpLzIpCiAgICByZXR1cm4gTAoKIyBFamVtcGxvIGRlIHVzbwpjb2VmaWNpZW50ZXMgPSBbMywgMiwgNiwgMl0KcHJpbnQoIkNvZWZpY2llbnRlcyBkZWwgcG9saW5vbWlvOiIsIGNvZWZpY2llbnRlcykKcHJpbnQoIlNvbHVjaW9uZXM6Iiwgc29sdWNpb25fcG9seW5vbWlvKGNvZWZpY2llbnRlcykpCgoKCg==