gamma函数表:第十一章 使用特殊函数工作

1.Γ(伽马)函数

公式
在这里插入图片描述

2.MATLAB中的伽马函数

gamma(6)

ans = 120

n = linspace(0,5);

plot(n,gamma(n)),xlabel(‘n’),ylabel(‘Gamma(n)’),grid on//绘图观察

(1)伽马函数对负参数在正值与负值之间振荡一样

y = gamma(-0.5)

y =-3.5449

y = gamma(-1.2)

y = 4.8510

y = gamma(-2.3)

y = -1.4471

(2)1到2之间的****数值

x = (1:0.1:2)';

y = gamma(x);

A = [x y]

A =

1.0000 1.0000

1.1000 0.9514

1.2000 0.9182

1.3000 0.8975

1.4000 0.8873

1.5000 0.8862

1.6000 0.8935

1.7000 0.9086

1.8000 0.9314

1.9000 0.9618

2.0000 1.0000

surface = @(n,r) r(n-1)*2*(pi(n/2))/gamma(n/2)//配置n维球体表面积内联函数

surface(2,1)

ans = 6.2832

surface(3,1)

ans = 12.5664

3.与伽马函数相关的数

MATLAB允许你计算不完全伽马函数(incomplete gamma function)

MATLAB中用来求这个函数值的命令是:y = gammainc(x,n)

当x<1和n<1时,不完全伽马函数满足p(x, n) ≈ xn。我们可以使用一些计算来检验它:

x = 0.2;

n = 0.3;

y = x^n

y = 0.6170

z = gammainc(x,n)

z = 0.6575

结论:取更小的数值时,这种近似更加接近

4.贝塞耳函数

贝塞耳微分方程(Bessel’s differential equation)在很多工程和科学上都有应用。这个方程的形式是:

x2y’’ + xy’ + (x2 - n2)y = 0

这个方程的解是:y(x) = A1Jn(x) + A2Yn(x)

贝塞尔函数描述:其中A1和A2由边界条件确定的常数。解中的函数Jn(x)就是第一类贝塞耳函数(Besselfunction of the first kind)而Yn(x)是第二类贝塞耳函数(Bessel function of the second kind)或者是诺埃曼函数(Neumann function)。

第一类贝塞耳函数使用besselj实现。调用的形式是:y = besselj(n,x)

x = [0:0.1:50]; y = besselj(1,x);

plot(x,y),xlabel(‘x’),ylabel(‘BesselJ(1,x)’)//产生J1(x)的图象

结论:注意当x→0是,J1(x)是有限的,趋于0。我们还可以看到这个函数具有衰减振荡行为。这些特征普遍适用于第一类贝塞耳函数。

x = [0:0.1:20]; u = besselj(0,x); v = besselj(1,x); w = besselj(2,x);

plot(x,u,x,v,‘–’,x,w,‘-.’),xlabel(‘x’),ylabel(‘BesselJ(n,x)’),…

grid on, legend(‘bessel0(x)’,‘bessel1(x)’,‘bessel2(x)’)//产生一个图象比较J0(x)、J1(x)和J2(x)

第一类贝塞耳函数也可以在负整数上定义。它们与第一类贝塞耳函数的在正整数上的定义相关联:

J-n(x) = (-1)nJn(x)

贝塞耳函数的求导数公式

syms n x y

diff(besselj(n,x))

ans =-besselj(n+1,x)+n/x*besselj(n,x)

J’n(x) = n/x*Jn(x) - Jn+1(x)

贝塞耳函数的积分公式

syms x n;

int(x^n*besselj(n-1,x))

ans =x^n*besselj(n,x)

⌠x^nJn-1(x)dx = x ^nJn(x)

J0(x)和J1(x)的泰勒级数展开式的前五项:

taylor(besselj(0,x),5)

ans =1-1/4*x2+1/64*x4

taylor(besselj(1,x),5)

ans =1/2x-1/16x^3

以此类推第二类贝塞耳函数使用bessely(n, x)实现

