找回密码
 欢迎注册
查看: 1047|回复: 15

[原创] 物理求距离题

[复制链接]
发表于 2023-9-17 10:38:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
某人向正上方射一箭,测出箭离弓速度150m/s,过了19秒,箭才落地。已知空气阻力与速度的平方成正比,g取10。求箭射到的最大高度。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-17 23:26:44 来自手机 | 显示全部楼层
来看看有人会做吗?

某人向正上方射一箭,测出箭离弓速度150m/s,过了19秒,箭才落地。已知空气阻力与速度的平方成正比,g取10。

求箭射到的最大高度。

其实对于数学系的来说并不难。 ​​​



解:
设空气阻力比例系数k1
k=k1/m
上升过程:

v‘(t)=-g-k*v(t)^2

v(t)=-sqrt(g/k)*tan(sqrt(g*k)*(t-c))

v(0)=v0

c=sqrt(1/(g*k))*atan(v0*sqrt(k/g))

t1= c=sqrt(1/(g*k))*atan(v0*sqrt(k/g))

速度降为0达到最高点。

y1(x)=1/k*ln(cos(sqrt(g*k)*(t-c)))

最高点:
h=y(t1)-y(0)=-1/k*ln(cos(sqrt(g*k)*c))
=-1/k*ln(cos(atan(v0*sqrt(k/g))))
=1/(2*k)*ln(1+k/g*v0^2)


最高点后下落:

y’’(t)=g-k*y’(t)^2

y(0)=0
y’(0)=0

