【发布时间】:2021-06-13 18:45:47
【问题描述】:
我是这个库的新手,但不是 Python。我有许多有 14 个未知数的方程。我有一个数据集,其中包含 640 个方程和 14 个未知数及其目标值。我试图为这个方程找到最佳的 14 参数。当我调查“我该怎么做”时,我发现了这个库。我运行了位于页面末尾的this example,以了解其工作方式。然后我尝试实现它适合我的问题。 我尝试以 650 的前 14 个方程作为开始。
def func(x):
return [
204 * x[13] + 180 * x[12] + 204 * x[11] + 144 * x[10] + 132 * x[9] + 132*x[8] + 108*x[7] + 144*x[6] + 30*x[5]+ 120*x[4] + 30*x[3] + 168*x[2]+ 180*x[1]+ 204*x[0]-66,
72 * x[13] + 78 * x[12] + 72 * x[11] + 66 * x[10] + 60 * x[9] + 72*x[8] + 72*x[7] + 95*x[6] + 84*x[5]+ 95*x[4] + 120*x[3] + 132*x[2]+ 132*x[1]+ 168*x[0]-45,
95 * x[13] + 78 * x[12] + 90 * x[11] +84 * x[10] + 66 * x[9] + 60*x[8] + 108*x[7] + 84*x[6] + 132*x[5]+ 84*x[4] + 95*x[3] + 144*x[2]+ 168*x[1]+ 132*x[0]-46,
95 * x[13] + 108 * x[12] + 108 * x[11] +120 * x[10] + 96 * x[9] + 120*x[8] + 108*x[7] + 132*x[6] + 161*x[5]+ 120*x[4] + 144*x[3] + 168*x[2]+ 161*x[1]+ 204*x[0]-96,
144 * x[13] + 90 * x[12] + 96 * x[11] +132 * x[10] + 132 * x[9] + 132*x[8] + 108*x[7] + 96*x[6] + 108*x[5]+ 132*x[4] + 161*x[3] + 180*x[2]+ 216*x[1]+ 240*x[0]-72,
120 * x[13] + 30 * x[12] + 30 * x[11] +66 * x[10] + 66 * x[9] + 84*x[8] + 216*x[7] + 132*x[6] + 180*x[5]+ 30*x[4] + 66*x[3] + 66*x[2]+ 161*x[1]+ 240*x[0]-66,
132 * x[13] + 119 * x[12] + 90 * x[11] +72 * x[10] + 96*x[9] + 96*x[8] + 119*x[7] + 84*x[6] + 144*x[5]+ 144*x[4] + 96*x[3] + 168*x[2]+ 252*x[1]+ 144*x[0]-24,
180 * x[13] + 180 * x[12] + 119 * x[11] +96 * x[10] + 108*x[9] + 119*x[8] + 144*x[7] + 168*x[6] + 66*x[5]+ 180*x[4] + 186*x[3] + 66*x[2]+ 180*x[1]+ 66*x[0]-61,
42 * x[13] + 42 * x[12] + 42 * x[11] +36 * x[10] + 36*x[9] + 36*x[8] + 54*x[7] + 60*x[6] + 48*x[5]+ 30*x[4] + 54*x[3] + 54*x[2]+ 60*x[1]+ 72*x[0]-81,
180 * x[13] + 180 * x[12] + 66 * x[11] +132 * x[10] + 144*x[9] + 168*x[8] + 228*x[7] + 168*x[6] + 216*x[5]+ 144*x[4] + 161*x[3] + 66*x[2]+ 216*x[1]+ 264*x[0]-114,
119 * x[13] + 108 * x[12] + 30 * x[11] +119 * x[10] + 108*x[9] + 108*x[8] + 95*x[7] + 108*[6] + 95 *x[5]+ 108*x[4] + 66*x[3] + 180*x[2]+ 216*x[1]+ 240*x[0]-90,
95 * x[13] + 108 * x[12] + 119 * x[11] +119 * x[10] + 95*x[9] + 108*x[8] + 95*x[7] + 144*x[6] + 228*x[5]+ 119*x[4] + 161*x[3] + 66*x[2]+ 180*x[1]+ 240*x[0]-46,
100 * x[13] + 180 * x[12] + 228 * x[11] +180 * x[10] + 168*x[9] + 168*x[8] + 180*x[7] + 120*x[6] + 240*x[5]+ 144*x[4] + 180*x[3] + 168*x[2]+ 30*x[1]+ 252*x[0]-115,
95 * x[13] + 108 * x[12] + 90 * x[11] +120 * x[10] + 120*x[9] + 120*x[8] + 72*x[7] + 144*x[6] + 168*x[5]+ 120*x[4] + 186*x[3] + 132*x[2]+ 120*x[1]+ 132*x[0]-95,
]
root = fsolve(func, (0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0))
print(root)
它会引发如下错误:
ml, mu, epsfcn, factor, diag)
minpack.error: Result from function call is not a proper array of floats.(216,)
据我所知,没有像 108 或 206 这样的形状。为什么会出现此错误,或者如何使用此方程式数据集找到最佳参数?有人可以帮忙吗?
【问题讨论】:
标签: python numpy optimization scipy equation