第一类修正贝塞尔函数的C语言实现
生活随笔
收集整理的這篇文章主要介紹了
第一类修正贝塞尔函数的C语言实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一類修正貝塞爾函數公式
Iν(z)=(z2)ν∑(k=0)∞(z24)kk!Γ(ν+k+1)I_{\nu}(z)=\left(\frac{z}{2}\right)^{\nu} \sum_{(k=0)}^{\infty} \frac{\left(\frac{z^{2}}{4}\right)^{k}}{k ! \Gamma(\nu+k+1)}Iν?(z)=(2z?)ν(k=0)∑∞?k!Γ(ν+k+1)(4z2?)k?
其中,Γ(a)\Gamma(a)Γ(a)是gamma函數。
常量和結構體定義
常量和結構體定義的頭文件ConstParam.h在下面文章中
MATLAB庫函數hilbert(希爾伯特變換)的C語言實現(FFT采用FFTW庫)
第一類修正貝塞爾函數的C語言實現
/* PURPOSE: Evaluate modified Bessel function In(x) and n=0. */ double bessi0(double x) {double ax, ans;double y;if ((ax = fabs(x)) < 3.75) {y = x / 3.75, y = y * y;ans = 1.0 + y * (3.5156229 + y * (3.0899424 + y * (1.2067492+ y * (0.2659732 + y * (0.360768e-1 + y * 0.45813e-2)))));}else {y = 3.75 / ax;ans = (exp(ax) / sqrt(ax))*(0.39894228 + y * (0.1328592e-1+ y * (0.225319e-2 + y * (-0.157565e-2 + y * (0.916281e-2+ y * (-0.2057706e-1 + y * (0.2635537e-1 + y * (-0.1647633e-1+ y * 0.392377e-2))))))));}return ans; }/* PURPOSE: Evaluate modified Bessel function In(x) and n=1. */ double bessi1(double x) {double ax, ans;double y;if ((ax = fabs(x)) < 3.75) {y = x / 3.75, y = y * y;ans = ax * (0.5 + y * (0.87890594 + y * (0.51498869 + y * (0.15084934+ y * (0.2658733e-1 + y * (0.301532e-2 + y * 0.32411e-3))))));}else {y = 3.75 / ax;ans = 0.2282967e-1 + y * (-0.2895312e-1 + y * (0.1787654e-1- y * 0.420059e-2));ans = 0.39894228 + y * (-0.3988024e-1 + y * (-0.362018e-2+ y * (0.163801e-2 + y * (-0.1031555e-1 + y * ans))));ans *= (exp(ax) / sqrt(ax));}return x < 0.0 ? -ans : ans; }/* PURPOSE: Evaluate modified Bessel function In(x) for n >= 0*/ double bessi(int n, double x) {int j;double bi, bim, bip, tox, ans;if (n < 0){return -INFINITY;}if (n == 0)return(bessi0(x));if (n == 1)return(bessi1(x));if (x == 0.0)return 0.0;else {tox = 2.0 / fabs(x);bip = ans = 0.0;bi = 1.0;for (j = 2 * (n + (int)sqrt(ACC*n)); j > 0; j--) {bim = bip + j * tox*bi;bip = bi;bi = bim;if (fabs(bi) > BIGNO) {ans *= BIGNI;bi *= BIGNI;bip *= BIGNI;}if (j == n) ans = bip;}ans *= bessi0(x) / bi;return x < 0.0 && n % 2 == 1 ? -ans : ans;} }總結
以上是生活随笔為你收集整理的第一类修正贝塞尔函数的C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 360网页兼容性设置(360的兼容性怎么
- 下一篇: 电脑显示器模糊的原因分析