برنامه ی زیر برای محاسبه ی انتگرال توسط روش یک نقطه ای و دو نقطه ای است. اگر آدرس ایمیلت رو در یک نظر خصوصی
برام بفرستی برنامه ی کلی رو برات ایمیل میکنم.
Inputs:
% a = left endpoint of interval
% b = right endpoint of interval
% N = number of subintervals
%
% Required m-file
% f.m is m-file for function f(x)
%
% Outputs:
% G1 = value from 1-point gaussian quadrature
% G2 = value from 2-point gaussian quadrature
i=0; N=1; a=0; b=1;
% Compute exact solution
exact=exp(1)-1;
% Use MATLAB integration command
%exact=quad('f',a,b);
fprintf('\nExact answer = %e\n',exact);
for n=1:5
N=N*2;
i=i+1;
K(i)=N-1;
xd=linspace(a,b,N);
h=xd(2)-xd(1);
% 1-point gaussian quadrature
sum=0;
for j=1:N-1
sum=sum+f(xd(j)+0.5*h);
end;
G1(i)=h*sum;
% 2-point gaussian quadrature
c1=0.5*h*(1-1/sqrt(3));
c2=0.5*h*(1+1/sqrt(3));
sum= 0;
for j=1:N-1
sum=sum+f(xd(j)+c1)+f(xd(j)+c2);
end;
G2(i)=0.5*h*sum;
errG1(i)=abs(G1(i)-exact); errG2(i)=abs(G2(i)-exact);
fprintf('\nNumber of subintervals = %4i \n',K(i));
fprintf('\nGauss 1 = %e Gauss 2 = %e \n',G1(i), G2(i));
fprintf('\nGauss Error 1 = %e Gauss Error 2 = %e \n\n',errG1(i), errG2(i));
end;
loglog(K,errG1,'-or')
hold on
loglog(K,errG2,'-ob')
grid on
title('Blue = Gauss 2-point Red = Gauss 1-point','Color','r','FontSize',14)
xlabel('Number of Subintervals','FontSize',14); ylabel('Error','FontSize',14);