整数阶贝塞尔函数c语言,第二类整数阶贝塞尔函数(诺伊曼函数)
#include "stdio.h"
#include "math.h"
/************************************************************
第一类贝塞尔函数:贝塞尔函数
*************************************************************/
double Bessel(int n,double x)
{
int i,m;
double t,y,z,p,q,s,b0,b1;
static double a[6]={ 57568490574.0,-13362590354.0,
651619640.7,-11214424.18,77392.33017,
-184.9052456};
static double b[6]={ 57568490411.0,1029532985.0,
9494680.718,59272.64853,267.8532712,1.0};
static double c[6]={ 72362614232.0,-7895059235.0,
242396853.1,-2972611.439,15704.4826,
-30.16036606};
static double d[6]={ 144725228443.0,2300535178.0,
18583304.74,99447.43394,376.9991397,1.0};
static double e[5]={ 1.0,-0.1098628627e-02,
0.2734510407e-04,-0.2073370639e-05,
0.2093887211e-06};
static double f[5]={ -0.1562499995e-01,
0.1430488765e-03,-0.6911147651e-05,
0.7621095161e-06,-0.934935152e-07};
static double g[5]={ 1.0,0.183105e-02,
-0.3516396496e-04,0.2457520174e-05,
-0.240337019e-06};
static double h[5]={ 0.4687499995e-01,
-0.2002690873e-03,0.8449199096e-05,
-0.88228987e-06,0.105787412e-06};
t=fabs(x);
if (n<0) n=-n;
if (n!=1)
{
if (t<8.0)
{
y=t*t; p=a[5]; q=b[5];
for (i=4; i>=0; i--)
{
p=p*y+a[i]; q=q*y+b[i];
}
p=p/q;
}
else
{
z=8.0/t; y=z*z;
p=e[4]; q=f[4];
for (i=3; i>=0; i--)
{
p=p*y+e[i]; q=q*y+f[i];
}
s=t-0.785398164;
p=p*cos(s)-z*q*sin(s);
p=p*sqrt(0.636619772/t);
}
}
if (n==0) return(p);
b0=p;
if (t<8.0)
{
y=t*t; p=c[5]; q=d[5];
for (i=4; i>=0; i--)
{ p=p*y+c[i]; q=q*y+d[i];}
p=x*p/q;
}
else
{
z=8.0/t; y=z*z;
p=g[4]; q=h[4];
for (i=3; i>=0; i--)
{
p=p*y+g[i]; q=q*y+h[i];
}
s=t-2.356194491;
p=p*cos(s)-z*q*sin(s);
p=p*x*sqrt(0.636619772/t)/t;
}
if (n==1) return(p);
b1=p;
if (x==0.0) return(0.0);
s=2.0/t;
if (t>1.0*n)
{
if (x<0.0) b1=-b1;
for (i=1; i<=n-1; i++)
{ p=s*i*b1-b0; b0=b1; b1=p;}
}
else
{
m=(n+(int)sqrt(40.0*n))/2;
m=2*m;
p=0.0; q=0.0; b0=1.0; b1=0.0;
for (i=m-1; i>=0; i--)
{
t=s*(i+1)*b0-b1;
b1=b0; b0=t;
if (fabs(b0)>1.0e+10)
{
b0=b0*1.0e-10; b1=b1*1.0e-10;
p=p*1.0e-10; q=q*1.0e-10;
}
if ((i+2)%2==0) q=q+b0;
if ((i+1)==n) p=b1;
}
q=2.0*q-b0; p=p/q;
}
if ((x<0.0)&&(n%2==1)) p=-p;
return(p);
}
/*************************************************************
第二类贝塞尔函数:诺伊曼函数
*************************************************************/
double Neumann(int n,double x)
{
int i;
double y,z,p,q,s,b0,b1;
static double a[6]={ -2.957821389e+9,7.062834065e+9,
-5.123598036e+8,1.087988129e+7,-8.632792757e+4,
2.284622733e+2};
static double b[6]={ 4.0076544269e+10,7.452499648e+8,
7.189466438e+6,4.74472647e+4,2.261030244e+2,1.0};
static double c[6]={ -4.900604943e+12,1.27527439e+12,
-5.153438139e+10,7.349264551e+8,-4.237922726e+6,
8.511937935e+3};
static double d[7]={ 2.49958057e+13,4.244419664e+11,
3.733650367e+9,2.245904002e+7,1.02042605e+5,
3.549632885e+2,1.0};
static double e[5]={ 1.0,-0.1098628627e-02,
0.2734510407e-04,-0.2073370639e-05,
0.2093887211e-06};
static double f[5]={ -0.1562499995e-01,
0.1430488765e-03,-0.6911147651e-05,
0.7621095161e-06,-0.934935152e-07};
static double g[5]={ 1.0,0.183105e-02,
-0.3516396496e-04,0.2457520174e-05,
-0.240337019e-06};
static double h[5]={ 0.4687499995e-01,
-0.2002690873e-03,0.8449199096e-05,
-0.88228987e-06,0.105787412e-06};
if (n<0) n=-n;
if (x<0.0) x=-x;
if (x==0.0) return(-1.0e+70);
if (n!=1)
{
if (x<8.0)
{
y=x*x; p=a[5]; q=b[5];
for (i=4; i>=0; i--)
{ p=p*y+a[i]; q=q*y+b[i];}
p=p/q+0.636619772*Bessel(0,x)*log(x);
}
else
{
z=8.0/x; y=z*z;
p=e[4]; q=f[4];
for (i=3; i>=0; i--)
{ p=p*y+e[i]; q=q*y+f[i];}
s=x-0.785398164;
p=p*sin(s)+z*q*cos(s);
p=p*sqrt(0.636619772/x);
}
}
if (n==0) return(p);
b0=p;
if (x<8.0)
{
y=x*x; p=c[5]; q=d[6];
for (i=4; i>=0; i--)
{ p=p*y+c[i]; q=q*y+d[i+1];}
q=q*y+d[0];
p=x*p/q+0.636619772*(Bessel(1,x)*log(x)-1.0/x);;
}
else
{
z=8.0/x; y=z*z;
p=g[4]; q=h[4];
for (i=3; i>=0; i--)
{ p=p*y+g[i]; q=q*y+h[i];}
s=x-2.356194491;
p=p*sin(s)+z*q*cos(s);
p=p*sqrt(0.636619772/x);
}
if (n==1) return(p);
b1=p;
s=2.0/x;
for (i=1; i<=n-1; i++)
{
p=s*i*b1-b0; b0=b1; b1=p;
}
return(p);
}
main()
{
int n;
double x;
double y0,y1,y2;
FILE * fp = fopen("D://data.txt","w");
fprintf(fp,"x Neumann(0) Neumann(1) Neumann(2)/n");
n = 2 ;
for (x=0.5;x<20;x+=0.02)
{
y0 = Neumann(0,x);
y1 = Neumann(1,x);
y2 = Neumann(2,x);
fprintf(fp,"%6.3f %6.3f %6.3f %6.3f/n",x,y0,y1,y2);
}
fprintf(fp,"/n");
fclose(fp);
}
整数阶贝塞尔函数c语言,第二类整数阶贝塞尔函数(诺伊曼函数)相关推荐
- python 贝塞尔函数_第二类整数阶贝塞尔函数(诺伊曼函数) | 学步园
#include "stdio.h" #include "math.h" /****************************************** ...
- 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神
用c语言编写大整数的四则运算,求大神 答案:3 信息版本:手机版 解决时间 2019-10-03 17:13 已解决 2019-10-03 01:32 用c语言编写大整数的四则运算,求大神 最佳答案 ...
- c语言getchar函数_C语言中带有示例的getchar()函数
c语言getchar函数 C语言中的getchar()函数 (getchar() function in C) The getchar() function is defined in the < ...
- python函数分为哪几类_Python 69个内置函数分8类总结
1.内置函数 Python3解释器中内置了69个常用函数,属于底层的函数,它们到处可用.有些对大家来说比较熟悉,比如abs(), max(), sum()... 也有一些比较陌生,比如locals() ...
- c语言 信号函数,C语言中进程信号集的相关操作函数详解
C语言sigismember()函数:测试某个信号是否已加入至信号头文件:#include 定义函数:int sigismember(const sigset_t *set, int signum); ...
- c语言字符串字节数函数,C语言字符,字符串,字节操作常用函数
strlen 这个函数是在 string.h 的头文件中定义的 它的函数原型是 size_t strlen( const char ); size_t 是一个无符号整型,是这样定义的 typedef ...
- 整数划分问题的递归算法-c语言,简单的整数划分问题(递归)
描述 将正整数n 表示成一系列正整数之和,n=n1+n2+-+nk, 其中n1>=n2>=->=nk>=1 ,k>=1 . 正整数n 的这种表示称为正整数n 的划分.正整 ...
- C语言自定义s函数,C语言strcpy_s 和strncpy_s的用法,以及函数实现的方法
//strcpy_s 和strncpy_s的用法,以及函数实现的方法 #include#include#include//用strcpy_s的方法将str2的内容存入str3 //int main() ...
- matlab 0阶贝塞尔函数,零阶贝塞尔函数 分享助,第一类零阶贝塞尔
分享助,第一类零阶贝塞尔函数积分和sinc函数之间有也就是下面的这个等式怎么得出来的. 第二类修正贝塞尔函数的零阶和一阶,分别怎样用mat 书上说 (0和1都是下标) K0(z), the zerot ...
最新文章
- 标注图+部分举例聊聊Vue生命周期
- 「周末观赛指南」澳网新王当立?勇士冲击十连胜
- 框架源码系列四:手写Spring-配置(为什么要提供配置的方法、选择什么样的配置方式、配置方式的工作过程是怎样的、分步骤一个一个的去分析和设计)...
- WPF 基础控件之Window样式
- 【Maven】Maven classifier的作用
- 机械考计算机三级,机器人等级考试三级知识点汇总-20210706222922.pdf-原创力文档...
- ConnectionRead (WrapperRead())Timeout expired
- cc2640r2f i2c接口_TI最新CC2640R2L与CC2640R2F区别详解
- Windows 技术篇-通过注册表查找vc运行库所在位置实战演示,通过ProductCode查看vc++运行库安装位置
- 监听imput框的内容变化
- 多角度了解ABeam(德硕)技术架构
- Python 基于BP神经网络的鸢尾花分类
- Canonical通过Flutter启用Linux桌面应用程序支持
- 前后台订单入库调用流程
- 牛客网在线编程专题《剑指offer-面试题15》链表中倒数第k个节点
- 服务器虚拟化课程总结,虚拟化与云计算课程总结报告
- 怎样消除公司的信息孤岛
- Linux使用笔记:Oracle数据库安装配置(命令行安装)
- 绝地求生钓鱼网站源代码发布开源
- 电视图像信号的发送和接收
热门文章
- R语言deLong‘s test:通过统计学的角度来比较两个ROC曲线、检验两个ROC曲线的差异是否具有统计显著性
- R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据
- R语言广义线性模型Logistic回归模型C Statistics计算
- 机器学习数据整合+pandas方法astype、merge、drop、to_numeric、concat等
- 差异表达基因火山图(ggplot函数)
- java 必须存在默认构造器_Java默认构造方法在字节码的实现
- 原核生物基因组三代数据(pacbio/nanopore)组装
- jsp java 登陆_jsp+java servlet实现简单用户登录
- android 获取网卡mac_防亚马逊账号关联黑科技--如何修改我们的网卡MAC到底重要不?...
- python numpy 欧氏距离