利用mathematica模拟炮弹轨迹
版权声明:转载请注明原作者及出处
1-明确各参数物理含义
m表示发射物质量(kg)
g表示重力加速度(m/s^2)
c表示阻力系数(无量纲),一般取决于炮弹几何外形和雷诺数,参考https://en.wikipedia.org/wiki/Drag_coefficient
a表示空气密度(1.29kg/m^3)
S表示炮弹迎风面积(m^2)
energy表示炮弹离开炮管时具备的动能(J)
theta表示炮弹发射角(rad)
vx0表示炮弹水平x方向初速度(m/s)
vy0表示炮弹竖直y方向初速度(m/s)
2-进行数值计算与作图的mathematica代码
m = 45; *各项数值初始化*
g = 9.8;c = 0.04;
a = 1.29;
S = 0.02;
k = 0.5*c*a*S;energy = 32 10^6;
theta = Pi/4;
vx0 = Sqrt[2*energy/m]*Cos[theta];
vy0 = Sqrt[2*energy/m]*Sin[theta];
s1 = NDSolve[{ *NDSolve解微分方程组*vx'[t] == ((-k (vx[t]^2 + vy[t]^2))/m )*Cos[ArcTan[vy[t]/vx[t]]],vy'[t] == ((-k (vx[t]^2 + vy[t]^2))/m )*Sin[ArcTan[vy[t]/vx[t]]] - g,x'[t] == vx[t],y'[t] == vy[t],vx[0] == vx0, vy[0] == vy0, x[0] == 0, y[0] == 0},{vx, vy, x, y},{t, 0, 300}];
ParametricPlot[Evaluate[{x[t], y[t]} /. s1], {t, 0, 150},PlotRange -> {Full, Full}] *将数值解做出参数图*
3-可变参数的数值计算与作图的mathematica代码
m = 45; *各项数值初始化*
g = 9.8;c = 0.04;
a = 1.29;
S = 0.02;
k = 0.5*c*a*S;energy = 32 10^6;
theta = Pi/4;
vx0 = Sqrt[2*energy/m] Cos[theta];
vy0 = Sqrt[2*energy/m] Sin[theta];Manipulate[Module[{s1 = NDSolve[{vx'[t] == ((-k (vx[t]^2 + vy[t]^2))/m)*Cos[ArcTan[vy[t]/vx[t]]],vy'[t] == ((-k (vx[t]^2 + vy[t]^2))/m)*Sin[ArcTan[vy[t]/vx[t]]] - g,x'[t] == vx[t],y'[t] == vy[t],vx[0] == vx0, vy[0] == vy0, x[0] == 0, y[0] == 0},{vx, vy, x, y},{t, 0, 300}]},ParametricPlot[Evaluate[{x[t], y[t]} /. s1], {t, 0, time},PlotRange -> {{0, 200000}, {0, 50000}}]],{k, 0.004*0.5*0.02*1.29, 0.04*0.5*0.02*1.29}, {{time, 150}, 1, 300}]
*设置表示炮弹飞行时间的time参数可变*
*设置表示风阻的k参数可变*
结果显示如上,由于博客内部无法展现mathematica的交互性,需要大家亲自实践才能体会其中的动态变化。
总结
此处考虑了与速度平方成正比的空气阻力,由于各项参数找不到准确值,设置一个可变参数范围,观察炮弹轨迹随着可变参数的变化规律才是最理想的。
利用mathematica模拟炮弹轨迹相关推荐
- matlab 回退到上一行,对乒乓球回滚的分析与MATLAB模拟-利用 Mathematica 模拟乒乓球滚动 - PS下...
虽然matlab远多于mathematica.工程系本科会有matlab课,但没注意到有mathematica的课.研究生基本都会matlab,但会mathematica的很少.这这并不代表mathe ...
- matlab体电荷电场线,利用Matlab模拟点电荷系的电场线和等势面.docx
利用Matlab模拟点电荷系的电场线和等势面 文章编号:1007-2934(2014)03-0094-03利用 Matlab 模拟点电荷系的电场线和等势面陈伟,易志俊,丁益民( 湖北大学,湖北 武汉 ...
- Mathematica实例——利用Mathematica演示量子力学中的波包演化
1背景介绍 在量子力学中,一个粒子对应一个在时空中演化的波函数 ,与经典力学中仅仅具有质量.位置.速度等属性的点粒子有很大不同.这种"波粒二象性"常常给初学者带来理解上的困难.我们 ...
- Delphi下利用WinIo模拟鼠标键盘详解
本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...
- python post请求 上传图片_利用python模拟实现POST请求提交图片的方法
本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...
- matlab腔内光子寿命,mcFORnp matlab环境下,利用蒙特卡洛模拟光子包在生物组织内的光路传输 271万源代码下载- www.pudn.com...
文件名称: mcFORnp下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 215 KB 上传时间: 2014-12-29 下载次数: 8 提 供 者: 徐某 ...
- 利用PostMan 模拟上传/下载文件(亲测)
来源:利用PostMan 模拟上传/下载文件 - 王若伊_恩赐解脱 - 博客园 我们经常用postman模拟各种http请求.但是有时候因为业务需要,我们需要测试上传下载功能.其实postman也是很 ...
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- wordpress python 采集_Python3利用Selenium3模拟wordpress博客登陆
像小雨主要是玩 WordPress 的,很多网站也需要登陆后才可以进行下一步操作,所以我们单独来讲一讲如何利用 Python3 模拟 wordpress 博客登陆 首先还是安装 selenium 模块 ...
最新文章
- [Tool] 使用CodeMaid自動程式排版 - 摘自网络
- 图片瀑布流Html,真的!!!两行css代码实现瀑布流,html,css最简单的瀑布流实现方式且没有缺点...
- hashmap移除元素_Java HashMap 如何正确遍历并删除元素的方法小结
- 3、java中的数据类型和运算符
- windows系统 安装MongoDB
- C++之编写dll库
- android 预约挂号代码_还在医院苦苦排队挂号?Python定时自动挂号和快捷查询化验报告!...
- 计算机毕设应用型开题报告,毕设开题报告范文.doc
- C++ 超级玛丽制作揭秘(包含完整源文件与文档)
- linux查看内存和硬盘,Linux 查看内存,CPU及硬盘大小的步骤
- 教你快速缩小多个横屏短视频画面的两种方法
- 超详细的fiddler教程,从小白到精通(五)❤️
- Android 系统原生TTS使用
- Springboot+vue项目实验室管理系统
- 知云文献翻译 for mac
- c语言程序设计 doc,C语言程序设计61844.doc
- 深度学习环境搭建超级详解(Miniconda、pytorch安装)
- 动态更新initialValue的值
- 激光原理学习笔记(一、激光基本原理)
- html+CSS让背景图片充满整个屏幕