python fsolve说明_Python scipy fsolve“’func’参数的输入和输出...

在讨论问题之前,我已经用相同的问题在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个初始估计.因此,我希望我的开始输入估算始终有三个输入.

>输出,输出(非线性联立方程).在此示例中,我有4个非线性方程.

> scipy.optimize.fsolve会引起上面突出显示的错误,因为输入和输出的形状不同.在我的特定情况下,我希望输入始终具有三个值(以猜测x,y和z的初始起点).在这种情况下,输出具有4个非线性方程式,可使用初始输入估算值进行求解.

>注意:使用相同的输入和输出形状,例如.输入形状3 [x,y,z]和输出3个非线性方程,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值