数据无零值却遇到true_divide除零错误的问题求解
除零错误解决思路
核心报错原因
- 参数初始值设置错误
你定义的拟合函数fit_esponenziale包含x / β的运算逻辑,但你初始化Minuit时将β的初始值设为了0,直接触发除零运算,和你输入的数据集无关。你只需要给β设置一个合理的正数初始值即可解决该问题,初始值可以根据你实验的时间常数预估,比如设置为1、0.1这类非零数值即可,不需要完全精确。
true_divide是NumPy内置的除法实现函数,你看到的相关报错只是NumPy抛出除法异常时的函数标识,本质就是运算过程中出现了除数为0的情况。
其他可能引发异常的问题
- 输入数据格式不匹配
你传入LeastSquares的x、y、误差项都是pd.DataFrame二维结构,和拟合函数要求的一维数组不匹配,可能引发隐性的形状错误。建议将数据转换为一维NumPy数组再传入:
# 替换原来的DataFrame构造逻辑 tempi_500Hz = frame['x1'].values.flatten() Vout_500Hz = frame['y1'].values.flatten()
- 误差项合法性问题
你用np.sqrt(Vout_500Hz)作为误差权重,如果Vout中存在小于等于0的数值,会生成NaN导致后续运算异常,建议提前校验所有y值均为正数,或者替换为符合你实验场景的误差估计值。
内容的提问来源于stack exchange,提问作者Lorenzo
相关产品推荐
相关产品推荐

