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.

Se encontró una división entre cero en el error de división verdadera sin tener ceros en mis datos.

Este es mi código y estos son mis datos, y este es el resultado del código. He intentado agregar uno de los valores en el eje x, pensando que quizás valores tan pequeños podrían interpretarse como ceros. No tengo idea de lo que true_divide podría ser, y no puedo explicar este error de división por cero ya que no hay un solo cero en mis datos, revisé todos mis 2500 puntos de datos. Esperando que algunos de ustedes puedan proporcionar alguna aclaración. Gracias de antemano.

import pandas as pd
import matplotlib.pyplot as plt
from iminuit import cost, Minuit
import numpy as np

frame = pd.read_excel(‘/Users/lorenzotecchia/Desktop/Analisi Laboratorio/Analisi dati/Quinta Esperienza/500Hz/F0000CH2.xlsx’, ‘F0000CH2’)
data = pd.read_excel(‘/Users/lorenzotecchia/Desktop/Analisi Laboratorio/Analisi dati/Quinta Esperienza/500Hz/F0000CH1.xlsx’, ‘F0000CH1’)

tempi_500Hz = pd.DataFrame(frame,columns=[‘x’])

Vout_500Hz = pd.DataFrame(frame,columns=[‘y’])

tempi_500Hz = pd.DataFrame(frame,columns=[‘x1’])
Vout_500Hz = pd.DataFrame(frame,columns=[‘y1’])

Vin_500Hz = pd.DataFrame(data,columns=[‘y’])

def fit_esponenziale(x, α, β):
return α * (1 – np.exp(-x / β))

plt.xlabel(‘ω(Hz)’)
plt.ylabel(‘Attenuazioni’)
plt.title(‘Fit Parabolico’)
plt.scatter(tempi_500Hz, Vout_500Hz)
least_squares = cost.LeastSquares(tempi_500Hz, Vout_500Hz, np.sqrt(Vout_500Hz), fit_esponenziale)
m = Minuit(least_squares, α=0, β=0)
m.migrad()
m.hesse()
plt.errorbar(tempi_500Hz, Vout_500Hz, fmt=’o’, label=’data’)
plt.plot(tempi_500Hz, fit_esponenziale(tempi_500Hz, *m.values), label=’fit’)
fit_info = [f’$\chi^2$ / $n_{{dof}}$ = {m.fval:.1f} / {len(tempi_500Hz) – m.nfit}’,]

for p, v, e in zip(m.parameters, m.values, m.errors):
fit_info.append(f'{p} = ${v:.3f} \pm {e:.3f}$’)

plt.legend()
plt.show()

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error “división por cero” puede ocurrir incluso si no existen ceros en los datos debido a que la función que se está ajustando (exponencial en este caso) puede acercarse a cero y provocar una división por un número muy pequeño, lo cual es equivalente a una división por cero.

    En cuanto a la solución sugerida de agregar un valor pequeño al eje x, esto podría ayudar si la función es indefinida para x=0 y tienes valores muy cercanos a cero. Sin embargo, en este caso, no parece ser el problema.

    En cuanto a “true_divide”, es una función en la biblioteca numpy que realiza una división donde ambos operandos son arreglos o matrices, y devuelve un arreglo o matriz de la misma forma. Se utiliza internamente en operaciones numpy como la transmisión de arreglos.

    Sin ver los datos reales o el mensaje de error específico, es difícil proporcionar más información. Sin embargo, podría valer la pena revisar lo siguiente:

    1. Asegúrate de que no haya valores NaN o infinitos en los datos.
    2. Prueba una función o método de ajuste diferente.
    3. Verifica los parámetros de entrada de la función de ajuste.

    Además, el mensaje de error puede proporcionar más información sobre dónde se está produciendo la división por cero, lo cual puede ayudar a identificar el problema.

Comments are closed.