使用只有1个未知参数的optimize.least_square时,与残差数组的形状有关的问题

问题描述

我遇到了一个我自己无法解决的问题...我正在尝试迭代解决一个只有一个未知参数的五个非线性方程组,但是仍然收到如下所示的错误消息。但是,当我求解3个未知参数时(使用相同代码,但用要估计的参数替换一些数字),不会出现此错误。我的代码如下:


def equations (L):
  f1 = 5.519 - ((1.343876648526599/0.4)*(log(18/3.2441500954852724) - (-5*(148/L))))
  f2 = 8.940 - ((1.343876648526599/0.4)*(log(56/3.2441500954852724) - (-5*(148/L))))
  f3 = 11.658 - ((1.343876648526599/0.4)*(log(98/3.2441500954852724) - (-5*(148/L))))
  f4 = 12.590 - ((1.343876648526599/0.4)*(log(123/3.2441500954852724) - (-5*(148/L))))
  f5 = 12.983 - ((1.343876648526599/0.4)*(log(148/3.2441500954852724) - (-5*(148/L))))

  return (f1,f2,f3,f4,f5)

x0 = 300
root = spo.least_squares(equations,x0,bounds = ((10),(500)),max_nfev = 100).x

错误消息:

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)
<ipython-input-34-7315f1f7ce27> in <module>()

---> 27   root = spo.least_squares(equations,max_nfev = 100).x
/usr/local/lib/python3.6/dist-packages/scipy/optimize/_lsq/least_squares.py in least_squares(fun,jac,bounds,method,ftol,xtol,gtol,x_scale,loss,f_scale,diff_step,tr_solver,tr_options,jac_sparsity,max_nfev,verbose,args,kwargs)
    809     if f0.ndim != 1:
    810         raise ValueError("`fun` must return at most 1-d array_like. "
--> 811                          "f0.shape: {0}".format(f0.shape))
    812 
    813     if not np.all(np.isfinite(f0)):

ValueError: `fun` must return at most 1-d array_like. f0.shape: (5,1)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)