编译插件(MEX文件)的c++源代码,用于计算复杂参数的各种错误函数:
** Faddeeva_erf(z)——错误函数
** Faddeeva_erfc(z) = 1 - erf(z)——互补误差函数
** Faddeeva_erfi(z) = -i erf(iz)——虚误差函数
** Faddeeva_erfcx(z) = exp(z^2) erfc(z)——缩放的互补误差函数
** Faddeeva_w(z) = exp(-z^2) erfc(-iz)——Faddeeva函数
** Faddeeva_Dawson(z) = 0.5根号(pi) exp(-z^2) erfi(z)—道森函数
从Faddeeva函数,我们也可以得到Voigt函数和其他相关函数。
假设您有一个c++编译器(并在MATLAB中使用mex -setup配置了它),通过运行包含的Faddeeva_build进行编译。m MATLAB脚本:
Faddeeva_build
所有函数都使用如下形式:
w = Faddeeva_w(z)
或Faddeeva_w(z, relerr),其中relerr是期望的相对误差(默认:机器精度)。Z可以是复数或实数的数组或矩阵。
此代码也可以从
http://ab-initio.mit.edu/Faddeeva
以及文档和其他版本。正如源代码中所描述的,该实现使用Faddeeva函数的算法组合:大|z|的连续分式展开[类似于g.p.m. Poppe和c.m.j. Wijers,“复杂误差函数的更有效计算”,ACM Trans。数学。软。16 (1),pp. 38-46(1990)],和一个完全不同的算法较小的|z| [Mofreh R. Zaghloul和Ahmed N. Ali,“算法916:计算Faddeyeva和Voigt函数,”ACM翻译。数学。软。38(2),15(2011)。给定Faddeeva函数,我们就可以计算其他的误差函数,尽管我们必须切换到泰勒展开,并在复平面的某些区域使用其他技巧,以避免抵消错误或其他浮点问题。
引用作为
史蒂文·g·约翰逊(2023年)。Faddeeva包:复杂的错误函数(//www.tianjin-qmedu.com/matlabcentral/fileexchange/38787-faddeeva-package-complex-error-functions), MATLAB中央文件交换。检索.