扩展:其它类型的贝塞耳函数——汉克尔函数(Hankel Function)调用besselh(nu, k, z)即可利用这些函数,一共有两类的汉克尔函数(第一类和第二类),在MATLAB中函数的类型由k表示。如果我们把k从参数中省略而写成besselh(nu, z),MATLAB默认是使用第一类汉克尔函数。

r = linspace(0,10);

u = besselh(0,r);

besselh(0,2)

ans = 0.2239 + 0.5104i

plot(r,real(u)),xlabel(‘r’),ylabel(‘Hankel(0,r)’)

欧拉公式(Euler’s formula)计算结果:eiθ= cosθ + isinθ

注意:MATLAB 使用NaN来表示“不是数值(not a number)”

5.贝塔函数


beta函数应用

(0.5)*beta(3,2)

ans =0.0417

6.特殊积分

幂积分:

使用下面的语法来执行这个函数:y = expint(x)

这里我们把数值列成表。注意expint(0) = inf。

x = (0.1:0.1:2)'; y = expint(x); A = [x y]

A =

0.1000 1.8229

0.2000 1.2227

0.3000 0.9057

0.4000 0.7024

0.5000 0.5598

0.6000 0.4544

0.7000 0.3738

0.8000 0.3106

0.9000 0.2602

1.0000 0.2194

1.1000 0.1860

1.2000 0.1584

1.3000 0.1355

1.4000 0.1162

1.5000 0.1000

1.6000 0.0863

1.7000 0.0747

1.8000 0.0647

1.9000 0.0562

2.0000 0.0489

很多其它的特殊函数可以通过使用mfun命令进行数值计算。通过查询MATLAB的帮助,我们可以看到一个可以用来进行数值计算的函数表格:

黎曼ζ函数(Riemann zeta function)

结论:函数收敛于1

7.勒让德函数


其中n是一个非负整数。这个方程的解可以写成:y = a1*Pn(x) + a2 *Qn(x)


相伴勒让德方程只有在**-1≤x≤1内有效。函数legendre(n, x)**可以计算第一类相伴勒让德函数P0n(x) ,P2n(x) ,…,Pnn(x) 。还可以用来进行相伴勒让德函数的数值计算。

例如,假设我们要计算n=1时的值,这相当于告诉我们m = 0或m = 1。首先我们在-1≤ x ≤1内取出间隔均匀的点:

x = (-1:0.5:1)

x = -1.0000 -0.5000 0 0.5000 1.0000

现在我们计算n = 1的函数值:

p = legendre(1,x)

数据以下面的形式显示出来:

p =

-1.0000 -0.5000 0 0.5000 1.0000

0 -0.8660 -1.0000 -0.8660 0

x = linspace(-1,1);//定义区间

p1 = legendre(1,x); p2 = legendre(2,x); p3 = legendre(3,x);p4 = legendre(4,x);//建立相伴勒让德函数,产生legendre(2, x)的图象,在这种情况下n = 2,意味着m = 0, 1, 2

plot(x,p1),xlabel(‘x’),ylabel(‘p1’)//绘制第一个图象

f = p2(1,:);

g = p2(2,:);

h = p2(3,:);

plot(x,f,x,g,‘–’,x,h,‘:’),xlabel(‘x’), …

ylabel(‘p2’), legend(‘p(2,0)’,‘p(2,1)’,‘p(2,2)’)//绘制n=2的全部图像

8.亚里函数

亚里函数(空想函数Airy functions)以下形式的方程的解:

d2Ψ/dx^2 - x*Ψ = 0

物理学上,亚里函数在学习量子力学时需要用到。我们用Ai(z)来表示亚里函数。当亚里函数的参数为实数时,它可以写成:


在MATLAB中使用w = airy(z)来计算Ai(z)的值。对于实数参数,当x = 0时亚里函数可以

写成伽马函数的形式:Ai(0) =1/((3^(2/3))*Γ(2/3))

x = linspace(-10,5);

y = airy(x);

plot(x,y),xlabel(‘x’),ylabel(‘Ai(x)’),grid on

结论:当x为负值时,函数有振荡行为,当x为正值时,函数呈现出指数衰减行为

相关推荐

相关文章