爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 28668|回复: 40

[源代码] 量子物理学中的常用算法与程序(fortran语言)—使用SPI指数等程序的有益参考

  [复制链接]

新浪微博达人勋

发表于 2013-6-4 23:05:29 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 hillside 于 2013-6-10 21:56 编辑

      量子物理与大气科学可说是大物理学中的伙伴,对于数学公式与函数等有一些类似的需求,该书有一定的参考价值。计算物理学类著作虽多,但提供源程序随书光盘或下载的不多。
                                                                     内容简介
      本书简明扼要地讲述了计算物理的基础知识,并给出量子物理学中常用算法及相应的FORTRAN程序。本书既可作为计算物理的入门书,又可作为量子物理计算的工具书。  
     全书由13章组成,主要包括FORTRAN算法语言简介,代数公式,常用特殊函数,3i、6j和9j符号,一元方程,线性代数,函数插值与微商,常微分方程,数值积分,本征问题,递推与迭代,蒙特卡罗方法,快速傅里叶变换等,同时还有与内容相对应的大小程序82个。  
      本书内容偏重于量子物理学,其中一些内容是作者与同事们在计算物理领域的研究成果。例如,矩阵元的计算,主值积分,薛定谔方程的辛算法,定态薛定谔方程的有限差分法,微扰论的递推形式,最陡下降法,透射系数的递推公式,I-V曲线等,这些新的算法都具有较高的实际应用价值。
    《量子物理学中的常用算法与程序》首先对FDRTRAN语言做了简单概括的介绍,然后由浅入深地讲解了量子物理学中常用到的一些算法及相应的程序,其中包括,代数公式,常用特殊函数,3j、6i和9i符号,一元方程,线性代数,函数插值与微商,常微分方程,数值积分,本征问题,递推与迭代,蒙特卡罗方法,快速傅里叶变换等内容,同时还有与内容相对应的大小程序82个。
  《量子物理学中的常用算法与程序》既可作为计算物理的入门书,又可作为量子物理计算的工具书。

目录
第0章 FORTRAN语言简介
0.1 FORTRAN语言概述
0.2 变量的类型
0.3 程序的结构
第1章 代数公式
1.1 排序与求和
1.2 阶乘、排列与组合
1.3 复数运算
第2章常 用特殊函数
2.1 伽马函数与贝塔函数
2.2 正交多项式
2.3 贝塞尔函数
第3章 3j、6j和9j符号
3.1 CG系数与3i符号
3.2 U系数与6i符号
3.3 广义拉卡系数与9i符号
3.4 数值计算的验证功能
第4章 一元方程
4.1 直接公式解法
4.2 迭代法
4.3 二分法
4.4 牛顿法与弦截法
第5章 线性代数
5.1 高斯消元法
5.2 迭代法
5.3 追赶法
5.4 矩阵求逆
第6章 函数插值与微商
6.1 拉格朗日插值公式
6.2 差分、差商与数值微商
6.3 牛顿插值公式
6.4 厄米插值公式
6.5 曲线拟合
第7章 常微分方程
7.1 常微分方程的初值问题
7.2 薛定谔方程的辛算法
7.3 常微分方程的边值问题
7.4 有限元法
第8章 数值积分
8.1 辛普生求积公式
8.2 龙贝格积分法
8.3 二重积分
8.4 主值积分
8.5 积分转化为有限项求和
第9章 本征问题
9.1 乘幂法
9.2 雅可比方法
9.3 实对称矩阵的QL解法
9.4 有限差分法
第10章 递推与迭代
10.1 无简并微扰论公式的递推形式
10.2 简并微扰论公式的递推形式
10.3 微扰论递推公式应用举例
10.4 最陡下降法
10.5 透射系数的理论计算
10.6 I-V曲线
第11章 蒙特卡罗方法
11.1 蒙特卡罗方法的基本原理
11.2 随机变量抽样值的产生
11.3 蒙特卡罗方法计算积分
第12章 快速傅里叶变换
12.1 傅里叶变换
12.2 快速傅里叶变换
程序一览表
参考文献

注:作者在前言中称,作者可自行下载程序。
未命名.JPG

       附:伽马函数程序(摘于随书源程序):
        
        PROGRAM TGAMMA
        IMPLICIT DOUBLE PRECISION (A-H,O-Z)
        COMMON/A/ A(11)
        DATA A/1.0000000000D0,0.4227843370D0,
     *         0.4118402518D0,0.0815782188D0,
     *        0.0742379076D0,-0.0002109075D0,
     *        0.0109736958D0,-0.0024667480D0,
     *        0.0015397681D0,-0.0003442342D0,
     *        0.0000677106D0/        
        OPEN(2,FILE='DT.DAT')
999        WRITE(*,1)
1     FORMAT(2X,'X=?')
      READ(*,2) X
2     FORMAT(F15.7)
      IF(X.EQ.0.D0) STOP
        F=GAMMA(X)
        WRITE(*,3) X,F
        WRITE(2,3) X,F
