Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求解一个有两个变量的系统函数方程_Python_Numpy_Physics_Equation - Fatal编程技术网

Python 求解一个有两个变量的系统函数方程

Python 求解一个有两个变量的系统函数方程,python,numpy,physics,equation,Python,Numpy,Physics,Equation,我正在尝试模拟一个篮球三分球。考虑到不同的力,我有球的位置和速度的方程。我的目标是找到初始速度v0=(v0x,v0y,v0z)和角自旋omega0x的不同组合,从而最大限度地提高得分3分的机会 我的策略是数值求解t=1s时的速度方程,保持除初速和自旋外的所有变量不变。我的初速和自旋是一个包含不同值的数组。一旦我得到了时间t=1时的速度值,对于不同的v0和ω0,我将把它们插入到位置方程中,然后根据不同的速度和自旋得到最终的x,y和z坐标的不同值 我的方程式如下: #velocity vector

我正在尝试模拟一个篮球三分球。考虑到不同的力,我有球的位置和速度的方程。我的目标是找到初始速度v0=(v0x,v0y,v0z)和角自旋omega0x的不同组合,从而最大限度地提高得分3分的机会

我的策略是数值求解t=1s时的速度方程,保持除初速和自旋外的所有变量不变。我的初速和自旋是一个包含不同值的数组。一旦我得到了时间t=1时的速度值,对于不同的v0和ω0,我将把它们插入到位置方程中,然后根据不同的速度和自旋得到最终的x,y和z坐标的不同值

我的方程式如下:

#velocity vector components
vx = v0x + F_m*t /m - F_d/m * vx/(np.sqrt(vx**2 +vy**2 +vz**2)) *t 
vy = v0y - F_d*t/m * vy/(np.sqrt(vx**2 +vy**2 +vz**2)) *t 
vz = v0z - F_d*t/m * vz/(np.sqrt(vx**2 +vy**2 +vz**2)) *t 

#Position vector components
x= v0x*t + F_m *t**2 /(2*m) - F_d*t**2/(2*m)*vx/(np.sqrt(vx**2 +vy**2 +vz**2))
y= v0y*t + F_m *t**2 /(2*m) - F_d*t**2/(2*m)*vy/(np.sqrt(vx**2 +vy**2 +vz**2))
z= v0z*t + F_m *t**2 /(2*m) - F_d*t**2/(2*m)*vz/(np.sqrt(vx**2 +vy**2 +vz**2))

t = 1 
v0x = np.arange()
v0y = np.arange()
v0z = np.arange()
omega = np.arange()
m = 
F_d = 
F_m = 
问题是这个等式看起来很糟糕,我不知道Python中有什么方法可以让我解决这个问题。此外,还有许多不同的v0x、v0y、v0z和ω组合可供尝试。 任何帮助都会很好。

看来是最好的选择。不过,你的方程式需要一些重要的重写。基本上,您需要找到一种方法,以
dy/dt=f(y,t)
的形式重写方程(在您的情况下,
y
将是
[vx,vy,vz,x,y,z]
。这是物理学中的一项标准技术,你可以在任何物理教科书中找到,因此如果你不熟悉,我建议从那里开始。一旦你找到了
f
,你可以将它输入到
scipy
的ODE解算器中,并得到球的轨迹


至于初始参数,恐怕这里没有很好的通解,它实际上取决于你正在研究的系统,所以我先简单地施加几千个初始条件,看看你得到了什么样的结果。

你确定你的方程是正确的吗?(我问这个问题是因为
omega
没有出现在它们里面)。否则,
scipy.integrate.OdeSolver
对于这类问题总是一个很好的工具。您好,谢谢您的提问。ω是角速度。为了简化起见,我决定它是常数,并且只作用于x方向。它是马格纳斯力F_m的一部分。