【2023.03.20】P4710 「物理」平抛运动

  金牌会员 | 2023-5-23 19:53:59 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 868|帖子 868|积分 2604

题目传送门:
【洛谷】P4710 [物理]平抛运动
Step 1:前置芝士

您需要知道并了解以下芝士:

  • 数学:

    • 三角函数;

  • 物理:

    • 加速度公式;
    • 位移公式;

那么如果您并不了解以上芝士,那么请继续向下看;如果您已经掌握以上芝士,那么请跳至“Step 2”。
三角函数讲解:

注意,本题为物理题解,故不会放出三角函数作图过程、函数图像、拓展公式、常考题型、易错题型等,若需要请参考以下链接:
Bilibili:  Link
WeChat:  Link
如图,三角形ABC为直角三角形,∠B为直角,∠A为θ。其中线段AB长为c,线段BC长为a,线段AC长为b。

那么对于直角三角形,它有六种三角函数:

  • 正弦(sin)
  • 余弦(cos)
  • 正切(tan)
  • 余切(cot)
  • 正割(sec)
  • 余割(csc)
那他们都等于什么呢:

\[\sin θ = \frac{对边}{斜边} = \frac{a}{b};\]

\[\cos θ = \frac{邻边}{斜边} = \frac{c}{b};\]

\[\tan θ = \frac{对边}{邻边} = \frac{a}{c};\]

\[\cot θ = \frac{邻边}{对边} = \frac{c}{a};\]

\[\sec θ = \frac{斜边}{邻边} = \frac{b}{c};\]

\[\csc θ = \frac{斜边}{对边} = \frac{b}{a};\]
好了,关于三角函数知道这么多已经足够我们做这道题了。
加速度公式:


\[a = \frac{(v_t - v_0)}{t};\]
其中,\(a\)为加速度;\(v_t\)为最终速度;\(v_0\)为初始速度;\(t\)为运动时间;
位移公式:


\[s = v_0 \times t + \frac{a \times t ^ 2}{2};\]
其中,\(a\)为加速度;\(v_0\)为初始速度;\(t\)为运动时间;\(s\)为位移;
Step 2:正文

先看题目:
一个可以视为质点的小球在点 \(A(x_0, y_0)\) 沿 \(x\) 轴负方向以某速度抛出,无视除重力外的所有阻力,最后恰好以速度 \(v\) 砸到 \(B(0, 0)\) 点。
易知,小球是在做平抛运动(看题目就知道了,那么我们可以将平抛运动看做一个水平方向的匀速直线运动(只因无视所有阻力,则在水平方向不受力)和一个竖直方向的匀加速运动。在这个匀加速运动中,它的初速度为零,并且只受重力作用,所以是在做自由落体运动。
那么,我们就把题目给出的速度分成两个速度:水平方向的速度与竖直方向的速度。对于水平方向的速度,它是恒不变的,因为本题目无视所有阻力;而对于竖直方向的速度,它是在匀速增加的(重力加速度)。
看到题目是给的角度那么我们就应该想到三角函数。就按题目中最后一个图:

按上图说,我们可以求出竖直方向的最终速度vy:

\[vy = v \cos θ\]
又有重力加速度的公式:

\[v = tg\]
题目已经求出了竖直方向最终速度,那么我们就可以用它求出时间,设重力加速度为g,则有:

\[t = \frac{vy}{g}\]
酱紫我们就可以这么表示时间t:

\[t = \frac{v \cos θ}{g}\]
再由位移公式求出竖直方向的位移即纵坐标就好啦:

\[sy = v0(即为零) \times \frac{v \cos θ}{g} + \frac{g \times (\frac{v \cos θ}{g})^2}{2}\]
分析完竖直方向,我们再看看水平方向。上面已经解释过了水平方向是在做匀速直线运动,那最终的水平方向位移即横坐标sx:

\[sx = vx \times t\]
同时它也可以酱紫表示:

\[sx = vx \times \frac{v \cos θ}{g}\]
我们再去分析水平方向的速度,继续按介个图说:

显然良心出题人已经帮我们标出来了:

\[vx = v \sin θ\]
那我们再将这个式子代入sx的式子中:

\[sx = v \sin θ \times \frac{v \cos θ}{g}\]
我们就又可以表示出横坐标啦!下面就是码代码就好啦。
Step 3:代码

直接放代码了就:
Link[code]#include using namespace std;double sx,sy;double vx,vy;double v,d,g,t;int main(){        //freopen(".in","r",stdin);        //freopen(".out","w",stdout);        cin>>v;        cin>>d;        g=10.0;        t=v*cos(d)*1.0/g;        sy=(g*t*t)/2;        sx=v*sin(d);        sx*=t;        cout

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表