物理求距离题
某人向正上方射一箭,测出箭离弓速度150m/s,过了19秒,箭才落地。已知空气阻力与速度的平方成正比,g取10。求箭射到的最大高度。 来看看有人会做吗?某人向正上方射一箭,测出箭离弓速度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!
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 有一个问题:你不考虑弓箭的高度吗?你不考虑射弓箭的人的高度吗? 本帖最后由 BeerRabbit 于 2023-9-18 19:14 编辑
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 ]
本帖最后由 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,和无阻力的情况也吻合。
比较好的习惯是先用字母公式,得到简化好的结果,最后再带入数据。这样可以得到通用此类的结果,以后再遇到同类题,就可以直接引用。
我常说我们解题要学会一次解一类题,而不是一次解一个题。
以后遇到空气阻力的上升、下降方程都有了,解题也很方便了。
中间就一步步都带入数据,以后再遇到同类问题,还会重复过程。
再就是中间就带入数据会一步步产生误差,最后误差扩大。现在都计算机和程序方便,每次精度取够高最后也不怕误差扩大,但是没有计算机都时候手算呢?
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
Table/(2k),ArcCosh]+ArcTan]==t*Sqrt},{{h,1},{k,1}},WorkingPrecision->9],{v,150,150},{g,10,10},{t,1,19}] 好难,不会
页:
[1]