3        FORMAT(2X,'X,F=',2E15.7)
        GOTO 999
        STOP
        END

C     X,F=   .1000000E+00   .9513508E+01
C     X,F=   .2000000E+00   .4590844E+01
C     X,F=   .3000000E+00   .2991569E+01
C     X,F=   .5000000E+00   .1772454E+01
C     X,F=   .1000000E+01   .1000000E+01
C     X,F=   .2000000E+01   .1000000E+01
C     X,F=   .3000000E+01   .2000000E+01

        DOUBLE PRECISION FUNCTION GAMMA(X)
        IMPLICIT DOUBLE PRECISION (A-H,O-Z)
        COMMON/A/ A(11)
        IF(X.GT.1.D0) GOTO 10
        T=X
        GOTO 50
10        IF(X.GT.2.D0) GOTO 20
        T=X-1.D0
        GOTO 50
20        IF(X.GT.3.D0) RETURN
        T=X-2.D0
50        CONTINUE
        P=A(11)
        DO 1 K=10,1,-1
1        P=T*P+A(K)
        IF(X.GT.1.D0) GOTO 110
        GAMMA=P/X/(X+1.D0)
        GOTO 550
110        IF(X.GT.2.D0) GOTO 220
        GAMMA=P/X
        GOTO 550
220        IF(X.GT.3.D0) RETURN
        GAMMA=P
550        CONTINUE
        RETURN
        END

伽马函数程序阅读感想:
       气象家园中对于干旱指数SPI的计算结果存在讨论,认为现有网上现有程序的SPI计算结果明显偏大,我也发现类似情形。我简单比对之下,发现网站的部分SPI.FOR中的伽马函数“DATA A”后个别数值明显有异,如本程序中的-0.0024667480D0在部分  SPI.FOR中却为-0.0024467480 。在无其它材料佐证的情况下,一时无法判断谁是谁非。部分使用SPI的网友已猜测SPI.FOR中的GAMMA函数可能存在问题。
      不过,我对该书的程序质量情况未作测试。
增补:
经过初步比对《量子物理学中的常用算法与程序》中的GAMMA.for与网络下载的c语言计算程序gamma.cpp,发现原来差异是合理的,最终计算得到的伽马值都是正确的。gamma.cpp与部分SPI.FOR都取10位系数,而GAMMA.for采用了11位系数(从计算数学的角度来看,可能精度更高)。对SPI.FOR中单独提取gamma函数计算片断,发现也是正确的,SPI的GAMMA累计概率的正确性尚未核实。SPI的GAMMA累计概率需使用不完全GAMMA函数(C语言版),现一并附上有关程序。国内SPI短程序中的“a too  large”一语在不完全GAMMA函数(C语言版) 也同样存在,大体可以判断是同一来源。  

说明:本人对于SPI也是刚刚接触,并无太多了解。国内网上常见的是与《标准化降水指标与z指数在我国应用的对比分析》论文中方法相同或相似的短程序,另外网络上可找到据称来自科罗拉多大学的长篇程序。不过,因比较复杂,本人没有细看。

SPI.FOR程序可见气象家园相关帖子:
标准化降水指数计算程序求指正
气象干旱综合指数SPI值里伽玛函数用Excel如何计算?  
分享计算SPI的方法 分享3个计算SPI指数的源程序
SPI指数的matlab程序和fortran程序
一个求取SPI指数的程序






量子物理学中的常用算法与程序(随书源程序).rar

67.86 KB, 下载次数: 96, 下载积分: 金钱 -5

GAMMA(取自《量子物理学中的常用算法与程序》).for

1.28 KB, 下载次数: 21, 下载积分: 金钱 -5

gamma.cpp

1.3 KB, 下载次数: 9, 下载积分: 金钱 -5

gamma函数计算(fortran,提取自SPI程序).f90

770 Bytes, 下载次数: 23, 下载积分: 金钱 -5

spi.f(据称来自科罗拉多大学的SPI长程序)

40.81 KB, 下载次数: 43, 下载积分: 金钱 -5

不完全伽马函数的计算程序.rar

1.53 KB, 下载次数: 20, 下载积分: 金钱 -5

评分

参与人数 2金钱 +16 贡献 +5 收起 理由
保时捷1209 + 1 赞一个!
mofangbao + 15 + 5

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-5 00:37:08 | 显示全部楼层
感谢分享!!!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-5 06:22:00 | 显示全部楼层
一早来报个到,学习学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-5 07:15:06 | 显示全部楼层
感谢分享,支持一下!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-5 07:28:31 | 显示全部楼层
感谢分享,支持一下!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-5 09:20:28 | 显示全部楼层
好书!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-5 09:32:08 | 显示全部楼层
楼主真是太强大了!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-7 11:07:11 | 显示全部楼层
量子物理学都上来了,不知道有没有用量子物理学做预报的资料
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-7 11:36:32 | 显示全部楼层
感谢分享,珍藏了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-11 19:35:01 | 显示全部楼层
顶一个哈哦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表