es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Resolver problema de precisión (en Python)

Estoy experimentando problemas de precisión con fsolve.

import numpy as np
from scipy.optimize import fsolve

ens=np.arange(0,50,1)

def f(x):
     return x*(np.sin(x)/np.cos(x))-1000

s=[]

roots=fsolve(f,ens)
roots=np.around(roots, decimals=3 , out=None)
a = roots[roots >= 0]
g = np.unique(a)
g=g[:5]
s.append(g)
print(s)

Resultado:

[array([10.842, 11.006, 15.165, 21.116, 22.382])]

El resultado debería ser: [1.569, 4.708, 7.846, 10.985, 14.123]

Mi código omite las primeras tres soluciones y las otras no son precisas. ¿Sabes cómo podría mejorar la precisión de mis resultados?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, una posible solución para mejorar la precisión de tus resultados es aumentar el número de decimales utilizados en la función fsolve. Puedes hacer esto pasando el argumento “xtol” a la función fsolve, que establece la tolerancia para la solución. Establecer un valor más pequeño para “xtol” aumentará la precisión de los resultados.

    Por ejemplo:

    roots=fsolve(f,ens,xtol=1e-12)

    Esto establece la tolerancia en 1e-12, lo cual debería mejorar la precisión de tus resultados.

Comments are closed.