fun=@(x)sin(x).*x.^3 % fun:积分表达式
% a,b:积分上下限
a = 0
b = pi
tol=1e-8 % tol:积分精度,默认1e-6
% 计算求积节点
syms x
p=sym2poly(diff((x^2-1)^(n+1),n+1))/(2^n*factorial(n))
tk=roots(p)% 求蠢扰积节点
% 计算求积系数
Ak=zeros(n+1,1)
for i=1:n+1
xkt=tk
xkt(i)=[]
pn=poly(xkt)
fp=@(x)polyval(pn,x)/polyval(pn,tk(i))
Ak(i)=quadl(fp,-1,1,tol)% 求积系数
end
% 积分变量猛档穗代换,将[a,b]变换到[-1,1]
xk=(b-a)/2*tk+(b+a)/2
% 检验积分函数fun有效性
fun=fcnchk(fun,'枝卜vectorize')
% 计算变量代换之后积分函数的值
fx=fun(xk)*(b-a)/2
% 计算积分值
ql=sum(Ak.*fx)
quadl(fun,0,pi) % 调用MATLAB内部积分函数检验
积分区间呢?%%%==========
a1=0.3826
b1=452.1
c1=9.185
a2=0.5569
b2=455
c2=18.23
a3=-0.03431
b3=497.9
c3=11.48
a4=0.2741
b4=554.2
c4=85.93
%积分上下限
x0=1
x1=3
%高斯银虚积分哪搏肢点以及权系数
gx=[-0.9061799,-0.5384693,0,0.5384693,0.9061799]
gweight=[0.2369269,0.4786287,0.5688889,0.4786287,0.2369269]
intf=0
for i=1:5
x=(x0+x1)/2+(x1-x0)/2*gx(i)
intf=intf+gweight(i)*(a1*exp(-((x-b1)/c1).^2)+a2*exp(-((x-b2)/c2).^2)+a3*exp(-((x-b3)/c3).^2)+a4*exp(-((x-b4)/c4).^2))
end
intf=intf*(x1-x0)/李世2
intf
应该用误差函数erf来求。1、首先,积分上下限:
∫(-∞,x)应分成∫(-∞,0)+∫(0,x)=-∫(0,-∞凳没陆)+∫(0,x)
2、被积变量t应作变换:
t1=t/σ
→
t=σ*t1
相应的积分限x变为x/σ
3、系数枣顷:
dt=σ*dt1,σ和原系数分母中的σ约分,余下1/√(2π),与erf函数的系数对察陪照,应该乘以1/(2√2)
综上,原表达式的计算如下(σ的取值自定):
x=-255:255
sigma=100
f=1/(2*(2)^0.5)
*
(
erf(x/sigma)-erf(-inf)
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)