Python和C++计算物理光学波形化学结构数学方程

news/2024/4/28 6:38:03/文章来源:https://blog.csdn.net/jiyotin/article/details/137115537

🎯要点

  1. Python | C++代码化排序索引​和计算​:🎯冒泡排序,升序排序,快速排序,索引排序,基于索引数组的排名,基于直接插入的两个键索引,两个相关数组的索引。🎯数学计算1:数据集升序排列后,生成索引和排名​。🎯数学计算2:一定量序列排序后,生成得新索引表,并绘制原始序列。🎯计算3:一定量序列进行冒泡排序,插入排序,快速排序,绘制一张图显示三种排序依赖性,分别定性评估小型和广泛序列的排序算法的性能。
  2. Python | C++代码化霍纳法评估多项式和计算:🎯幂级数展开的指数,连分数正切函数,递归关系的正交多项式,球谐函数 - 相关勒让德函数,球面贝塞尔函数。🎯数学计算1:计算多项式一阶导数的系数,绘制五次勒让德多项式;🎯数学计算2:使用幂级数展开计算函数正弦和反正弦。🎯数学计算3:使用连分数计算指数函数。🎯物理计算4:计算球谐得范数平方并绘制极坐标图。🎯物理计算5:计算给定阶和角度得所有球谐函数和相同阶勒让德多项式之积。🎯物理计算6:球形电磁波的传播由标量亥姆霍兹方程描述,该方程在球坐标中分离变量后,可得出径向方程,其解为圆柱贝塞尔函数和诺依曼函数,计算该函数解并绘图。🎯物理计算7:氢原子波相关勒让德函数,绘制径向概率密度。
  3. Python | C++代码化代数方程和计算:🎯求解真值根:二分法,错误方法的规则,连续近似法,牛顿-拉夫逊法,割线法,伯奇-维塔法,多维函数系统的雅可比行列式,非线性方程组的牛顿法。🎯数学计算1:使用二分法求解指定多项式。🎯数学计算2:使用二分法和割线法返回多项式收敛迭代次数。🎯物理计算3:使用开普勒方程,求解哈雷彗星偏心异常角度值并绘图,使用牛顿法求解整个旋转周期的偏心异常角度值。🎯物理计算4:夫琅和费衍射强度分布,绘制分布图:强度分方程及其第一导数方程,使用割线法和初始近似值求解主衍射最大值半宽,使用错误方法得规则,求解给定范围内强度最大值。🎯物理计算5:普朗克定律表示热平衡状态下黑体发射的电磁辐射的光谱能量密度,绘制光谱能量密度图,求解光谱能量密度的导数的最大值。🎯物理计算6:对给定的圆与抛物线方程,使用雅可比和牛顿法求其交点。🎯数学计算7:求解给定三元非线性方程组。
  4. Python | C++ 代码化线性方程组和计算:🎯求解矩阵方程:部分旋转的高斯消元法,部分旋转高斯-乔丹消元法,部分旋转和矩阵求逆的高斯-约尔消元法,完整旋转高斯-乔丹消元法,使用杜立特法对矩阵 LU 分解,使用 LU 分解的矩阵求逆,三角矩阵求逆,对称正定矩阵的 Cholesky 分解求解,使用 Cholesky 分解的正定矩阵求逆,求解三对角矩阵的线性系统,高斯-赛德尔法求解线性方程组。🎯数学计算1:使用高斯-乔丹消元解矩阵方程。🎯数学计算2:使用LU 因式分解给定方程组。🎯数学计算3:使用LU 因式分解求解三对角矩阵。🎯数学计算4:使用高斯-乔丹消元解非奇异矩阵,检查恒等式。🎯数学计算5:计算矩阵恒等式,并随机生成二维矩阵以及求逆。🎯数学计算6:使用 Cholesky 分解计算对称正定矩阵的逆,生成随机二维下三角矩阵,生成正定矩阵。🎯物理计算7:求逆多贝希斯 D4 小波变换。
  5. Python | C++代码化特征值和计算:🎯数学计算1:使用函数 Jacobi 证明随机可逆对称矩阵。🎯物理计算2:无质量的弹性振动弦正常振动模式下的频率和位移。🎯化学计算3:从四方甲烷分子各个坐标中减去质心坐标,将分子置于其质心系统中,计算笛卡尔坐标下质心系统中分子的惯性张量,求解惯性张量的特征值,使用转置变换矩阵将原子坐标旋转到主轴系,可视化坐标结果。🎯物理计算4:从飞机各个坐标中减去质心坐标,将其放置在质心系统中,计算飞机在笛卡尔质心系统中的惯性张量,从惯性张量的特征值确定主惯性矩,使用转置变换矩阵将飞机坐标旋转到主轴系,分别对飞机施加给定角度的“偏航”和“滚转”,可视化其结果。🎯化学计算5:在 Hückel 理论框架下,找到环苯分子的特征能和特征向量。🎯化学计算6:基于水分子电子结构的密度泛函理论计算,对水分子的鲁坦方程求解泛化特征值。
  6. Python | C++ 代码化列表函数的建模,蒙特卡罗方法,常微分和偏微分方程。

Python可视化电场示例

让我们回忆一下库仑定律:来自位于 r 0 r_0 r0 处的单个点电荷 q 0 q_0 q0 的位于 P P P 点(位置 r r r)的测试电荷 Q Q Q 上的力由下式给出:
F ∗ 0 = k q ∗ 0 Q ( r − r ∗ 0 ) 2 r − r ∗ 0 ∣ r − r 0 ∣ \mathbf{F}*{0}=k \frac{q*{0} Q}{\left(\mathbf{r}-\mathbf{r}*{0}\right)^{2}} \frac{\mathbf{r}-\mathbf{r}*{0}}{\left|\mathbf{r}-\mathbf{r}_{0}\right|} F0=k(rr0)2q0Qrr0rr0
其中库仑常数是 k = 1 / ( 4 π ϵ 0 ) k=1 /\left(4 \pi \epsilon_{0}\right) k=1/(4πϵ0) SI 单位( ϵ 0 \epsilon_{0} ϵ0 是自由空间的介电常数)。 力与两个电荷的乘积成正比,与两个电荷之间的距离的平方成反比,并沿着从电荷 q 0 q_0 q0 到电荷 Q Q Q 的线点。电场就是力 F 0 F_0 F0 与电荷 Q Q Q 的比值。 测试电荷 Q Q Q 在测试电荷的大小变为零的极限。 在实践中,这给了我们:
E ∗ 0 ( r ) = k q ∗ 0 r − r ∗ 0 ∣ r − r ∗ 0 ∣ 3 \mathbf{E}*{0}(\mathbf{r})=k q*{0} \frac{\mathbf{r}-\mathbf{r}*{0}}{\left|\mathbf{r}-\mathbf{r}*{0}\right|^{3}} E0(r)=kq0rr03rr0
在那里我们取消了 Q Q Q,并借此机会合并了两个分母。 这是由 r 0 r_0 r0 处的点电荷 q 0 q_0 q0 引起的 r r r 位置处的电场。

如果我们面临多个点电荷,我们可以应用叠加原理: Q Q Q 上的合力由作用在 Q Q Q 上的各个力的矢量和组成。 因此,如果我们处理 n n n 点电荷 q 0 , q 1 , … , q n − 1 q_{0}, q_{1}, \ldots, q_{n-1} q0,q1,,qn1 分别位于 r ∗ 0 , r ∗ 1 , … , r n − 1 \mathbf{r}*{0}, \mathbf{r}*{1}, \ldots, \mathbf{r}_{n-1} r0,r1,,rn1 处,则情况如图 1.5 所示。 为了便于查看,我们的图形是二维的,但形式主义同样适用于三个维度。 位置 r r r 处的总电场为:
E ( r ) = ∑ i = 0 n − 1 E ∗ i ( r ) = ∑ ∗ i = 0 n − 1 k q i r − r ∗ i ∣ r − r ∗ i ∣ 3 \mathbf{E}(\mathbf{r})=\sum_{i=0}^{n-1} \mathbf{E}*{i}(\mathbf{r})=\sum*{i=0}^{n-1} k q_{i} \frac{\mathbf{r}-\mathbf{r}*{i}}{\left|\mathbf{r}-\mathbf{r}*{i}\right|^{3}} E(r)=i=0n1Ei(r)=i=0n1kqirri3rri
即,单个电场贡献的总和, E i ( r ) \mathbf{E}_{i}(\mathbf{r}) Ei(r)。 请注意,您可以考虑空间中任何一点的总电场 r r r。 另请注意,电场是一个矢量:在空间中的任何点,该 E E E 都有大小和方向。 可视化矢量场的一种方法包括绘制场线,即帮助我们跟踪场方向的假想曲线。 更具体地说,给定点的场线的切线为我们提供了该点的电场方向。 场线不交叉; 它们以正电荷(“源”)开始,以负电荷(“汇”)结束。

绘制场线

我们将在 Python 中绘制电场线; 虽然存在更复杂的向量场可视化方法(例如,线积分卷积),但我们在下面描述的内容应该足以让您对事物有定性的感觉。 虽然绘图函数(甚至库)的变化往往比编程基础设施的其他方面快得多,但无论具体实现是什么样子,所讨论的原则都适用。

