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模拟重力场中粒子的分布相关推荐

  1. python做电磁场计算_加速Python中的计算(模拟磁场中的粒子)

    用Python编写的程序速度有问题.该程序是"模拟磁场中的铁磁颗粒",更具体地说是磁惰性液体.该程序可以工作,但与用C ++编写的相同程序相比非常缓慢,但是我用Python编写了一 ...

  2. 【统计分析】(task5) 金融量化分析与随机模拟(通过随机模拟估计看涨期权的报酬分布)

    内容总结 学习datawhale的gitmodel教程.小郭为了锁定价格波动风险,签订合约即买进看涨期权:提前给榴莲超市2块权利金,现在榴莲30元一块(期权的标的资产),下个月能用20元买到一块榴莲( ...

  3. EAGLE模拟数据中提取大量星系数据的一些方法

    0.这里的EAGLE是什么 EAGLE (Evolution and Assembly of GaLaxies and their Environments) 是一系列不同大小及模型的宇宙学模拟实验, ...

  4. 使用Python模拟武侠小说中两派人的一场遭遇战。

    使用Python模拟武侠小说中两派人的一场遭遇战. 每个人都有名字.血量(HP) .一系列技能及技能对应的攻击输出.每个人的攻击方式均一致,即随机从自己的技能包中抽取一个技能进行攻击.两派人(自己命名 ...

  5. MIT教授: 世界就是《黑客帝国》,人类在模拟游戏中扮演角色

      转载于 新智元   编辑:元子 MIT教授认为我们目前有50%-100%的概率生活在<黑客帝国>那样的计算机模拟世界中,所谓现实可能不过是一种幻觉.而距离我们创建自己的模拟世界,最多需 ...

  6. 本周AI热点回顾:机器人写稿同样拥有著作权、大脑中竟存在“分布强化学习”

    01 中国AI写作第一案宣判,机器人写稿同样拥有著作权 一秒出快讯,一分钟内出分析文章,只要有需求,一年写出几十万篇文字作品都不在话下,这就是 AI 写作机器人,目前被广泛应用在一些媒体.金融.分析机 ...

  7. 如何在 R 中使用 Gamma 分布(附示例)

    在统计学中,伽马分布通常用于模拟与等待时间相关的概率. 我们可以使用以下函数来处理 R 中的 gamma 分布: dgamma(x, shape, rate) – 找到具有特定形状和速率参数的 gam ...

  8. 如何使用Leangoo看板统计中的任务分布?

    之前已经为大家介绍了"如何使用Leangoo自动生成燃尽图" 今天介绍,"如何使用Leangoo看板统计中的任务分布" Leangoo看板统计中的"任 ...

  9. C++模拟游戏中鼠标点击和键盘按键

    游戏中模拟键盘输入,有时回被系统屏蔽,Java等语言都试过很多方法,好像都没用,所以下面给出一种C++实现方法 #include <iostream> #include <windo ...

最新文章

  1. 零基础学Java需要做哪些准备
  2. AWS Storage Gateway 分类
  3. Gateway配合sentinel自定义限流_你知道如何使用阿里Sentinel实现接口限流吗?
  4. MVC开发人员必备的五大工具
  5. 徐波 博士 计算机,徐波教授:医工联合促进智能肿瘤学发展——探秘肿瘤精准治疗中的AI技术...
  6. 记录一次cookie导致登录失败的惨案
  7. 前端学习(3046):vue+element今日头条管理-页面布局和面包屑筛选
  8. linux -- control service and daemon process
  9. smbd的安装与使用
  10. docker国内镜像链接
  11. Python 练习: 打印0到99小于50或大于70的数字
  12. 无人驾驶路径规划之RRT算法
  13. 读书笔记——实时渲染(一)
  14. RFC2544时延测试——信而泰网络测试仪实操
  15. 如何优雅的对网页截取长图
  16. 对于网络文学而言 计算机叙事,【网络文学论文】传统文学中网络文学特征研究(共4573字)...
  17. java String 转map、list
  18. Vue中数字(金额)大小写实时转换
  19. Zabbix 监控 Windows主机
  20. linux中如何查看设备的设备号,查看 linux 设备号信息

热门文章

  1. PRACH, preamble, RO 的关系与区别
  2. 【超图】SuperMap iClient3D 11i for WebGL新产品食用指南(一)
  3. linux下安装mysql8.0(二进制方式)
  4. java 异常之Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed
  5. 微信云托管-填坑之旅
  6. python turtle画彩虹的代码_python绘制彩虹图
  7. 数字计算lisp_可从计算尺和LISP中汲取教训
  8. Date Interoperability:Module ‘ACAD‘ is not licensed for use with this FME edition
  9. php生成字母头像,Identicon:实现根据用户账号生成像素头像 php 版
  10. 微信小程序scroll-view实现滚动卡片