【发布时间】:2018-09-09 02:46:33
【问题描述】:
from scipy.optimize import fsolve
def f(theta1,theta2,theta3,theta4,beta1,beta2,beta3,beta4):
func1 = -0.07*beta1*theta1**2/(-theta1**2 + 1) - 0.07*beta1*theta2**2/(-theta1*theta2 + 1) - 0.07*beta1*theta3**2/(-theta1*theta3 + 1) - 0.07*beta1*theta4**2/(-theta1*theta4 + 1) - 0.07*beta1/(-theta1**2 + 1) - 0.07*beta1/(-theta1 + 1) - 1.86*theta1/(-theta1**2 + 1) - 0.93*theta2/(-theta1*theta2 + 1) - 0.93*theta3/(-theta1*theta3 + 1) - 0.93*theta4/(-theta1*theta4 + 1) + 0.93*(-theta1 + 0.93)/(theta1**2 - 1) - 0.93/(-theta1 + 1)
func2 = -0.07*beta2*theta1**2/(-theta1*theta2 + 1) - 0.07*beta2*theta2**2/(-theta2**2 + 1) - 0.07*beta2*theta3**2/(-theta2*theta3 + 1) - 0.07*beta2*theta4**2/(-theta2*theta4 + 1) - 0.07*beta2/(-theta2**2 + 1) - 0.07*beta2/(-theta2 + 1) - 0.06*theta1/(-theta1*theta2 + 1) - 0.12*theta2/(-theta2**2 + 1) - 0.06*theta3/(-theta2*theta3 + 1) - 0.06*theta4/(-theta2*theta4 + 1) + 0.06*(-theta1 + 0.93)/(theta1*theta2 - 1) - 0.06/(-theta2 + 1),
func3 = -0.07*beta3*theta1**2/(-theta1*theta3 + 1) - 0.07*beta3*theta2**2/(-theta2*theta3 + 1) - 0.07*beta3*theta3**2/(-theta3**2 + 1) - 0.07*beta3*theta4**2/(-theta3*theta4 + 1) - 0.07*beta3/(-theta3**2 + 1) - 0.07*beta3/(-theta3 + 1) - 0.001*theta1/(-theta1*theta3 + 1) - 0.001*theta2/(-theta2*theta3 + 1) - 0.002*theta3/(-theta3**2 + 1) - 0.001*theta4/(-theta3*theta4 + 1) + 0.001*(-theta1 + 0.93)/(theta1*theta3 - 1) - 0.001/(-theta3 + 1),
func4 = -0.07*beta4*theta1**2/(-theta1*theta4 + 1) - 0.07*beta4*theta2**2/(-theta2*theta4 + 1) - 0.07*beta4*theta3**2/(-theta3*theta4 + 1) - 0.07*beta4*theta4**2/(-theta4**2 + 1) - 0.07*beta4/(-theta4**2 + 1) - 0.07*beta4/(-theta4 + 1) - 0.003*theta1/(-theta1*theta4 + 1) - 0.003*theta2/(-theta2*theta4 + 1) - 0.003*theta3/(-theta3*theta4 + 1) - 0.006*theta4/(-theta4**2 + 1) + 0.003*(-theta1 + 0.93)/(theta1*theta4 - 1) - 0.003/(-theta4 + 1),
func5 = -0.09*beta1*theta1**2/(-theta1**2 + 1) - 0.09*beta1*theta2**2/(-theta1*theta2 + 1) - 0.09*beta1*theta3**2/(-theta1*theta3 + 1) - 0.09*beta1*theta4**2/(-theta1*theta4 + 1) - 0.09*beta1/(-theta1**2 + 1) - 0.09*beta1/(-theta1 + 1) - 0.12*theta1/(-theta1**2 + 1) - 0.06*theta2/(-theta1*theta2 + 1) - 0.06*theta3/(-theta1*theta3 + 1) - 0.06*theta4/(-theta1*theta4 + 1) + 0.06*(-theta2 + 0.95)/(theta1*theta2 - 1) - 0.06/(-theta1 + 1),
func6 = -0.09*beta2*theta1**2/(-theta1*theta2 + 1) - 0.09*beta2*theta2**2/(-theta2**2 + 1) - 0.09*beta2*theta3**2/(-theta2*theta3 + 1) - 0.09*beta2*theta4**2/(-theta2*theta4 + 1) - 0.09*beta2/(-theta2**2 + 1) - 0.09*beta2/(-theta2 + 1) - 0.95*theta1/(-theta1*theta2 + 1) - 1.9*theta2/(-theta2**2 + 1) - 0.95*theta3/(-theta2*theta3 + 1) - 0.95*theta4/(-theta2*theta4 + 1) + 0.95*(-theta2 + 0.95)/(theta2**2 - 1) - 0.95/(-theta2 + 1),
func7 = -0.09*beta3*theta1**2/(-theta1*theta3 + 1) - 0.09*beta3*theta2**2/(-theta2*theta3 + 1) - 0.09*beta3*theta3**2/(-theta3**2 + 1) - 0.09*beta3*theta4**2/(-theta3*theta4 + 1) - 0.09*beta3/(-theta3**2 + 1) - 0.09*beta3/(-theta3 + 1) - 0.03*theta1/(-theta1*theta3 + 1) - 0.03*theta2/(-theta2*theta3 + 1) - 0.06*theta3/(-theta3**2 + 1) - 0.03*theta4/(-theta3*theta4 + 1) + 0.03*(-theta2 + 0.95)/(theta2*theta3 - 1) - 0.03/(-theta3 + 1),
func8 = -0.09*beta4*theta1**2/(-theta1*theta4 + 1) - 0.09*beta4*theta2**2/(-theta2*theta4 + 1) - 0.09*beta4*theta3**2/(-theta3*theta4 + 1) - 0.09*beta4*theta4**2/(-theta4**2 + 1) - 0.09*beta4/(-theta4**2 + 1) - 0.09*beta4/(-theta4 + 1) - 0.23*theta1/(-theta1*theta4 + 1) - 0.23*theta2/(-theta2*theta4 + 1) - 0.23*theta3/(-theta3*theta4 + 1) - 0.46*theta4/(-theta4**2 + 1) + 0.23*(-theta2 + 0.95)/(theta2*theta4 - 1) - 0.23/(-theta4 + 1)
return func1,func2,func3,func4,func5,func6,func7,func8
x0 = [0.8,0.8,0.8,0.8,0.8,0.6,0.5,0.7]
result = fsolve(f,x0)
我正在尝试解决上面的方程,但它显示:
TypeError: f() 缺少 7 个必需的位置参数:'theta2'、'theta3'、'theta4'、'beta1'、'beta2'、'beta3' 和 'beta4'
。关于我做错了什么以及应该做些什么来解决问题的任何想法?
【问题讨论】:
-
fsolve以x0作为第一个参数调用您的函数f。它缺少其余部分。您应该使用至少 3 个参数调用fsolve,其中第三个是提供给f的参数列表。阅读docs -
您必须将这七个值传递给函数,或者尝试使用一个数组值重新定义您的函数。
-
这是一个很大的帮助,谢谢你的好意