在我进入问题之前,我已经搜索了stackoverflow上的相关线程,发现了相同的问题:
根据我对这个错误的理解
raise TypeError(msg)
TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument 'fsolve_function'
问题是输入和输出的形状是不同的。
在下面的代码示例中,我有以下内容:
initialGuess
(要在scipy.optimize中的fsolve
函数中使用的起始估计)。输入initialGuess
对坐标x、y和z有3个初始估计值。因此,我希望我的初始输入估计值始终有3个输入值。out
(非线性联立方程)。在这个例子中,我有4个非线性方程。scipy.optimize.fsolve
引发上面突出显示的错误,因为输入和输出的形状不同。在我的特殊情况下,我希望我的输入总是有三个值(猜测x、y和z的初始起点)。在这种情况下,输出有4个非线性方程需要使用初始输入估计来求解。fsolve
将相应地进行计算。我只是想知道,如何扩展fsolve
来使用等于或大于4个非线性联立方程,并且只有3个输入初始估计?代码如下:
from scipy.optimize import fsolve
def fsolve_function(arguments):
x = arguments[0]
y = arguments[1]
z = arguments[2]
out = [(35.85 - x)**2 + (93.23 - y)**2 + (-39.50 - z)**2 - 15**2]
out.append((42.1 - x)**2 + (81.68 - y)**2 + (-14.64 - z)**2 - 27**2)
out.append((-70.90 - x)**2 + (-55.94 - y)**2 + (-68.62 - z)**2 - 170**2)
out.append((-118.69 - x)**2 + (-159.80 - y)**2 + (-39.29 - z)**2 - 277**2)
return out
initialGuess = [35, 93, -39]
result = fsolve(fsolve_function, initialGuess)
print result
目前没有回答
相关问题 更多 >
编程相关推荐