标签归档:Python

Python的量化编程练习

感觉只会Fortran可能不太好,所以想多掌握一些语言。但是之前看了看C++,觉得挺难的,所以一瞬放弃了。结果还是「人生苦短,我用Python」。利用NumPy,Python能够与Fortran混编。而且SciPy自带数值计算库,我估计很多时候都没必要自己用Fortran去实现。

由于单纯学语法没啥意思,所以想找一下具体的课题来练习。显然量化编程最合适了。量化编程的练习都是来自Crawdad的网站。网站里是用C++来实现的,我则是用Python写。按照惯例,在GitHub上开了个坑:py-qc

说起来我感觉Psi4应该是个不错的平台(可以看10.1021/acs.jctc.8b00286这篇文章),等更加熟练了Python和Numpy之后想尝试一下。

matplotlib绘制等高线图的几个细节

由于毕业课题涉及到绘制复合物相互作用能的势能面,所以我为了绘制得到较美观的势能面等高线图而仔细看了matplotlibcontourf函数的手册。

实际上一开始是想用gnuplot画图的,但我需要绘制的势能面有一个挺麻烦的特征:其数值的范围非常大。也就是在两个分子靠得比较近的较小的区域里,相互作用能的数值大约为几万(正值,是一种互相排斥的状态);而在两个分子远离的较大区域内,此时作用很弱,因此数值接近零。这种情况下,gnuplot在没有其他设置(我不太清楚是否真的有相关的选项)的情况下绘制出的图效果很不好。
继续阅读matplotlib绘制等高线图的几个细节

氢原子径向波函数数值求解

在此之前,我已经写了一段数值求解一维量子谐振子波函数的Python代码。建议先从该帖子开始阅读(Numerov方法数值求解一维量子谐振子波函数),涉及到的Numerov方法的原理就不再重复了。

首先写出径向部分的Schroedinger方程:
$$ -\frac{\hbar^2}{2m} \left( R^{\prime\prime} + \frac{2}{r} R^\prime \right)+\frac{l(l+1)\hbar^2}{2mr^2} R+V(r)R=ER $$ 继续阅读氢原子径向波函数数值求解