MATLAB和Python数值和符号计算可视化物理学气体动能和粒子速度
要点
-
Python物理学差分数值和符号计算
-
热动力学计算:统计力学,分子动力学模型
-
Python寻找弹性物体的运动,LAMMPS 分子动力学模拟器模拟2D气体分子,Python原子模拟绘图,Python数值计算原子平衡性,Python绘制平衡时原子波动。
-
MATLAB随机速度原子晶格,编辑读写lammps轨迹文件函数。使用LAMMPS,MATLAB和Python 二维模拟 Lennard-Jones 系统。
-
Python模拟理想气体热动力学结果:体积,压力和温度。
-
LAMMPS模拟固体原子数据,Python基于模拟,测量模型左侧粒子的动能。Python计算绘制爱因斯坦晶体宏态的多重性。MATLAB模拟爱因斯坦晶体热运动状态。Python计算两个耦合的晶体熵。MATLAB计算绘制二维晶体热分子运动。
-
Python数值计算绘图爱因斯坦晶体在微规范系统中谐振子运动概率。Python蒙特卡洛方法模拟亥姆霍兹自由能。Python使用 命中和错过 算法符号计算蒙特卡洛积分估计。MATLAB对比Python 计算热浴的蒙特卡洛伊辛模型。
-
LAMMPS 模拟低温下液相和气相之间的聚结和相共存,Python基于模拟数值计算。
-
MATLAB绘制了玻色-爱因斯坦分布和费米-狄拉克分布。
-
Python物理学数值计算示例 龙格-库塔方法
鉴于计算效率,以下代码只是演示作用
龙格-库塔方法是常微分方程的数值近似,由 Carl Runge 和 Wilhelm Kutta 开发。 通过使用一个区间内的四个斜率值(不一定落在实际解上)并对斜率进行平均,可以获得一个非常好的近似解。在这个例子中,我们将重点关注四阶龙格-库塔方法来帮助我们解决一维散射问题。
为了开始我们的代码,我们将导入一些包来帮助我们进行数学和可视化。
import cmath
import numpy as np
import matplotlib.pyplot as plt
从这里开始,我们开始定义方程的初始参数。
mass = 1.0
hbar = 1.0
v0 = 2.0
alpha = 0.5
E = 3.0
i = 1.0j
x = 10.0
xf = -10.0
h = -.001
xaxis = np.array([], float)
psi = np.array([], complex)
psiprime = np.array([], complex)
一旦我们有了初始值,我们就开始处理定义我们将要使用的方程的函数。我们的主要方程是 k ( x ) k(x) k(x),它是薛定谔方程的重新设计版本,用于求解变量 k k k,以及我们的 Ψ \Psi Ψ 方程,它将由 psione ( x ) (x) (x) 和 psitwo ( x ) (x) (x)定义。
def v(x): return v0/2.0 * (1.0 + np.tanh(x/alpha))
def k(x): return cmath.sqrt((2*mass/(hbar**2))*(E - v(x)))
def psione(x): return np.exp(i*k(x)*x)
def psitwo(x): return i*k(x)*np.exp(i*k(x)*x)
在此,首先,我们需要定义一个包含初始条件波函数的数组。
r = np.array([psione(x), psitwo(x)])
在数组中设置这些方程,我们可以通过下面将定义的龙格-库塔方法迭代这两个方程,并让它们为我们为 psione(x) 和 psitwo(x) 定义的方程提供近似解 。 但在我们到达方程的主要部分之前,我们需要定义一个更重要的函数。
def deriv(r,x): return np.array([r[1],-(2.0*mass/(hbar**2) * (E - v(x))*r[0])], complex)
deriv 函数是龙格-库塔的输出经过的地方,该函数从数组 r 中获取我们的值,然后将其推入这些条件。 对于返回的第一个值,非常简单,我们的 x 值将被输入到数组的第二个方程中。 然而,第二个值将经历不同的处理。 这次,x 值将经历薛定谔方程的另一次迭代,其中考虑了波函数 psione(x)。
while (x >= xf ):xaxis = np.append(xaxis, x)psi = np.append(psi, r[0])psiprime = np.append(psiprime, r[1])k1 = h*deriv(r,x)k2 = h*deriv(r+k1/2,x+h/2)k3 = h*deriv(r+k2/2,x+h/2)k4 = h*deriv(r+k3,x+h)r += (k1+2*k2+2*k3+k4)/6x += h
在这里,循环几乎涵盖了龙格-库塔的整个过程。通过使用由 k k k 值定义的斜率近似值,每个 k k k 值有助于近似下一个斜率,使我们更接近求解 f ( x ) f(x) f(x)。此外,在获得每个斜率之后,我们获得加权平均值并使用这些新值更新我们的数组,为下一次迭代做好准备。这个过程将在 x \mathrm{x} x 轴上我们定义的范围内继续,这最终将为我们提供绘制即将求解的常微分方程所需的值。
龙格-库塔方法可以很容易地适应许多其他方程,大多数时候我们只需要调整导数函数和我们的初始条件方程。 其他示例包括摆常微分方程和行星运动常微分方程。 在下面,我们现在可以找到完整的代码以及额外的步骤,例如求解反射和透射值的函数,以及如何绘制我们的值。
import cmath
import numpy as np
import matplotlib.pyplot as plt
mass = 1.0
hbar = 1.0
v0 = 2.0
alpha = 0.5
E = 3.0
i = 1.0j
x = 10.0
xf = -10.0
h = -.001
xaxis = np.array([], float)
psi = np.array([], complex)
psiprime = np.array([], complex)
def v(x): return v0/2.0 * (1.0 + np.tanh(x/alpha))
def k(x): return cmath.sqrt((2*mass/(hbar**2))*(E - v(x)))
r = np.array([psione(x), psitwo(x)])
def deriv(r,x): return np.array([r[1],-(2.0*mass/(hbar**2) * (E - v(x))*r[0])], complex)
while (x >= xf ):xaxis = np.append(xaxis, x)psi = np.append(psi, r[0])psiprime = np.append(psiprime, r[1])k1 = h*deriv(r,x)k2 = h*deriv(r+k1/2,x+h/2)k3 = h*deriv(r+k2/2,x+h/2)k4 = h*deriv(r+k3,x+h)r += (k1+2*k2+2*k3+k4)/6x += h
psi1 = psi[20000]; psi2 = psiprime[20000]; x = 10; xf = -10
def reflection(x, y):aa = (psi1 + psi2/(i*k(y)))/(2*np.exp(i*k(y)*y))bb = (psi1 - psi2/(i*k(y)))/(2*np.exp(-i*k(y)*y))return (np.abs(bb)/np.abs(aa))**2
def transmission(x,y):aa = (psi1 + psi2/(i*k(y)))/(2.0*np.exp(i*k(y)*y))return k(x)/k(y) * 1.0/(np.abs(aa))**2
print('reflection = ',reflection(x,xf))
print('transmission = ', transmission(x,xf))
print('r + t = ', reflection(x,xf) + transmission(x,xf))
fig, ax = plt.subplots(1,2, figsize = (15,5))
ax[0].plot(xaxis, psi.real, xaxis, psi.imag, xaxis, v(xaxis))
ax[1].plot(xaxis, psiprime.real, xaxis, psiprime.imag, xaxis, v(xaxis))
plt.show()
使用Scipy 改写为:
import cmath
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint, solve_ivp
E = 3; m = 1; h = 1; alpha = .5; v0=2; i = 1.0j; xi = 10; xf = -10
def v(x): return v0/2.0 * (1.0 + np.tanh(x/alpha))
def k(x): return cmath.sqrt((2*m/(h**2))*(E - v(x)))
def psione(x): return np.exp(i*k(x)*x)
def psitwo(x): return i*k(x)*np.exp(i*k(x)*x)
def deriv(x, y): return [y[1], -(2.0*m/(h**2.0) * (E - v(x))*y[0])]values = solve_ivp(deriv, [10, -10], [psione(xi), psitwo(xi)], first_step = .001, max_step = .001)
psi1 = values.y[0,20000]; psi2 = values.y[1,20000]; x = 10; xf = -10
def reflection(x, y):aa = (psi1 + psi2/(i*k(y)))/(2*np.exp(i*k(y)*y))bb = (psi1 - psi2/(i*k(y)))/(2*np.exp(-i*k(y)*y))return (np.abs(bb)/np.abs(aa))**2
def transmission(x,y):aa = (psi1 + psi2/(i*k(y)))/(2.0*np.exp(i*k(y)*y))return k(x)/k(y) * 1.0/(np.abs(aa))**2
print('reflection = ',reflection(x,xf))
print('transmission = ', transmission(x,xf))
print('r + t = ', reflection(x,xf) + transmission(x,xf))
fig, ax = plt.subplots(1,2, figsize = (15,5))
ax[0].plot(values.t, values.y[0].real, values.t, values.y[0].imag, values.t, v(values.t))
ax[1].plot(values.t, values.y[1].real, values.t, values.y[1].imag, values.t, v(values.t))
plt.show()
参阅一:计算思维
参阅二:亚图跨际
相关文章:
MATLAB和Python数值和符号计算可视化物理学气体动能和粒子速度
要点 Python物理学差分数值和符号计算 热动力学计算:统计力学,分子动力学模型 Python寻找弹性物体的运动,LAMMPS 分子动力学模拟器模拟2D气体分子,Python原子模拟绘图,Python数值计算原子平衡性,Python绘制…...