我们面临两个任务:首先,我们需要根据方程式(3)在电荷附近的几个点产生电场(矢量),其次,我们需要以这样一种方式绘制场线,以便我们可以从物理上解释正在发生的事情。 和前面的代码一样,我们为每个任务创建一个 Python 函数。 为简单起见,我们从一个只有两个点电荷(大小相等,符号相反)的问题开始。 此外,我们将自己限制在两个维度上(笛卡尔坐标 x 和 y)。

代码 1.3 是一个 Python 实现,其中为了简单起见,库仑常数被分开。 我们首先导入 numpy 和 matplotlib,因为繁重的工作将由函数 streamplot() 完成,该函数需要 NumPy 数组作为输入。 我们还导入了平方根和 deepcopy() 函数,它们可以创建一个不同的列表列表。

import numpy as np
import matplotlib.pyplot as plt
from math import sqrt
from copy import deepcopy
def makefield(xs, ys):qtopos = {1: (-1,0), -1: (1,0)}n = len(xs)Exs = [[0. for k in range(n)] for j in range(n)]Eys = deepcopy(Exs)for j,x in enumerate(xs):for k,y in enumerate(ys):for q,pos in qtopos.items():posx, posy = posR = sqrt((x - posx)**2 + (y - posy)**2)Exs[k][j] += q*(x - posx)/R**3Eys[k][j] += q*(y - posy)/R**3return Exs, Eys
def plotfield(boxl,n):xs = [-boxl + i*2*boxl/(n-1) for i in range(n)]ys = xs[:]Exs, Eys = makefield(xs, ys)xs=np.array(xs); ys=np.array(ys)Exs=np.array(Exs); Eys=np.array(Eys)plt.streamplot(xs, ys, Exs, Eys, density=1.5, color=‘m’)plt.xlabel(‘$x$’)plt.ylabel(‘$y$’)plt.show()
plotfield(2.,20)

函数 makefield() 接受两个列表 xs 和 ys,对应于我们希望评估电场的坐标(x 和 y 一起构成 r)。我们还需要某种方式来存储点电荷所在的 r i r_i ri。我们选择将这些存储在字典中,该字典从电荷 q i q_i qi 映射到位置 r i r_i ri

对于每个位置 r r r,我们需要评估 E ( r ) \mathbf{E}(\mathbf{r}) E(r):在二维中,它由 E x ( r ) E_{x}(\mathbf{r}) Ex(r) E y ( r ) E_{y}(\mathbf{r}) Ey(r) 组成,即总电场的两个笛卡尔分量。目前只关注其中一个,比如 E x ( r ) E_{x}(\mathbf{r}) Ex(r),我们意识到我们需要为任何可能的 r r r 存储它的值,即对于任何可能的 x 和 y 值。我们决定使用由嵌套列表推导式生成的列表列表。然后我们为 E y ( r ) E_{y}(\mathbf{r}) Ey(r) 创建另一个列表列表。

我们需要绘制(即存储)总电场的 x 和 y 分量的值,在所有所需的值向量 r,即在由 xs 和 ys 组成的二维网格上。这需要计算给定 x 的所有可能 y 处的电场(来自给定点电荷 q i q_i qi 的贡献),然后迭代所有可能的 x。我们还需要迭代我们的点电荷 q i q_i qi 和它们的位置 r i r_i ri​。我们通过在 qtopos.items() 中 for q, pos in qtopos.items() 来做到这一点:此时我们将 pos 解包为 posx 和 posy。

参阅:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1026788.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结

接上次博客:Redis(四):持久化和事务:RDB(定期备份)【触发机制、流程说明、文件的处理、优缺点】、AOF(实时备份)【使用AOF、命令写入、文件同步、重写机制、启动时数据恢…

鸿蒙HarmonyOS应用开发之创建NDK工程

下面通过DevEco Studio的NDK工程模板,来演示如何创建一个NDK工程。 说明: 不同DevEco Studio版本的向导界面、模板默认参数等会有所不同,请根据实际工程需要,创建工程或修改工程参数。 通过如下两种方式,打开工程创建向…

贪心算法相关题目

文章目录 1. 什么是贪心?2. 分发饼干3. 摆动序列4. 最大子数组和5. 买卖股票的最佳时机 II6. 跳跃游戏7. 跳跃游戏 II8.K 次取反后最大化的数组和9.加油站10.分发糖果11.柠檬水找零12.根据身高重建队列13.用最少数量的箭引爆气球14. 无重叠区间15.划分字母区间16.合…

学习鸿蒙基础(8)

一、BuilderParam装饰器 当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引…

程序汪若依微服务华为云Linux部署保姆教程

