You are on page 1of 2

f=@(x,y) x-3*y^2;

ax=0;bx=2;
ay=1;by=2;
nx=2; ny=2;
hx=(bx-ax)/nx; hy=(by-ay)/ny;
Mid(1)=0;
for i=0:(nx-1)
for j=0:(ny-1)
xi=ax+hx/2+i*hx;
yj=ay+hy/2+j*hy;
Mid(1)=Mid(1)+hx*hy*f(xi,yj);
end
end
nx=4; ny=4;
hx=(bx-ax)/nx;
hy=(by-ay)/ny;
Mid(2)=0;
for i=0:(nx-1)
for j=0:(ny-1)
xi=ax+hx/2+i*hx;
yj=ay+hy/2+j*hy;
Mid(2)=Mid(2)+hx*hy*f(xi,yj);
end
end
nx=8; ny=8;
hx=(bx-ax)/nx;
hy=(by-ay)/ny;
Mid(3)=0;
for i=0:(nx-1)
for j=0:(ny-1)
xi=ax+hx/2+i*hx;
yj=ay+hy/2+j*hy;
Mid(3)=Mid(3)+hx*hy*f(xi,yj);
end
end
nx=16; ny=16;
hx=(bx-ax)/nx;
hy=(by-ay)/ny;
Mid(4)=0;
for i=0:(nx-1)
for j=0:(ny-1)
xi=ax+hx/2+i*hx;
yj=ay+hy/2+j*hy;
Mid(4)=Mid(4)+hx*hy*f(xi,yj);
end
end
nx=32; ny=32;
hx=(bx-ax)/nx;
hy=(by-ay)/ny;
Mid(5)=0;
for i=0:(nx-1)
for j=0:(ny-1)
xi=ax+hx/2+i*hx;
yj=ay+hy/2+j*hy;
Mid(5)=Mid(5)+hx*hy*f(xi,yj);
end
end
syms f
nx=[2,4,8,16,32]; ny=[2,4,8,16,32];
for i=1:5
f=@(x,y)x-3*y^2;
exact(i)=dblquad(f,ax,bx,ay,by,nx(i));
end
disp('n m exact MIDPOINT error')
for i=1:5
error(i)=abs(exact(i)-Mid(i));
fprintf('%2.4f %8.4f %12.4f %14.4f\n
%60.4f\n',nx(i),ny(i),exact(i),Mid(i),error(i));
end

You might also like