(一)专题实验(Newton-Cotes积分公式)
1、编写[a,b]上梯形积分公式、Simpson积分公式。
2、利用自己编写的程序计算定积分,计算一下数值解和精确解之间差的绝对值。
梯形积分:
function T=TX_int(f,a,b)
T=(b-a)/2*(f(a)+f(b));
>> TX_int(@(x)cos(x),0,pi/4)
ans =
0.6704
function T=TX_int(f,a,b)
T=(b-a)/2*(f(a)+f(b));
a=abs(sqrt(2)/2-T);
disp(a)
>> TX_int(@(x)cos(x),0,pi/4)
0.0367
ans =
0.6704
Simpson积分;
function T=TX_int(f,a,b)
T=(b-a)/6*(f(a)+4*f((a+b)/2)+f(b));
>> TX_int(@(x)cos(x),0,pi/4)
ans =
0.7072
function T=TX_int(f,a,b)
T=(b-a)/6*(f(a)+4*f((a+b)/2)+f(b));
d=abs(sqrt(2)/2-T);
disp(d);
>> TX_int(@(x)cos(x),0,pi/4)
9.5166e-05
ans =
0.7072
(二)专题实验(1维有限区域的Gauss-Legendre积分公式)
1、编写[-1,1]上的2点、3点Gauss-Legendre积分公式。
2点:
function T=TX_int(f,x,a,b)
T=f(-1/(3^0.5))+f(1/(3^0.5));
>> TX_int(@(x)x^2,-1,1)
ans =
0.6667
3点:
function T=TX_int(f,x,a,b)
T=5/9*f(-15^0.5/5)+5/9*f(15^0.5/5)+8/9*f(0);
>> TX_int(@(x)x^2,-1,1)
ans =
0.6667
- 编写一般有限区间[a,b]上的2点、3点Gauss-Legendre积分公式。
2点:
function T=TX_int(f,a,b)
T=(b-a)/2*(f((b+a)/2-(b-a)/2*(3^0.5))+(f((b+a)/2+(b-a)/2*(3^0.5))));
>> TX_int(@(x)x^2,1,2)
ans =
3.0000
3点:
function T=TX_int(f,a,b)
T=(b-a)/2*(5/9*f((b+a)/2-(b-a)/2*(-15^0.5/5))+5/9*(f((b+a)/2+(b-a)/2*(-15^0.5/5)))+8/9*f((b+a)/2));
>> TX_int(@(x)x^2,0,1)
ans =
0.3333
- 利用自己编写的程序计算定积分,计算一下数值解和精确解之间差的绝对值。
2点:
function T=TX_int(f,a,b)
T=(b-a)/2*(f((b+a)/2-(b-a)/2*(3^0.5))+(f((b+a)/2+(b-a)/2*(3^0.5))));
>> T=TX_int(@(x)cos(x),0,pi/4)
T =
0.5641
>> a=abs(sqrt(2)/2-T)
a =
0.1430
3点:
function T=TX_int(f,a,b)
T=(b-a)/2*(5/9*f((b+a)/2-(b-a)/2*(-15^0.5/5))+5/9*(f((b+a)/2+(b-a)/2*(-15^0.5/5)))+8/9*f((b+a)/2));
>> T=TX_int(@(x)cos(x),0,pi/4)
T =
0.7071
>> a=abs(sqrt(2)/2-T)
a =
8.4083e-08
(三)专题实验(复化积分公式)
1、编写一般有限区间[a,b]上复化Simpson公式、复化2点Gauss-Legendre积分公式。
复化Simpson公式:
function T=TX_int(f,a,b,N)
%采用N等分的复化Simpson公式,计算函数f在有限区间[a,b]上的积分.
%返回值T为数值积分值.
T=0;
h=(b-a)/N;
for k=0:N-1
xk=a+k*h;
xk1=a+(k+1)*h;
T=T+(xk1-xk)/2*(f(xk)+f(xk1));
end
复化2点Gauss-Legendre积分公式:
function T=TX_int(f,a,b,N)
%采用N等分的复化Simpson公式,计算函数f在有限区间[a,b]上的积分.
%返回值T为数值积分值.
T=0;
h=(b-a)/N;
for k=0:N-1
xk=a+k*h;
xk1=a+(k+1)*h;
T=T+(xk1-xk)/6*(f(xk)+4*f((xk+xk1)/2)+f(xk1));
end
2、编写程序时对区间N等分,利用自己编写的程序计算定积分,计算一下数值解和精确解之间差的绝对值。测试时要求:对区间等分10份。
复化Simpson公式:
>> T=TX_int(@(x)cos(x),0,pi/4,10)
T =
0.7067
>> a=abs(sqrt(2)/2-T)
a =
3.6352e-04
复化2点Gauss-Legendre积分公式:
>> T=TX_int(@(x)cos(x),0,pi/4,10)
T =
0.7071
>> a=abs(sqrt(2)/2-T)
a =
9.3440e-09
(四)专题实验(2维矩形区域上的Gauss积分公式)
1、编写正方形区域[-1,1]*[-1,1]上的4点Gauss积分公式。
function T=TX_int(f)
T=f(1/sqrt(3),1/sqrt(3))+f(-1/sqrt(3),1/sqrt(3))+f(-1/sqrt(3),-1/sqrt(3))+f(1/sqrt(3),-1/sqrt(3));
>> T=TX_int(@(x,y)1/((x+2)*(y+3)))
T =
0.7552
- 编写一般矩形区域[a,b]*[c,d]上的4点Gauss积分公式。在区域[1,2]*[3,4]上对1中二元函数做数值积分试验,并和精确解做对比。
function T=TX_int(f,a,b,c,d)
m=(b+a)/2;
n=(b-a)/2;
p=(d+c)/2;
q=(d-c)/2;
T=n*q*(f(m+n*1/sqrt(3),p+q*1/sqrt(3))+f(m+n*(-1/sqrt(3)),p+q*1/sqrt(3))+f(m+n*(-1/sqrt(3)),p+q*(-1/sqrt(3)))+f(m+n*1/sqrt(3),p+q*(-1/sqrt(3))));
>> T=TX_int(@(x,y)1/((x+2)*(y+3)),1,2,3,4)
T =
0.0443
>> abs(T-log(4/3)*log(7/6))
ans =
1.8096e-06
3、编写一般矩形区域[a,b]*[c,d]上的9点Gauss积分公式。在区域[1,2]*[3,4]上对1中二元函数做数值积分试验,并和精确解做对比。
function T=TX_int(f,a,b,c,d)
m=(b+a)/2;
n=(b-a)/2;
p=(d+c)/2;
q=(d-c)/2;
T=n*q*(64/81*(f(m+n*0,p+q*0)+25/81*f(m+n*(sqrt(15)/5),p+q*sqrt(15)/5)+25/81*f(m+n*(-sqrt(15)/5),p+q*(sqrt(15)/5))+25/81*f(m+n*sqrt(15)/5,p+q*(-sqrt(15)/5))+25/81*f(m+n*(-sqrt(15)/5),p+q*(-sqrt(15)/5))+40/81*f(m+n*0,p+q*(sqrt(15)/5))+40/81*f(m+n*(-sqrt(15)/5),p+q*0))+40/81*f(m+n*0,p+q*(-sqrt(15)/5))+40/81*f(m+n*(sqrt(15)/5),p+q*0));
>> T=TX_int(@(x,y)1/((x+2)*(y+3)),1,2,3,4)
T =
0.0391
>> abs(T-log(4/3)*log(7/6))
ans =
0.0052