数学建模python matlab 编程(喷泉模拟)
在无风情况下的喷泉模拟
我的python代码
import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt tt = np.linspace(0,4,1000)
#y = -tt**2+4*tt
#plt.plot(tt,y,linestyle='--') # 没有风
vy0=10
g=10
vx0=5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
vy0 -= g*dt
x.append(x0)
y.append(y0)
if y0<0:
break
plt.plot(x,y,linestyle='--')

在右边风情况下的喷泉模拟
我的python代码
# 有向右的风
vy0=10
g=10
vx0=5
a = 1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
vy0 -= g*dt
vx0 -= a*dt
x.append(x0)
y.append(y0)
if y0<0:
break
plt.plot(x,y)

在左边风情况下的喷泉模拟
我的python代码
# 有向左的风
vy0=10
g=10
vx0=5
a = -1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
vy0 -= g*dt
vx0 -= a*dt
x.append(x0)
y.append(y0)
if y0<0:
break
plt.plot(x,y)

所有代码
# -*- coding: utf-8 -*- import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt tt = np.linspace(0,4,1000)
#y = -tt**2+4*tt
#plt.plot(tt,y,linestyle='--') # 没有风
vy0=10
g=10
vx0=5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
vy0 -= g*dt
x.append(x0)
y.append(y0)
if y0<0:
break
plt.plot(x,y,linestyle='--') # 有向右的风
vy0=10
g=10
vx0=5
a = 1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
vy0 -= g*dt
vx0 -= a*dt
x.append(x0)
y.append(y0)
if y0<0:
break
plt.plot(x,y) # 有向左的风
vy0=10
g=10
vx0=5
a = -1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
vy0 -= g*dt
vx0 -= a*dt
x.append(x0)
y.append(y0)
if y0<0:
break
plt.plot(x,y)

喷泉散落在地上模拟
import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt
from scipy.stats import norm
a1_list = random.uniform(0,0.5) # 生成一组正太分布的加速度,均值是0,方差是0.5
a1_list = norm.rvs(a1_list, size=1000)
a2_list = random.uniform(0,0.5)
a2_list = norm.rvs(a2_list, size=1000)
X0=[]
X1=[]
# 对每一组加速度
for i in range(1000):
vy0=10
g=10
vx0=5
vx1=5
a1 = a1_list[i]
a2 = a2_list[i]
x0=0
x1=0
y0=0
dt = 4/1000
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
x1 += vx1*dt vy0 -= g*dt
vx0 -= a1*dt
vx1 -= a2*dt if y0<0:
break
X0.append(x0)
X1.append(x1) plt.scatter(X0,X1)

炫酷喷泉三维图
from mpl_toolkits.mplot3d import axes3d
from scipy.stats import norm
a1_list = random.uniform(0,0.2) # 生成一组正太分布的加速度,均值是0,方差是0.5
a1_list = norm.rvs(a1_list, size=100)
a2_list = random.uniform(0,0.2)
a2_list = norm.rvs(a2_list, size=100)
X0=[]
X1=[]
# 对每一组
ax=plt.subplot(111,projection='3d')
for i in range(100):
vy0=10
g=10
vx0=5
vx1=5
a1 = a1_list[i]
a2 = a2_list[i]
xx0=[]
xx1=[]
y=[]
x0=0
x1=0
y0=0
dt = 4/1000
for t in tt:
y0 += vy0*dt
x0 += vx0*dt
x1 += vx1*dt
vy0 -= g*dt
vx0 -= a1*dt
vx1 -= a2*dt
xx0.append(x0)
xx1.append(x1)
y.append(y0)
if y0<0:
break
# X0.append(x0)
# X1.append(x1) ax.plot(xx0,xx1,y,'--') plt.show()



