Matlab: 无穷积分的运算
科研菜鸟(http://blog.sciencenet.cn/u/sanshiphy)2012-2-17
f可利用 int 和 quadgk 函数数值求解型如 ( )x dx
的积分,前者适合进行符号积分或获
得 ( )f x 的精确值。有时积分较为复杂,用 int 无法求解,此时可利用 quadgk 进行数值积分
求解。
1、 int 函数的使用
如果 ( )f x 中不含符号参数,则调用
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
如下:
syms x; int(f(x),a,b)
其中,syms函数用于指明自变量 x 是符号变量,a 是下积分限,b 是上积分限。如果 ( )f x 中
含有符号参数 s,则应指明对 x 进行积分,调用格式如下:
syms x s; int(f(x;s),a,b)
如果想看某一参数取值下的积分值,则调用格式如下:
syms x s; I=int(f(x;s),a,b); subs(I,s0)
其中 s0 是参数 s 的一个具体取值。
例 1:求解
2
2
sin x dx
x
(计算量子跃迁几率时的关键积分,手动求解需要利用留数定理)
syms x;
int((sin(x))^2/x^2,-inf,inf)
ans =
pi
例 2:求解 2 1 1/2
1
(1 ) k
dx
kx
syms x k;
f=int(1/((1+k*x^2)^(1+1/(2*k))),x,-inf,inf)
f =
piecewise([-1 < Re(1/k) and (-2 < 1/k or not 1/2/k in Z_) and k <>
0 and abs(arg(k)) < pi, (2*pi^(1/2)*k^(1/2)*gamma(1/(2*k) +
1/2))/gamma(1/(2*k))])
subs(f,0.5)
ans =(pi*2^(1/2))/2
2、 quadgk 函数的使用
quadgk 是采用自适应 Gauss-Kronrod 求积法,调用格式如下:
quadgk(@(x)f(x,s),a,b);
其中,x 是自变量,s 是参数,a 和 b 分别是上下积分限,@(x)用于指明自变量或被积分的
变量。f(x,s)是被积函数,需要通过 function定义。
例 3:求积分
22
0
2 2
0
ln ( / )1( ) exp exp
2 2 2 2
x df x
function y=castaing(x,lambda)
%%%%%%% adaptive Gauss-Kronrod quadrature %%%%%%%
m=length(x);
y = zeros(1,m);
for n=1:m
y(n)=quadgk(@(sigma)castaingfun(x(n),lambda,sigma),0,Inf);
end
function f=castaingfun(x,lambda,sigma)
sigma0=exp(-lambda^2);
f=exp(-x.^2./(2.*sigma.^2)).*exp(-(log(sigma./sigma0)).^2./(2.*lambda
.^2))./(2.*pi.*lambda.*sigma.^2);
下图是取不同值时,x 在[-8,8]范围内的积分结果: