一、

1、IPO描述为:
输入:铅球发射角度、 初始速度(m/s)、 初始高度(m)

处理:模拟铅球飞行,时刻更新铅球在飞行中的位置

输出:铅球飞行距离(m)

可以拆分小的时间段。任意时刻的位置,都是 由前面的位置叠加新的时间段位移引起的,最终的控制条件为,当落地时结束,即y轴坐标为0时结束。微分的思想

(1)

 #from math import pi,sin,cos,radians
import math def main():
angle = eval(input("Enter the launch angle (in degrees):"))
vel = eval(input("Enter the initial velocity (in meters/sec):"))
h0 = eval(input("Enter the initial height (in meters):"))
time = eval(input("Enter the time interval: ")) xpos = 0
ypos = h0 theta = math.radians(angle)
xvel = vel * math.cos(theta)
yvel = vel * math.sin(theta) while ypos >= 0:
xpos = xpos + time * xvel
yvell = yvel - time * 9.8
ypos = ypos + time * (yvel + yvell)/2.0
yvel = yvell print("\nDistance traveled:{0:0.1f}meters.".format(xpos)) if __name__ == "__main__":
main()

(2)画出轨迹

 from math import pi,sin,cos,radians
import turtle def drawLine(x, y):#画线
turtle.pendown()
turtle.goto (x, y) def drawText(x, y,n):
turtle.penup()
turtle.goto (x, y)
turtle.pendown()
turtle.write((float("%2.f"%x)/n,float("%2.f"%y)/n))#注意表达方式,只保留两位小数 def main():
angle = eval(input("Enter the launch angle (in degrees):"))
vel = eval(input("Enter the initial velocity (in meters/sec):"))
h0 = eval(input("Enter the initial height (in meters):"))
time = eval(input("Enter the time interval: "))
n=20#显示系数 xpos = 0
ypos = h0 drawLine(500,0) #初始坐标轴
drawLine(0,0)
drawLine(0,300)
drawLine(0,18) theta = radians(angle)
xvel = vel * cos(theta)
yvel = vel * sin(theta) while ypos >= 0:
xpos = xpos + time * xvel
yvell = yvel - time * 9.8
ypos = ypos + time * (yvel + yvell)/2.0
yvel = yvell
drawLine(xpos*n,ypos*n)
drawText(xpos*n,ypos*n,n) turtle.hideturtle()#隐藏箭头
print("\nDistance traveled:{0:0.1f}meters.".format(xpos)) if __name__=="__main__":
main()

引入turtle库,画出轨迹图

(3)程序模块化

 from math import pi,sin,cos,radians

 def getInputs():
angle=eval(input("enter the launch angle (degree):"))
vel = eval(input("Enter the initial velocity (in meters/sec):"))
h0 = eval(input("Enter the initial height (in meters):"))
time = eval(input("Enter the time interval: "))
return angle,vel,h0,time def getXYComponents(vel,angle):
theta=radians(angle)
x=vel*cos(theta)
y=vel*sin(theta)
return x,y def updatePosition(time,xpos,ypos,xvel,yvel):
xpos=xpos+time*xvel
yvell=yvel-9.8*time
ypos=ypos+(yvell+yvel)*time/2
yvel=yvell
return xpos,ypos,yvel def main():
angle,vel,h0,time=getInputs()
xvel,yvel=getXYComponents(vel,angle)
xpos,ypos=0,h0
while ypos>=0:
xpos,ypos,yvel=updatePosition(time,xpos,ypos,xvel,yvel)
print("distance traveled:{0:0.1f}meters.".format(xpos)) if __name__=="__main__":
main()

Python——铅球飞行计算问题的更多相关文章

  1. 使用python做科学计算

    这里总结一个guide,主要针对刚开始做数据挖掘和数据分析的同学 说道统计分析工具你一定想到像excel,spss,sas,matlab以及R语言.R语言是这里面比较火的,它的强项是强大的绘图功能以及 ...

  2. 使用Python做科学计算初探

    今天在搞定Django框架的blog搭建后,尝试一下python的科学计算能力. python的科学计算有三剑客:numpy,scipy,matplotlib. numpy负责数值计算,矩阵操作等: ...

  3. 使用Python做科学计算初探(转)

    今天在搞定Django框架的blog搭建后,尝试一下python的科学计算能力. python的科学计算有三剑客:numpy,scipy,matplotlib. numpy负责数值计算,矩阵操作等: ...

  4. windows下如何快速优雅的使用python的科学计算库?

    Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...

  5. Python之字符串计算(计算器)

    Python之字符串计算(计算器) import re expression = '-1-2*((60+2*(-3-40.0+42425/5)*(9-2*5/3+357/553/3*99/4*2998 ...

  6. Python实现的计算马氏距离算法示例

    Python实现的计算马氏距离算法示例 本文实例讲述了Python实现的计算马氏距离算法.分享给大家供大家参考,具体如下: 我给写成函数调用了 python实现马氏距离源代码:     # encod ...

  7. 使用python装饰器计算函数运行时间的实例

    使用python装饰器计算函数运行时间的实例 装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是 ...

  8. 《Python之BMI计算》

    <Python之BMI计算> 前段时间写了个 BMI 因为刚刚开始学 有几个错误 第一个: 厘米我当时也没注意因为觉得去掉0.00的话后面1866666666是正确的BMI值 刚刚去看看去 ...

  9. 用Python进行实时计算——PyFlink快速入门

    Flink 1.9.0及更高版本支持Python,也就是PyFlink. 在最新版本的Flink 1.10中,PyFlink支持Python用户定义的函数,使您能够在Table API和SQL中注册和 ...

随机推荐

  1. Failed to open the key database file. c;\\User\\w\\Destop\\SecureCRT_FX6.5.3\\Config\\KnowHosts\\Hostsmap.txt这个问题的解决方法

    1.首先将这段错误在百度翻译上面查询一下,是什么意思,查询结果如下: 打开密钥数据库文件失败.C:\用户\ w \平台\ securecrt_fx6.5.3 \\ \\ \\ hostsmap.txt ...

  2. sql数据库在登录异常时 ora-03114:未连接到ORACLE怎么办

    关闭SQL数据,重新启动,登录就好,不要用删除,或者其他方法,如果这麽做还是不可以,那么在想其他办法! 我自己就是这麽做的

  3. 全栈前端入门必看 koa2+mysql+vue+vant 构建简单版移动端博客

    koa2+mysql+vue+vant 构建简单版移动端博客 具体内容展示 开始正文 github地址 <br/> 觉得对你有帮助的话,可以star一下^_^必须安装:<br/> ...

  4. [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行

    一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...

  5. CSS的四种样式

    行内式CSS样式 在标签内部使用的样式 <div id="one" style="width:50p"></div> 内嵌式CSS样式 ...

  6. 什么是SSH与SSH客户端

    1.什么是SSH? SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SS ...

  7. Asp.NET MvC EF实现分页

    打开Visual Studio 2017 选择 项目----->管理nuget包  其他版本也有 输入paged 下载安装 pagedList和pagedList.mvc 在model文件新建一 ...

  8. 基于linux下的NIST数字测试包安装过程

    基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...

  9. Maven pom.xml 添加本地jar包依赖以及打包方法

    Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需 ...

  10. node 微信支付

    基于node 实现微信支付功能 需要了解的网站:微信支付 流程图: 1. 1.我的路由: const Koa = require('koa') const app = new Koa() const ...