)专题实验(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

  1. 编写一般有限区间[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

  1. 利用自己编写的程序计算定积分,计算一下数值解和精确解之间差的绝对值。

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

  1. 编写一般矩形区域[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


版权声明:本文为m0_62883956原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_62883956/article/details/126980333