如何使用Syslab进行0阶贝塞尔函数的数值拟合
技术分享
发布于 2025-07-10 10:35:27
查看 1过去327天
实现方式包括以下2种
方式一:
using TyMath
menxian = 3;
f2 = (x, pow1, pow2, sigma) -> @. x / sigma / pow1 * 2 * exp(-(x * x + pow2 * pow2) / pow1 / sigma) * besseli(0, x * pow2 / sigma * 2 / pow1, 0);
sigma = 35.481;
1 - ty_integral(x -> f2(x, 1 / 15, 8 / 15, sigma / 100), 0, sqrt(0.5))
方式二:
using TyMath
menxian=3;
f2=(x,pow1, pow2, sigma) -> @. x/sigma/pow1*2*exp(-(x*x+pow2*pow2)/pow1/sigma)*besseli(0,x*pow2/sigma*2/pow1,0);
sigma =35.481;
1 - integral(x->f2(x,1/15,8/15,sigma/100),0,sqrt(0.5))[1]
如果 menxian 换成数组 可以使用下面广播 @. 形式
using TyMath
menxian = [3:0.2:5; 5.2];
f2 = (x, pow1, pow2, sigma) -> @. x / sigma / pow1 * 2 * exp(-(x * x + pow2 * pow2) / pow1 / sigma) * besseli(0, x * pow2 / sigma * 2 / pow1, 0);
sigma = 35.481;
@. 1 - ty_integral(x -> f2(x, 1 / 15, 8 / 15, sigma / 100), 0, sqrt(menxian / 6))
所属专栏:Julia语言
产品信息:Syslab科学计算环境