手把手教你用Python来模拟绘制自由落体运动过程中的抛物线(附源码)

开发 后端
本文基于粉丝提问,针对自由落体运动过程中产生的抛物线,使用Python来作图的问题,给出了具体的实现方案,顺利帮助粉丝解决了问题。

[[430233]]

大家好,我是Python进阶者。

前言

前几天有个叫【-berry】的粉丝在问了一道关于自由落体运动过程中产生的抛物线作图的问题,如下图所示。

当某个物体以初速度v水平抛出,其轨迹为一条抛物线,模拟绘制这条抛物线。用高中物理知识,我们肯定可以轻易实现,但是今天我们需要用Python进行实现,稍微有些难度了。

一、思路

其实解决问题的关键点就是在于两点。其一是基于加速度公式,通过Python得到对应的x和y的点值;其二是针对这些点集进行作图。这里例举一种方法,小编想象肯定还有其他的方法的,也欢迎大家在评论区谏言。

二、分析

我们需要定义一个列表,用于存储物体的坐标值,其中总高度我们可以自己自定义,之后水平上的位置和垂直高度的位置都可以通过相关公式进行计算,将每次计算得到的点集追加到列表之后,之后调用作图函数进行绘制抛物线,具体实现如下。

三、具体实现

直接上代码,如下所示:

  1. # coding: utf-8 
  2. from matplotlib import pyplot as plt 
  3.  
  4.  
  5. def pwx(v, h): 
  6.     yx = []  # 定义一列表 
  7.     # 物体从高处位置为点50米的地方 
  8.     g = 9.8 
  9.     height = 5  # 这个是常量每运行一行为5米 
  10.     hh = 5*v  # 总高度 
  11.     for i in range(h): 
  12.         y = height 
  13.         height = y+5 
  14.         x = int(v*(2*y*(1/9.8))**0.5) 
  15.         yx.append((hh, x)) 
  16.         hh -= 5 
  17.     return yx 
  18.  
  19.  
  20. def huaxian(yx): 
  21.     plt.title("Parabolic trajectory curve")  
  22.     plt.xlabel("x")  
  23.     plt.ylabel("y")  
  24.     for y, x in yx: 
  25.         plt.plot(x, y, "*"
  26.         print(y, x) 
  27.     plt.show() 
  28.  
  29.  
  30. def main(): 
  31.     v = int(input("请输入初速度v:  ")) 
  32.     h = int(input("请输入绘制行数h:  ")) 
  33.     yx = pwx(v, h) 
  34.     huaxian(yx) 
  35.  
  36.  
  37. if __name__ == "__main__"
  38.     main() 

当在Pycharm中运行之后,输入初速度为10,绘制行数为10之后,程序就会自动跑起来,如下图所示:

之后matplotlib库会给我们呈现一个完美的抛物线图,如下图所示:

四、总结

我是Python进阶者。本文基于粉丝提问,针对自由落体运动过程中产生的抛物线,使用Python来作图的问题,给出了具体的实现方案,顺利帮助粉丝解决了问题。

 

责任编辑:姜华 来源: Python爬虫与数据挖掘
相关推荐

2021-10-22 09:02:38

Python平抛运动Python基础

2021-08-09 13:31:25

PythonExcel代码

2009-08-27 18:10:58

PHP绘制3D图形

2021-03-23 09:05:52

PythonExcelVlookup

2022-10-19 14:30:59

2018-12-10 10:00:06

Python神经网络编程语言

2021-05-10 06:48:11

Python腾讯招聘

2021-12-11 20:20:19

Python算法线性

2021-02-02 13:31:35

Pycharm系统技巧Python

2021-02-04 09:00:57

SQLDjango原生

2011-03-28 16:14:38

jQuery

2021-02-06 14:55:05

大数据pandas数据分析

2022-08-04 10:39:23

Jenkins集成CD

2021-05-17 21:30:06

Python求均值中值

2009-04-22 09:17:19

LINQSQL基础

2021-02-10 09:34:40

Python文件的压缩PyCharm

2021-01-21 09:10:29

ECharts柱状图大数据

2021-01-08 10:32:24

Charts折线图数据可视化

2012-01-11 13:40:35

移动应用云服务

2020-03-08 22:06:16

Python数据IP
点赞
收藏

51CTO技术栈公众号