如何解决使用brentq查找函数的最佳参数
我想找到最佳角度,以70 m / s的初始速度到达300 m的距离。我想使用scipy.optimize.brentq查找使我的轨迹走给定距离的角度。我得到一些我不明白的错误。我的代码:
def trajectory(V_i,theta,drag=True):
g = 9.8
m = 45.93
C = 0.25
r = 42.67/2
A = np.pi*pow(r,2)
ro = 0.001
time = np.linspace(0,100,10000)
tof = 0.0
dt = time[1] - time[0]
gravity = -g * m
v_x = V_i * np.cos(theta)
v_y = V_i * np.sin(theta)
d_x = 0.0
d_y = 0.0
d_xs = list()
d_ys = list()
d_xs.append(d_x)
d_ys.append(d_y)
for t in time:
F_x = 0.0
F_y = 0.0
if (drag == True):
F_y = F_y - 0.5*C*A*ro*pow(v_y,2)
F_x = F_x - 0.5*C*A*ro*pow(v_x,2) * np.sign(v_y)
F_y = F_y + gravity
d_x = d_x + v_x * dt + (F_x / (2 * m)) * dt**2
d_y = d_y + v_y * dt + (F_y / (2 * m)) * dt**2
v_x = v_x + (F_x / m) * dt
v_y = v_y + (F_y / m) * dt
if (d_y >= 0.0): #loop runs until y is less then 0.0- hits ground
d_xs.append(d_x)
d_ys.append(d_y)
else:
tof = t
d_xs.append(d_x)
d_ys.append(d_y)
break
return d_xs,d_ys,tof
V_i = 70
d = 300
def distance(theta,V_i,'d',drag=True):
return trajectory(V_i,drag=True)-d
root = scipy.optimize.brentq(distance,np.pi/9,np.pi/3,args=('V_i','d'))
plot(distance,distance(V_i,d));
plot(root,distance(root),'o');
如果我从V_i和d中删除了``,则错误提示:--'tuple'和'int'不支持的操作数类型 任何帮助将不胜感激,我刚刚开始编码!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。