首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RuntimeWarning:除以在true_divide W= 1/sigma**2/s_sq对称中遇到的零

RuntimeWarning:除以在true_divide W= 1/sigma**2/s_sq对称中遇到的零
EN

Stack Overflow用户
提问于 2019-02-27 12:16:10
回答 1查看 621关注 0票数 3

我尝试过运行这段代码,但是无论我如何简化它,我都会得到相同的错误。

/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中遇到的无效值返回1 SS_res/SS_tot

我们将非常感谢您的帮助。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2019-02-27 14:26:13

我对您的代码有一些评论,也许其中之一会解决问题。

  • model = Model({ya})错误地尝试从一个集合建立一个模型,因为{}生成一个集合。尝试使用model = Model({y: ya})model = Model(ya)代替。(我推荐第一个)
  • 注释行fit = Fit(model, x=x1data , y=y1data, constraints=constraints)本质上是正确的,请注意,我更改了数据数组的名称,以包含1。上面示例中的行不能工作,因为您没有提供ydata。
  • 什么是type of q_submEI?只要它们是标准python数类型,就可以了,但是如果它们是异国情调,这可能会导致问题。
  • 请记住,您在问题中列出的“错误”是Warnings,只要结果正确,在拟合过程中的一些警告没有什么问题。

我希望这能解决问题,如果不让我知道的话。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54905295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档