首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流体运动中的二阶常微分方程python - cfd - sphere运动

流体运动中的二阶常微分方程python - cfd - sphere运动
EN

Stack Overflow用户
提问于 2014-01-06 08:47:45
回答 1查看 215关注 0票数 0

物理问题由二阶常微分方程给出: m* x‘'= s*(v - x')^2数学解被重写为2x 1’阶常数:u=x‘,u’= s(v - u)^2

边界条件: u0 = 0,x0 =0

t0=0,tmax=10.,dt=1.

但是我认为有一些bug,并且找不到

代码:

代码语言:javascript
复制
import numpy as np
from scipy.integrate import odeint
import pylab as pl

rho=10e3
Cd=1
r=0.05
m=5
s=rho*Cd*(r**2)*np.pi/(2*m)
v=1

t_max, dt = 10., 1.
time_vec = np.linspace(0, t_max, num=np.round(t_max/dt)+1)
x_vec=[0.,0.]

def d(x_vec,t):
    return np.array([s*((v-x_vec[0])**2), x_vec[0]]) # u'[0]=s*((v-u_vec[0])**2), u[1]'=u_vec[0]

x,u = odeint(func=d, y0=x_vec, t=time_vec).T

pl.plot(time_vec, u[:], label='u[m/s]=x/t')
pl.plot(time_vec, x[:], label="x[m]")
pl.legend()
pl.show()
EN

回答 1

Stack Overflow用户

发布于 2014-01-06 09:24:15

在我看来,你可能想使用x和u,而不是u和u‘。参见示例here (page 2)here以及odeint文档。使用系统x'=uu' = s(v - u)^2d可以接受[x,u]作为输入并返回[x',u'],正如odeint所期望的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20941223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档