python - RuntimeWarning:在 true_divide W = 1/sigma**2/s_sq symfit 中遇到除以零
问题描述
我试过运行这段代码,但无论我如何简化它,我都会遇到同样的错误。
/home/runner/.site-packages/symfit/core/fit.py:1046:RuntimeWarning:在 true_divide W = 1/sigma**2/s_sq [:, np.newaxis] 中遇到除以零
/home/runner/.site-packages/symfit/core/fit.py:1783:> RuntimeWarning: double_scalars return 1 SS_res/SS_tot遇到无效值
帮助将不胜感激。
x1, ya = sf.variables('x1, ya')
I1, I2, I3, A, B, C, D = sf.parameters('I1, I2, I3, A, B, C, D')
I1.value = 46.483
I2.value = 5.916
I3.value = 21.90
A.value = -3.828*10**(-5)
B.value = 0
C.value = 0
D.value = 0
# Making the equation
ya = (A*x1**3 + B*x1**2 + C*x1 + D + (q_subm*x1**4)/(24*EI)) #q_sub and EI are constants
#model = Model({y: Piecewise((ya, x1 <= I1), (yb, x2 <= I2), (yc, x3 <= I3))})
model = Model({ya})
# As a constraint, we want cable to be at 0 at start and and at "-p" height at x=60
# also no angle in pipe ate those points
constraints = [
Eq(ya.subs({x1: 0}), 0),
Eq(ya.subs({x1: 60}), -p),
Eq(ya.diff(x1).subs({x1: 0}), 0),
Eq(ya.diff(x1).subs({x1: 60}), 0)
]
x1data = np.linspace(0, 60., 60)
y1data = model(x1=x1data, A = -3.828*10**(-5), B = 0, C = 0, D = 0)
np.random.seed(2)
y1data = np.random.normal(y1data, 0.005)
plt.plot([60], [0.4], 'ro')
plt.scatter(x1data, y1data)
plt.savefig('plot.png')
print ('Done plotting fig')
#fit = Fit(model, x=xdata, y=ydata, constraints=constraints)
fit = Fit(model, x1=x1data, constraints=constraints)
print ('Done fitting model')
fit_result = fit.execute()
#print(fit_result)
解决方案
我对您的代码有一些评论,也许其中之一可以解决问题。
model = Model({ya})
错误地尝试从集合中制作模型,因为{}
制作了集合。尝试使用model = Model({y: ya})
ormodel = Model(ya)
代替。(我会推荐第一个)- 注释行
fit = Fit(model, x=x1data , y=y1data, constraints=constraints)
本质上是正确的,请注意我更改了数据数组的名称以包含1
. 上面示例中的行无法工作,因为您没有提供 ydata。 - 和
type
是什么?只要它们是标准的 python 数字类型就可以了,但如果它们是异国情调的,这可能会导致问题。q_subm
EI
- 请记住,您在问题中列出的“错误”是
Warnings
,只要结果正确,拟合过程中的一些警告就没有错。
我希望这能解决问题,如果不让我知道。
x1, y = sf.variables('x1, y')
I1, I2, I3, A, B, C, D = sf.parameters('I1, I2, I3, A, B, C, D')
I1.value = 46.483
I2.value = 5.916
I3.value = 21.90
A.value = -3.828*10**(-5)
B.value = 0
C.value = 0
D.value = 0
# Making the equation
ya = (A*x1**3 + B*x1**2 + C*x1 + D + (q_subm*x1**4)/(24*EI)) #q_sub and EI are constants
model = Model({y: ya})
# As a constraint, we want cable to be at 0 at start and and at "-p" height at x=60
# also no angle in pipe ate those points
constraints = [
Eq(ya.subs({x1: 0}), 0),
Eq(ya.subs({x1: 60}), -p),
Eq(ya.diff(x1).subs({x1: 0}), 0),
Eq(ya.diff(x1).subs({x1: 60}), 0)
]
x1data = np.linspace(0, 60., 60)
y1data = model(x1=x1data, A=-3.828*10**(-5), B=0, C=0, D=0)
np.random.seed(2)
y1data = np.random.normal(y1data, 0.005)
plt.plot([60], [0.4], 'ro')
plt.scatter(x1data, y1data)
plt.savefig('plot.png')
print ('Done plotting fig')
fit = Fit(model, x=x1data, y=y1data, constraints=constraints)
fit_result = fit.execute()
print ('Done fitting model')
print(fit_result)
推荐阅读
- flutter - 如何在颤动的列表视图中设置卡片的宽度?
- javascript - 如何存储从 API 检索的值并在整个应用程序中使用它
- windows - 如何隐藏 tcp 端口侦听器 powershell 脚本?
- javascript - Vue.js:无法从云 Firestore 中检索数据
- kubernetes - 在 kubernetes 中创建 yaml 文件时出现此错误
- python - 如何获得 PCA 的权重
- delphi-10.2-tokyo - Delphi如何从exe中的dfm中删除已删除的属性
- python-3.x - 插件 Stopmotion 预览无法在 Entangle 2.0 中启动
- google-maps - ionic-native-google-maps 正确显示地图(设置目标和位置)但不响应任何手势或按钮点击
- javascript - 如何使用 Vue 在 Laravel 中切换汉堡按钮?