数学建模python matlab 编程(喷泉模拟)的更多相关文章
- 数学建模python matlab 编程(疾病传播模型)
例12:一只游船上有800(1000)人,一名游客不慎患传染病,12(10)小时后有3人发病,由于船上不能及时隔离,问经过60(30)小时,72小时,患此病的人数.(与人口模型和Logistic模型类 ...
- 数学建模python matlab 编程(指派问题)
指派授课问题 现有A.B.C.D四门课程,需由甲.乙.丙.丁四人讲授,并且规定: 每人只讲且必须讲1门课:每门课必须且只需1人讲. 四人分别讲每门课的费用示于表中: 课 费用 人 A B C D 甲 ...
- 数学建模python matlab 编程(随机游走问题)
1 (1). 随机游走问题.在-10到10的一维线段上,质点以1/5的概率用左运动1单位,以2/5的概率停止不动,以2/5的概率向右运动2单位,且碰到-10时向右运动3单位,碰到10时向左运动4单位. ...
- 数学建模python matlab 编程(椭圆声学原理画图证明,解析几何)
证明,在椭圆形的音乐厅内,从一个椭圆的一个焦点发出声音,则另一个焦点听到的声音是最大的. 分析:证明,从椭圆的一个焦点任意发射的直线经过反射后,并经过另一个焦点. 画图,过一个焦 ...
- 在数学建模中学MATLAB
为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137 ...
- 【数学建模】MatLab 数据读写方法汇总
1.读入 txt 文件数据. load xxx.txt A=load(‘xxx.txt’) A=dlmread(‘xxx.txt’) A=importdata(‘xxx.txt’) 例:将身高体重的 ...
- 【数学建模】MATLAB语法
一.向量.矩阵的表示和使用 format long %小数很多format short %默认4位小数format rat %显示最近的分数format short e %指数格式的数 尾数多少 e ...
- 【数学建模】MATLAB学习笔记——函数式文件
MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...
- python 并发编程 多进程 模拟抢票
抢票是并发执行 多个进程可以访问同一个文件 多个进程共享同一文件,我们可以把文件当数据库,用多个进程模拟多个人执行抢票任务 db.txt {"count": 1} 并发运行,效率高 ...
随机推荐
- Centos7下安装Elasticsearch 5.6.6
环境 因为elasticsearch是用java编写的,所以需要先安装JDK ES 5,安装需要 JDK 8 以上ES 6.5,安装需要 JDK 11 以上ES 7.2.1,内置了 JDK 12 安装 ...
- 0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)
所谓的@EnableWebMvc全面接管SpringMVC的自动配置,是指@EnableWebMvc注解会使SpringMVC的自动配置失效,原理如下: 1.查看@EnableWebMvc的源码,如下 ...
- Lua 学习之基础篇九<Lua 协同程序(Coroutine)>
引言 讲到协程,首先来介绍一下线程和协程的区别 lua协程和多线程 相同之处:拥有自己独立的桟.局部变量和PC计数器,同时又与其他协程共享全局变量和其他大部分东西 不同之处:一个多线程程序可以同时运行 ...
- Oracle-锁的查询和处理
1.查出锁定object的session的信息以及被锁定的object名 SELECT L.SESSION_ID SID, S.SERIAL#, L.LOCKED_MODE, L.ORACLE_USE ...
- vulkan gpu limits in mali
https://community.arm.com/developer/tools-software/graphics/b/blog/posts/memory-limits-with-vulkan-o ...
- chrome插件编写中需要了解的几个概念和一些方法
1.插件文件结构 1.1.manifest.json 每一个扩展.可安装的WebApp.皮肤,都有一个JSON格式的manifest文件,里面存放重要的插件相关信息. 一个最基本的配置例子: { &q ...
- Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新(转)
实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的sql,你也得看看你说操作的数据库是否支持,而阿福,最近就遇到这样的一个坑. ...
- An Introduction to Laravel Policy
An Introduction to Laravel Policy 30 Dec 2018 . Laravel. 7.6K views If you heard about Laravel Polic ...
- CF103D Time to Raid Cowavans 根号分治+离线
题意: 给定序列 $a,m$ 次询问,每次询问给出 $t,k$. 求 $a_{t}+a_{t+k}+a_{t+2k}+.....a_{t+pk}$ 其中 $t+(p+1)k>n$ 题解: 这种跳 ...
- sigaction()函数
sigaction函数 修改信号处理动作(通常在Linux用其来注册一个信号的捕捉函数) int sigaction(int signum, const struct sigaction *act, ...