我一直在努力解决这个问题很长一段时间,我希望有人可以帮助我。我有一个名为“ULS”的函数,看起来像这样
def uls(muliple, known, values):
# result = (a value calculated by the known values and the unknown x0)
return result
该函数包含多个方程,这些方程取决于已知值加上一个未知值x0。所有这些方程的总和应为零(目标),我想知道我的目标可以满足哪个x0值。 (有点像目标寻求)。目前我在循环中拥有所有这些,并且我正在运行许多x0值,直到满足条件。可以在这里使用Scipy方法吗?
方程是线性的。
更多信息。我正在看这个具体问题。对于选定的x_bot值,计算所有列表和变量,并计算表达式abs(equN-N)。现在我想找到x_bot的值,它使abs(equN-N)< 1。
def ULS(xp_bot):
xp_top = 0.00014
xp_all = []
slope = (xp_bot-xp_top)/(Ln)
for i in range(0,100,1):
xp_calc = i*slope + xp_top
xp_all.append(xp_calc)
xp_all.append(xp_bot)
xmi_all = []
for i in range(0,100,1):
xmi_calc = (xp_all[i] + xp_all[i+1])/2
xmi_all.append(xmi_calc)
xi_all = []
for i in range(0,100,1):
xi_calc = xmi_all[i] + xni_all[i]
xi_all.append(xi_calc)
sic_all = []
for item in xi_all:
if item >= 0:
sic = item*Ecm
sic_all.append(sic)
else:
sic = 0
sic_all.append(sic)
fic_step = np.multiply(sic_all,a)
fic = np.divide(fic_step,1000)
sis_all = []
for item in xi_all:
sis = item*Es
sis_all.append(sis)
fis_step = np.multiply(sis_all,a_s)
fis = np.divide(fis_step,1000)
M_conc = []
for i in range(0,100):
multi_c = np.divide(fic,1000)
M_conc = np.multiply(leverarm,multi_c)
multi_s = np.divide(fis,1000)
M_steel = np.multiply(leverarm,multi_s)
M_sls = sum(M_conc) + sum(M_steel)
equN = sum(fic) + sum(fis)
return abs(equN - N)