function q=myintegral(f,a,b,n,method)
% f 积分函数
%method 是求定积分采用哪种方法,我本次实验采用辛普森法
if nargin<5
method=2;
end
%将a-b的区间分为n个结点,加上中点(a+b)/2,总共有n+1个结点
if nargin<4
n=5;
end
% (b-a)/n 是步长,每块区间的长度 ,积分区间a到b
x=a:(b-a)/n:b;
g=@(t,a,b)t*(b-a)/2+(b+a)/2;
switch method
case 1
A=[1/2,1/2];
xx=[g(-1,x(1:n),x(2:n+1));...
g(1,x(1:n),x(2:n+1))];
q=(b-a)/n*sum(A*f(xx));
%用辛普森公式近似定积分,求出的精度要比梯形公式要高
case 2
A=[1/6,2/3,1/6];
x=a:(b-a)/n:b;
xx=[g(-1,x(1:n),x(2:n+1));...
g(0,x(1:n),x(2:n+1));...
g(1,x(1:n),x(2:n+1))];
%定积分的值
q=(b-a)/n*sum(A*f(xx));
case 3
A=[7/90,16/45,2/15,16/45,7/90];
x=a:(b-a)/n:b;
g=@(t,a,b)t*(b-a)/2+(b+a)/2;
xx=[g(-1,x(1:n),x(2:n+1));...
g(-1/2,x(1:n),x(2:n+1));...
g(0,x(1:n),x(2:n+1));...
g(1/2,x(1:n),x(2:n+1));...
g(1,x(1:n),x(2:n+1))];
q=(b-a)/n*sum(A*f(xx));
case 5
tol=10^(-n);
N=n+1;
h=(b-a)./2.^(0:N-1);
T=zeros(N);
T(1,1)=myintegral(f,a,b,1,1);
for i=2:N
T(i,1)=T(i-1,1)/2+h(i)*sum(f(a+(1:2:2^(i-1)-1)*h(i)));
for j=2:i
T(i,j)=(4^(j-1)*T(i,j-1)-T(i-1,j-1))/(4^(j-1)-1);
end
if abs(T(i,i)-T(i-1,i-1))<tol
break
end
end
q=T(i,i);
end
integral
猜你喜欢
转载自blog.csdn.net/weixin_48450741/article/details/112464778
今日推荐
周排行