y(t)=1/k*ln(cosh(sqrt(g*k)*t)

y(t2)=h

cosh(sqrt(g*k)*t2)=1/cos(atan(v0*sqrt(k/g)))
=sqrt(1+k/g*v0^2)


t2=sqrt(1/(g*k))*acosh(sqrt(1+k/g*v0^2))

t1=sqrt(1/(g*k))*atan(v0*sqrt(k/g))


t1+t2=t=19秒。


t
=(atan(v0*sqrt(k/g))+acosh(sqrt(1+k/g*v0^2)))/sqrt(g*k)




带入方程,可以解出来k,然后得到h。


在车上直接手机上解题,有些地方可能有些错误。等回去检查没有错误,再解方程得用得到数值解。


修改了错误,解方程Python代码:

from sympy import *
rn="\r\n"

x,y,t,g,k=symbols('x y t g k')

v0=150
t=19
g=10

f=(atan(v0*sqrt(k/g))+acosh(sqrt(1+k/g*v0**2)))/sqrt(g*k)-t

h=1/(2*k)*ln(1+k/g*v0**2)

eq1=Eq(0,f)

res=nsolve(eq1,k,0.0018278)
print(rn,"k=",res)
print(rn,"h=",h.subs(k,res).evalf())


Python解这方程k的初始值差一点就解不出来,用二分法跑了一个比较接近的0.0018278出来,然后给出这个初值就可以了。

得到结果:

Python3IDE(Python 3.7) running!

k= 0.00182783068073187

h= 446.352011915630
Pytho3IDE run end!

点评

谁的更精确真还不一定。我的是全部推导,最后得到公式带入数据求解方程。并且求解方程我自己也求了的,我的这个k等式误差小于1e-15。明显你的k差距比较大。   发表于 2023-9-18 12:18
结果差不多,我的应该精确些  发表于 2023-9-18 08:51
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-9-18 08:50:24 | 显示全部楼层
ode := diff(y(x), x, x) = -k*(diff(y(x), x))^2-10;
2
d / d \ / d \
--- |--- y(x)| = -k |--- y(x)| - 10
dx \ dx / \ dx /
dsolve(ode);
/ /
1 | |1
y(x) = --- |ln|-- k
2 k \ \10

2\\
/ / (1/2) (1/2) \ / (1/2) (1/2) \\ ||
\_C1 sin\10 k x/ - _C2 cos\10 k x// ||
//
ics := y(0) = 1, (D(y))(0) = 150;
y(0) = 1, D(y)(0) = 150
dsolve({ics, ode});
1 / /1 / / (1/2) (1/2) \ (1/2)
y(x) = --- |ln|-- \150 sin\10 k x/ k
2 k \ \10

/ (1/2) (1/2) \ (1/2)\ \ \
+ cos\10 k x/ 10 /^2| + 2 k|
/ /
diff((1/2)*(ln((1/10)*(150*sin(sqrt(10)*sqrt(k)*x)*sqrt(k)+cos(sqrt(10)*sqrt(k)*x)*sqrt(10))^2)+2*k)/k, x);
/ (1/2) / (1/2) (1/2) \
\150 10 k cos\10 k x/

/ (1/2) (1/2) \ (1/2)\/// / (1/2) (1/2) \
- 10 sin\10 k x/ k / \\150 sin\10 k x/

(1/2) / (1/2) (1/2) \ (1/2)\ \
k + cos\10 k x/ 10 / k/
solve((150*sqrt(10)*k*cos(sqrt(10)*sqrt(k)*x)-10*sin(sqrt(10)*sqrt(k)*x)*sqrt(k))/((150*sin(sqrt(10)*sqrt(k)*x)*sqrt(k)+cos(sqrt(10)*sqrt(k)*x)*sqrt(10))*k) = 0, x);
/ (1/2) (1/2)\ (1/2)
arctan\15 10 k / 10
---------------------------------
(1/2)
10 k
(1/2)*(ln((1/10)*(150*sin((1/10)*sqrt(10)*sqrt(k)*(arctan(15*sqrt(10)*sqrt(k))*sqrt(10)/sqrt(k)))*sqrt(k)+cos((1/10)*sqrt(10)*sqrt(k)*(arctan(15*sqrt(10)*sqrt(k))*sqrt(10)/sqrt(k)))*sqrt(10))^2)+2*k)/k;
/ 2\
| / (1/2) (1/2) \ |
|1 | 2250 10 k 10 | |
ln|-- |----------------- + -----------------| | + 2 k
|10 | (1/2) (1/2)| |
\ \(2250 k + 1) (2250 k + 1) / /
-----------------------------------------------------
2 k
dsolve({diff(y(x), x, x) = -k*(diff(y(x), x))^2+10, y(0) = 0, (D(y))(0) = 0});
(1/2) (1/2) /1 / (1/2) (1/2) \ 1\
10 k x - ln|- exp\2 10 k x/ + -|
\2 2/
y(x) = - ----------------------------------------------------
k
solve((1/2)*(ln((1/10)*(2250*sqrt(10)*k/sqrt(2250*k+1)+sqrt(10)/sqrt(2250*k+1))^2)+2*k)/k = -(sqrt(10)*sqrt(k)*x-ln((1/2)*exp(2*sqrt(10)*sqrt(k)*x)+1/2))/k, x);
1 / / /
--------- \ln\4500 k exp(2 k) + 2 exp(2 k) - 1 + 2 \5062500
(1/2)
20 k

2 2 2 2
(exp(2 k)) k + 4500 (exp(2 k)) k + (exp(2 k))

\ \ (1/2)\ 1 / /
- 2250 k exp(2 k) - exp(2 k)/^(1/2)/ 10 /, --------- \ln\
(1/2)
20 k

/ 2 2
4500 k exp(2 k) + 2 exp(2 k) - 1 - 2 \5062500 (exp(2 k)) k

2 2
+ 4500 (exp(2 k)) k + (exp(2 k)) - 2250 k exp(2 k)

\ \ (1/2)\
- exp(2 k)/^(1/2)/ 10 /
fsolve((1/20)*ln(4500*k*exp(2*k)+2*exp(2*k)-1+2*sqrt(5062500*(exp(2*k))^2*k^2+4500*(exp(2*k))^2*k+(exp(2*k))^2-2250*k*exp(2*k)-exp(2*k)))*sqrt(10)/sqrt(k)+(1/10)*arctan(15*sqrt(10)*sqrt(k))*sqrt(10)/sqrt(k) = 19.0, k);
0.001833688277
(1/2)*(ln((1/10)*((2250*sqrt(10)*0.1833688277e-2)/sqrt(2250*0.1833688277e-2+1)+sqrt(10)/sqrt(2250*0.1833688277e-2+1))^2)+2*0.1833688277e-2)/(0.1833688277e-2);
446.6281808

点评

nyy
排版太差了,我受不了了,真不想排版,就传张截图上来也好的  发表于 2023-9-18 09:06
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-18 09:04:56 | 显示全部楼层
有一个问题:你不考虑弓箭的高度吗?你不考虑射弓箭的人的高度吗?

点评

躺着射  发表于 2023-9-18 13:04
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-18 19:11:30 | 显示全部楼层
本帖最后由 BeerRabbit 于 2023-9-18 19:14 编辑

QQ图片20230918191059.png

点评

t=(atan(v0*sqrt(k/g))+acosh(sqrt(1+k/g*v0^2)))/sqrt(g*k) 这个图像非常好,可以非常直观的看出来k和t的走势。 可以再把h=1/(2k)*ln(1+k*v0^2/g)也同时画出来。  发表于 2023-9-19 10:14
nyy
你是对的,我忽略了下降的时候方向变了  发表于 2023-9-19 09:24
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-9-19 09:09:56 | 显示全部楼层
dsol1 := dsolve({diff(y(x), x, x) = -0.182783e-2*(diff(y(x), x))*abs(diff(y(x), x))-10, y(0) = 0, (D(y))(0) = 150}, numeric);
proc(x_rkf45)  ...  end;
dsol1(19);
        [                                             
        [x = 19., y(x) = HFloat(2.173553009866963e-4),
        [                                             

           d                                   ]
          --- y(x) = HFloat(-66.33910922967442)]
           dx                                  ]
dsol1(8.23003855);
      [                                                   
      [x = 8.23003855, y(x) = HFloat(446.35211350204213),
      [                                                   

         d                                       ]
        --- y(x) = HFloat(-1.2608836752470154e-8)]
         dx                                      ]

点评

用一个方程就行,解边值问题y(0) = 0, y(19) = 0,(D(y))(0) = 150  发表于 2023-9-19 09:11
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-19 09:58:10 来自手机 | 显示全部楼层
本帖最后由 yuange1975 于 2023-9-19 11:22 编辑

t=(atan(v0*sqrt(k/g))+acosh(sqrt(1+k/g*v0^2)))/sqrt(g*k)

h=1/(2k)*ln(1+k/g*v0^2)

前面都已经给出来这么好的公式了,就一个简单的解出k带入算出h就可以了。

这个公式也可以看出k趋于0的时候t=2*v0/g,h=1/2*v0^2/g,和无阻力的情况也吻合。


比较好的习惯是先用字母公式,得到简化好的结果,最后再带入数据。这样可以得到通用此类的结果,以后再遇到同类题,就可以直接引用。

我常说我们解题要学会一次解一类题,而不是一次解一个题。

以后遇到空气阻力的上升、下降方程都有了,解题也很方便了。


中间就一步步都带入数据,以后再遇到同类问题,还会重复过程。
再就是中间就带入数据会一步步产生误差,最后误差扩大。现在都计算机和程序方便,每次精度取够高最后也不怕误差扩大,但是没有计算机都时候手算呢?

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-19 17:59:51 | 显示全部楼层
yuange1975 发表于 2023-9-19 09:58
t=(atan(v0*sqrt(k/g))+acosh(sqrt(1+k/g*v0^2)))/sqrt(g*k)

h=1/(2k)*ln(1+k/g*v0^2)

根据7#, 记 t=1, 2, 3, 4, 5,......19秒, 是这么一串数吗?
1, 4, 10, 18, 28, 41, 57, 75, 96, 119, 145, 174, 205, 239, 275 ,314, 356, 400, 446.3521,
根据7#,v=150,g=10, 记 t=1, 2, 3, 4, 5,......19秒, 是这么一串数吗?
1, 4, 10, 18, 28, 41, 57, 75, 96, 119, 145, 174, 205, 239, 275 ,314, 356, 400, 446.3521,
根据7#,v=1500,g=10, 记 t=1, 2, 3, 4, 5,......19秒, 是这么一串数吗?
1, 3,  8, 14, 23, 34, 46, 61, 78,  98,  119, 143, 169, 197, 228, 261, 296, 334, 373.63168869400
  1. Table[FindRoot[{h==Log[v^2*k/g+1]/(2k),ArcCosh[Sqrt[(v^2*k+g)/g]]+ArcTan[Sqrt[(v^2*k)/g]]==t*Sqrt[g*k]},{{h,1},{k,1}},WorkingPrecision->9],{v,150,150},{g,10,10},{t,1,19}]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-9-26 11:48:19 | 显示全部楼层
好难,不会
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-28 00:02 , Processed in 0.059464 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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