LiyuanHu91的个人博客分享 http://blog.sciencenet.cn/u/LiyuanHu91

博文

Fortran学习(5):erfc的复数运算

已有 6146 次阅读 2022-4-22 23:15 |个人分类:计算机使用|系统分类:科研笔记

在所考虑的物理问题中,文献中所提供的公式涉及到了复变量的互补误差函数erfc(z)。由于是第一次接触这个函数,出于效率的考虑,像往常那样,查阅Abramowitz和Stegun的Handbook of mathematical functions with formulas, graphs, and mathematical tables,试图找到数值上直接能用的表达式。不过结果不是很理想,虽然找到了个近似式,但里面涉及无穷级数,还是比较麻烦。

检索网络,发现Fortran原来自带误差函数erf(x)与互补误差函数erfc(x),惊喜之余却发现,它们只能计算实变量。不得已,继续检索网络,看看别人怎么做的。终于,在fortran, Error Function of Complex Argument (computer-programming-forum.com)这里发现了线索,在Collected Algorithms of the ACM (netlib.org)程序库中,680号算法中的WOFZ(z)子程序能够用来复变量的erfc计算!它的思路是,以复变量的实部和虚部作为输入量,计算一个叫做FADDEEVA函数的函数w(z),它满足w(z)=exp(-z^2)*erfc(-iz)。基于此,可以计算误差函数erfc(-iz)=w(z)/exp(-z^2)。如果令u=iz和u=x+iy,则z=-iu,因此就有erfc(u)=w(-iu)/exp(-(-iu)^2)。

由于这是个Fortran77格式的子程序,利用在线F77到F90的格式转换程序处理一下后,直接复制到我的主程序里进行调用测试。利用WolframAlpha在线计算检验,结果一致:

【例1】erfc(2.0+i*1.0)

Wolfram:

-0.00360634... + 0.0112590... i

WOFZ(z)结果:

erfc_c= ( -3.6063427256517490E-003,  1.1259006028815020E-002)

【例2】erfc(5.0+i*3.0)

Wolfram:

6.82089×10^-9 + 8.38729×10^-9 i

WOFZ(z)结果:

erfc_c= (  6.8208922065736166E-009,  8.3872893117202845E-009)


不求做多大的事情,但求每天结束的时候都能感到今天有了一点点新收获,这种感觉真好!


【参考资料】

  1. Algorithm 680: evaluation of the complex error function | ACM Transactions on Mathematical Software

  2. Collected Algorithms of the ACM (netlib.org)

  3. fortran, Error Function of Complex Argument (computer-programming-forum.com)

  4. ForQuill - 在线F77转F90自由格式 - Fortran Coder 研讨团队[fcode.cn]

  5. Wolfram|Alpha: Computational Intelligence (wolframalpha.com)


【备用资料】

  1. The Netlib

  2. mlz / libcerf · GitLab (fz-juelich.de)

  3. (4 封私信 / 60 条消息) 如何高效地把FORTRAN77的程序改写成FORTRAN90? - 知乎 (zhihu.com)

  4. Fortran Coder 程序员聚集地 (fcode.cn)

  5. Erfc -- from Wolfram MathWorld

  6. 9.96. ERFC GNU Fortran 7官方教程 _w3cschool

  7. GNU Fortran 7官方教程 _w3cschool



https://wap.sciencenet.cn/blog-3121583-1335203.html

上一篇:Fortran学习(4):exp
下一篇:LaTex学习笔记(7):遇到错误“! Argument of @tempf has an extra }.”
收藏 IP: 221.212.116.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-8 04:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部