若依官方有3个版本,程序汪以前已经出了对应的安装部署视频教程 单应用版本 前后分离版本 微服务版本 本视频是若依微服务版本,如果基础的环境软件都不会安装建议看下程序汪的单应用和前后端分离版本教程, 欢迎点击进入 (单应…

开源流程图表库(01):Mermaid.js生成流程图、时序图、甘特图等

一、Mermaid.js的特点 Mermaid.js是一个用于生成流程图、时序图、甘特图等各种图表的开源库。它使用简洁的文本语法来描述图表结构,并将其转换为可视化的图形。 Mermaid.js的主要特点包括: 简洁易用:Mermaid.js使用简单的文本语法来描述图表…

嵌入式培训3-28

编写一条学生链表&#xff0c;写一些能够像链表里边添加数据的函数 实现&#xff1a;将链表中的所有内容保存到文件中去 以及 读取文件中的所有内容&#xff0c;加载到链表里面 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ma…

Python爬虫如何快速入门

写了几篇网络爬虫的博文后&#xff0c;有网友留言问Python爬虫如何入门&#xff1f;今天就来了解一下什么是爬虫&#xff0c;如何快速的上手Python爬虫。 一、什么是网络爬虫 网络爬虫&#xff0c;英文名称为Web Crawler或Spider&#xff0c;是一种通过程序在互联网上自动获取…

初识C++之命名空间(namespace)

初识C之入门 命名空间(namespace) 文章目录 初识C之入门 命名空间(namespace)1.为什么要有命名空间2. 命名空间 namespace使用方法3. 作用域限定符(::&#xff09;和 命名空间(namespace)4. 命名空间的定义5. 命名空间的嵌套6. 命名空间的使用7. 总结 1.为什么要有命名空间 在C…

部署elementPlus离线版本

最近项目需要离线开发&#xff0c;不能联网查一些组件的api&#xff0c;于是决定搞一个离线版的文档 一、下载官方文档 下载地址 github地址 gitee地址 选择版本 直接下载压缩包 二、下载live-server插件 全局下载live-server插件 npm i live-server -gvscode下载 三…

Linux split分割xls或csv文件

文件名&#xff1a;test.xls split -a 2 -d -l 100 test.xls test-a 2&#xff1a;后缀是2位 -d&#xff1a;后缀数字 -l 100 &#xff1a;每100行一个文件 test.xls&#xff1a;需要分割的文件名 test&#xff1a;分割后的文件前缀批量修改文件后缀 for i in test*; do mv $…

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第42讲。 三位数组合&#…

Haproxy负载均衡介绍即部署

haproxy的原理&#xff1a; 提供高可用、负载均衡以及基于TCP&#xff08;四层&#xff09;和HTTP&#xff08;七层&#xff09;应用的代理&#xff0c;支持虚拟主机&#xff0c;开源可靠的一款软件。 适用于哪些负载特别大的web站点&#xff0c;这些站点通常又需要回话保持和七…

Java项目——黑马点评(优惠券秒杀7之Redis消息队列MQ实现异步秒杀)

优惠券秒杀7——Redis消息队列实现异步秒杀 一、问题引出—— 内存溢出—— 之前我们使用的是JDK里面的阻塞队列&#xff0c;而这个队列使用的是JDK里面的内存。如果不加以阻止&#xff0c;在高并发情况下可能会有无数订单对象需要创建并且放到阻塞队列里面。可能会导致将来…

arm 外部中断

main.c: #include"key_inc.h" //封装延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}} } int main() {//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf("in main pro\n");delay(1…

C++自主点餐系统

一、 题目 设计一个自助点餐系统&#xff0c;方便顾客自己点餐&#xff0c;并提供对餐厅销售情况的统计和管理功能。 二、 业务流程图 三、 系统功能结构图 四、 类的设计 五、 程序代码与说明 头文件1. SystemMap.h #pragma once #ifndef SYSTEMMAP #define SYSTEMMAP #in…

【八股】泛型

泛型存在的意义&#xff1f; 为了使相同的代码适用于多种数据类型&#xff0c;也就是代码复用。 参数类型上下限限制 <?> 无限制 <? extends E> 声明了类型的上界&#xff0c;表示参数类型可以是他或他的子类。 <? super E> 声明了类型的下界&#xf…

深度学习中的随机种子random_seed

解释 由于模型中的参数初始化例如权重参数如下图&#xff0c;就是随机初始化的&#xff0c;为了能够更好的得到论文中提到效果&#xff0c;可以设置随机种子&#xff0c;从而减少算法结果的随机性&#xff0c;使其接近于原始结果。 设置了随机种子&#xff0c;产生的随机数都…

python、execl数据分析(数据描述)

一 python 1.各函数 1.1python库的安装与导入 #pip install os#pip install matplotlib#pip install seaborn#pip install scikit-learn#pip install scipy#修 改 工 作 目 录import osos.getcwd () # 查看当前工作环境os.chdir( F :\my course\database ) # 修改工作环境o…

linux之Haproxy

介绍 haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面&#xff0c;而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器 下载Haproxy yum install haproxy -y 开启服务 systemctl start haproxy 配…