阿里云-零基础入门NLP【基于机器学习的文本分类】
文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路TF-IDF介绍TF-IDF 机器学习分类器TF-IDF LinearSVCTF-IDF LGBMClassifier 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的&am…...

蓝桥杯模块综合——高质量讲解AT24C02,BS18B20,BS1302,AD/DA(PCF8591),超声波模块
AT24C02——就是一个存储的东西,可以给他写东西,掉电不丢失。 void EEPROM_Write(unsigned char * EEPROM_String,unsigned char addr , unsigned char num) {IIC_Start();IIC_SendByte(0xA0);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();while(nu…...

前端跨平台开发框架:简化多端开发的利器
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

cesium.js加载模型后,重新设置旋转角度属性值
// 加载模型var position Cesium.Cartesian3.fromDegrees(longitude, latitude, height);// 计算矩阵var rollAngleDegrees 15; // 设置翻滚角度var rollAngleRadians Cesium.Math.toRadians(rollAngleDegrees); // 将角度转换为弧度var orientation Cesium.Transforms.eas…...

②免费AI软件开发工具测评:通义灵码 VS 码上飞
前言 我又双叒叕来测评了!上次给大家带来的是iFlyCode和CodeFlying两款产品的测评,受到了大家的一致好评~ 今天咱就继续来聊聊,这次我们选的的对象是通义灵码和码上飞,从名字上也能看到出来这两款产品一定是跟软件开发有关系的&…...

幻兽帕鲁游戏搭建(docker)
系列文章目录 第一章: 幻兽帕陆游戏搭建 文章目录 系列文章目录前言一、镜像安装1.创建游戏目录2.拉取镜像3.下载配置文件4.启动游戏 二、自定义配置总结 前言 这段时间一直在写论文还有找工作,也没学啥新技术,所以博客也很长时间没写了&am…...

unity报错出现Asset database transaction committed twice!
错误描述: 运行时报错 Assertion failed on expression: ‘m_ErrorCode MDB_MAP_RESIZED || !HasAbortingErrors()’Asset database transaction committed twice!Assertion failed on expression: ‘errors MDB_SUCCESS || errors MDB_NOTFOUND’ 解决办法&…...
去除项目git的控制 端口号的关闭
以下操作都是在windows下。只是记录一下。 find . -name “.git” | xargs rm -rf 查看所有分支 git branch -a 查看当前分支 git branch -a 切换分支 git chenkout develop docker 查看容器的ip docker inspect -f ‘{{.Name}} - {{range .NetworkSettings.Networks}}{{.IP…...

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention电能质量扰动识别模型
往期精彩内容: 电能质量扰动信号数据介绍与分类-Python实现-CSDN博客 Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(三)基于Transformer…...
简单的Charles抓包教程
安装Charles 安装地址:https://www.charlesproxy.com/download/ 开关本机抓包 一般我们在抓取手机端内容时需要将Proxy菜单栏下的Windows Proxy取消勾选,禁止charles抓取本机上的请求信息。 注:开启电脑端抓包后,会为电脑添加局…...

如何构建Docker自定义镜像
说明:平常我们使用Docker运行各种容器,极大地方便了我们对开发应用的使用,如MySQL、Redis,以及各种中间件,使用时只要拉镜像,运行容器即可。本文介绍如何创建一个Demo,自定义构建一个镜像。 开…...

一起学数据分析_2
写在前面:代码运行环境为jupyter,如果结果显示不出来的地方就加一个print()函数。 一、数据基本处理 缺失值处理: import numpy as np import pandas as pd#加载数据train.csv df pd.read_csv(train_chinese.csv) df.head()# 查看数据基本…...
请解释Redis是什么?它有哪些主要应用场景?Redis支持哪些数据类型?并描述每种数据类型的特性和使用场景。
请解释Redis是什么?它有哪些主要应用场景? Redis是一款内存高速缓存NoSQL数据库,使用C语言编写,它支持丰富的数据类型,如String、list、set、zset、hash等,并且这些数据类型都直接支持数据的原子性操作&…...

在centos8中部署Tomcat和Jenkins
参考链接1:tomcat安装和部署jenkins_jenkins和tomcat-CSDN博客 参考链接2:--配置开机启动tomcat文件 x超详细:Centos8安装Tomcat并配置开机自动启动_centos设置tomcat开机自启-CSDN博客文章浏览阅读4.4k次,点赞4次&…...
机器学习模型—K means
文章目录 机器学习模型—K means聚类的目标k 均值原理k 均值 的实现手动实现Python 实现K 的确定 手肘法总结机器学习模型—K means K-Means 聚类是一种无监督机器学习算法,它将未标记的数据集分为不同的簇。本文旨在探讨 k 均值聚类的基本原理和工作原理以及实现。 无监督机…...
QT UI设计
在QT中添加VTK 在main函数中初始化 //VTK的初始化语句 #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingVolumeOpenGL); VTK_MODU…...
前端小白的学习之路(CSS3 一)
提示:CSS3 是 Cascading Style Sheets(层叠样式表)的第三个主要版本,引入了许多新的特性和增强功能,用于设计和布局网页。本章记录CSS3新增选择器,盒子模型。 目录 一、C3新增选择器 1) 属性选择器 1.[c…...

春暖花开,一起来看看2024年品牌春分海报吧!
春分(Vernal equinox)已至,春花烂漫、燕子归来、百草回芽。 今天我们要分享的是2024年品牌发布的春分节气海报合集,快来随我们一起感受这昂扬、蓬勃的春意吧! (1)泸州老窖 (2)BD…...

golang面试题总结
零、go与其他语言 0、什么是面向对象 在了解 Go 语言是不是面向对象(简称:OOP) 之前,我们必须先知道 OOP 是啥,得先给他 “下定义” 根据 Wikipedia 的定义,我们梳理出 OOP 的几个基本认知: …...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...