matplotlib模拟重力场中粒子的分布
import numpy as np
import matplotlib.pyplot as plt
from scipy import constants as const
import random
'''
分子在重力场中的分布
h=0处的分子密度为n0,任一高度h处的分子数密度
n = n0 * math.exp(-u*g*h/kT)
u是分子重量,T是温度
这里把kT用T用一个参数T来表示
'''
#为便于表示,参数设置与实际不符
T = 30
u1 = 0.01 #第一种粒子
u2 = 0.1 #第二种粒子
g = const.g
n0 = 10#最初两种粒子分别设置100个随机的,python自带的random一次只能生成一个,用np的
data1_x = np.random.randint(0,50,100)#范围内的整数
data1_y = np.random.randint(0,60,100)
data2_x = np.random.randint(0,50,100)
data2_y = np.random.randint(0,60,100)fix, ax = plt.subplots(nrows=2,ncols=1)#随机分布
ax[0].set_title("Random")
dots1 = ax[0].plot([data1_x],[data1_y],'bo')
dots2 = ax[0].plot([data2_x],[data2_y],'ro')#气体分子在重力场分布
h = np.linspace(0,60,20)
data1_g_n = n0 * np.exp(-u1*g*h/T)
data2_g_n = n0 * np.exp(-u2*g*h/T) #计算出粒子在每个高度上的数量,接下来按数量在横坐标上随机分布就好
print(data1_g_n)
print(data2_g_n)
data1_g_x = []
data1_g_y = []
data2_g_x = []
data2_g_y = []
for i in range(0,20):#注意extend和appendfor j in range(len(data1_g_n)):x = random.uniform(0, 50)data1_g_x.append(x)for j in range(len(data2_g_n)):data2_g_x.append(random.uniform(0, 50))data1_g_y.extend([3 * i] * int(data1_g_n[i]))data2_g_y.extend(([3 * i] * int(data2_g_n[i])))ax[1].set_title("Distribution in gravity field")
ax[1].set_ylabel('High')
dots1_g = ax[1].plot([data1_g_x],[data1_g_y],'bo',label='Weight=0.01')
dots2_g = ax[1].plot([data2_g_x],[data2_g_y],'ro',label='Weight=0.1')
plt.savefig('aa.jpg')
plt.show()
图中上子图是随机分布的粒子, 下子图是重力场分布的粒子,粒子在底部分布较多,其中红色粒子重量是蓝色粒子的10倍,看起来更直观。
将温度设置为100再看图,发现粒子的分布明显发生了变化,高处粒子多了起来。
matplotlib模拟重力场中粒子的分布相关推荐
- python做电磁场计算_加速Python中的计算(模拟磁场中的粒子)
用Python编写的程序速度有问题.该程序是"模拟磁场中的铁磁颗粒",更具体地说是磁惰性液体.该程序可以工作,但与用C ++编写的相同程序相比非常缓慢,但是我用Python编写了一 ...
- 【统计分析】(task5) 金融量化分析与随机模拟(通过随机模拟估计看涨期权的报酬分布)
内容总结 学习datawhale的gitmodel教程.小郭为了锁定价格波动风险,签订合约即买进看涨期权:提前给榴莲超市2块权利金,现在榴莲30元一块(期权的标的资产),下个月能用20元买到一块榴莲( ...
- EAGLE模拟数据中提取大量星系数据的一些方法
0.这里的EAGLE是什么 EAGLE (Evolution and Assembly of GaLaxies and their Environments) 是一系列不同大小及模型的宇宙学模拟实验, ...
- 使用Python模拟武侠小说中两派人的一场遭遇战。
使用Python模拟武侠小说中两派人的一场遭遇战. 每个人都有名字.血量(HP) .一系列技能及技能对应的攻击输出.每个人的攻击方式均一致,即随机从自己的技能包中抽取一个技能进行攻击.两派人(自己命名 ...
- MIT教授: 世界就是《黑客帝国》,人类在模拟游戏中扮演角色
转载于 新智元 编辑:元子 MIT教授认为我们目前有50%-100%的概率生活在<黑客帝国>那样的计算机模拟世界中,所谓现实可能不过是一种幻觉.而距离我们创建自己的模拟世界,最多需 ...
- 本周AI热点回顾:机器人写稿同样拥有著作权、大脑中竟存在“分布强化学习”
01 中国AI写作第一案宣判,机器人写稿同样拥有著作权 一秒出快讯,一分钟内出分析文章,只要有需求,一年写出几十万篇文字作品都不在话下,这就是 AI 写作机器人,目前被广泛应用在一些媒体.金融.分析机 ...
- 如何在 R 中使用 Gamma 分布(附示例)
在统计学中,伽马分布通常用于模拟与等待时间相关的概率. 我们可以使用以下函数来处理 R 中的 gamma 分布: dgamma(x, shape, rate) – 找到具有特定形状和速率参数的 gam ...
- 如何使用Leangoo看板统计中的任务分布?
之前已经为大家介绍了"如何使用Leangoo自动生成燃尽图" 今天介绍,"如何使用Leangoo看板统计中的任务分布" Leangoo看板统计中的"任 ...
- C++模拟游戏中鼠标点击和键盘按键
游戏中模拟键盘输入,有时回被系统屏蔽,Java等语言都试过很多方法,好像都没用,所以下面给出一种C++实现方法 #include <iostream> #include <windo ...
最新文章
- 零基础学Java需要做哪些准备
- AWS Storage Gateway 分类
- Gateway配合sentinel自定义限流_你知道如何使用阿里Sentinel实现接口限流吗?
- MVC开发人员必备的五大工具
- 徐波 博士 计算机,徐波教授:医工联合促进智能肿瘤学发展——探秘肿瘤精准治疗中的AI技术...
- 记录一次cookie导致登录失败的惨案
- 前端学习(3046):vue+element今日头条管理-页面布局和面包屑筛选
- linux -- control service and daemon process
- smbd的安装与使用
- docker国内镜像链接
- Python 练习: 打印0到99小于50或大于70的数字
- 无人驾驶路径规划之RRT算法
- 读书笔记——实时渲染(一)
- RFC2544时延测试——信而泰网络测试仪实操
- 如何优雅的对网页截取长图
- 对于网络文学而言 计算机叙事,【网络文学论文】传统文学中网络文学特征研究(共4573字)...
- java String 转map、list
- Vue中数字(金额)大小写实时转换
- Zabbix 监控 Windows主机
- linux中如何查看设备的设备号,查看 linux 设备号信息
热门文章
- PRACH, preamble, RO 的关系与区别
- 【超图】SuperMap iClient3D 11i for WebGL新产品食用指南(一)
- linux下安装mysql8.0(二进制方式)
- java 异常之Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed
- 微信云托管-填坑之旅
- python turtle画彩虹的代码_python绘制彩虹图
- 数字计算lisp_可从计算尺和LISP中汲取教训
- Date Interoperability:Module ‘ACAD‘ is not licensed for use with this FME edition
- php生成字母头像,Identicon:实现根据用户账号生成像素头像 php 版
- 微信小程序scroll-view实现滚动卡片