找回密码
 注册
Simdroid-非首页
查看: 185|回复: 3

[其他研讨] Interpolation函数的问题(降落伞模型方程)

[复制链接]
发表于 2011-3-23 08:51:35 | 显示全部楼层 |阅读模式 来自 山东济南
本帖最后由 treemantan 于 2011-3-23 09:01 编辑

假如我是用NDSolve求的,得到一个差值函数,这个函数怎么插的能提取出来吗?
我是求一个微分方程碰到了一个问题

  1. T[h_]:=Subscript[T, 0]-(6h)/1000
  2. P[h_]:=1/10 ((44332-h)/11881)^5.256
  3. \[Rho][P_,T_]:=(3.48P)/(273+T)
  4. f[\[Rho]_]:=1/2 c \[Rho] s (h'[t])^2;
  5. (*数值解-由于尝试解析解导致溢出-故求数值解,设向上为正*)
  6. Do[s=s0[];
  7.    equa={m[]h''[t]-f[\[Rho][P[h[t]],T[h[t]]]]+m[]g==0,h[0]==Subscript[H, 0],h'[0]==0}//Simplify;
  8.    sol0=h/.NDSolve[equa/.Subscript[H, 0]->3000,h,{t,0,10}];
  9. AppendTo[sol,{i,sol0}]
  10. ,{i,6}];
复制代码
但原本以为对这个差值函数求导也不会出现太大偏差,可是绘制这个倒函数图像的时候,突然出现了6条曲线,一开始很近,随后明显分离,这个方程是关于降落伞打开的问题。


参考资料
(1) 空气对自由下落物体的阻力:
     f=1/2 C \[Rho]S v^2(N),
其中v(m/s)是物体下落的速度;S(m^2)是下落物体受力面积;\[Rho](kg/m^3)是空气的密度;比例系数是无量纲的常数,对于平面物体,对于降落伞C=1.4~1.5。

(2) 空气密度的经验公式:
     \[Rho]=(3.48P)/(273+T)(kg/m3),
     
其中P是空气压力,单位为千帕:kPa=kN/m^2;T是空气的摄氏温度值。一般常温(0\[Degree]C-25\[Degree]C)下,海平面的空气密度\[Rho]=1.18~1.29(kg/m^3),实际中海拨高度每上升1000m,空气温度就降低6\[Degree]C。

(3) 大气压力与海拨高度h(m)有关,计算经验公式:
     Subscript[P, h]=1/10 ((44332-h)/11881)^5.256(kPa)。
例如:在海平面上(h=0)温度为0\[Degree]C时,大气压力Subscript[P, 0]=101.325kPa=101325Pa(即N/m^2),称之为标准大气压。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2011-3-23 11:39:39 | 显示全部楼层 来自 上海松江区
Simdroid开发平台
本帖最后由 eigen 于 2011-3-23 11:48 编辑

1# treemantan

用NDSolve求出的数值解点是非常多的,它们对应的插值函数没有必要显式表示出来。可以查看求出的数值解点,然后用三次样条插值方法构造插值多项式。

利用mma内部的程序包InterpolatingFunctionAnatomy查看数值解点相应的信息,例如:如下的
代码得到NDSolve求出的数值解点的坐标和插值多项式的次数。
  1. Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"]
  2. ifun = First[
  3.   x /. NDSolve[{x'[t] == Exp[x[t]] - x[t], x[0] == 1}, x, {t, 0, 10}]]
  4. {coords, ifun[coords]}
  5. InterpolatingFunctionInterpolationOrder[ifun]
复制代码
回复 不支持

使用道具 举报

发表于 2011-3-23 11:46:03 | 显示全部楼层 来自 上海松江区
构造分段插值多项式可以用Piecewise和InterpolatingPolynomial来实现:

  1. pf[x_] = Piecewise[{
  2.    {InterpolatingPolynomial[{{0, 0}, {1, 1}, {2, 3}, {3, 4}}, x],
  3.     x < 2},
  4.    {InterpolatingPolynomial[{{1, 1}, {2, 3}, {3, 4}, {4, 3}}, x],
  5.     2 <= x < 3},
  6.    {InterpolatingPolynomial[{{2, 3}, {3, 4}, {4, 3}, {5, 0}}, x],
  7.     x >=  3}
  8.    }]
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-23 11:59:36 | 显示全部楼层 来自 山东济南
3# eigen
谢谢啊
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-2 21:45 , Processed in 0.044446 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表