Advertisement
Zeronomoji

numInt

Jul 16th, 2022
2,464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.51 KB | None | 0 0
  1. function P = numInt(f1, f2, a, b, n, met, disp)
  2.   %Método retangular
  3.   if met == 0
  4.     %largura dos retângulos
  5.     dx=(b-a)/n;
  6.     %x de cada ret
  7.     xl=a:dx:b-dx;
  8.     %soma das áreas dos retângulos
  9.     A=sum(abs(f1(xl) - f2(xl))*dx);
  10.     %coloca os retângulos no gráfico
  11.     if disp == 0
  12.       for i=1:n
  13.       rectangle('Position',[xl(i) f2(xl(i)) dx (f1(xl(i)) - f2(xl(i)))],'FaceColor','b');
  14.       hold on;
  15.       end;
  16.     endif
  17.   endif
  18.  
  19.   %Método trapezoidal
  20.   if met == 1
  21.     dx=(b-a)/n;
  22.     xl=a:dx:b-dx;
  23.     %Vetor em que a área de cada trapézio será armazenada
  24.     AnT = zeros(1, n);
  25.     %Coloca os trapézios no gráfico ou só calcula a área estima pelos trapézios que não serão colocados
  26.     if disp == 0
  27.       for i=1:n
  28.         v=[xl(i) f1(xl(i));(xl(i) + dx) f1(xl(i) + dx);(xl(i) + dx) f2(xl(i) + dx);xl(i) f2(xl(i))];
  29.         fill(v(:,1), v(:,2) ,'r');
  30.         AnT(i)=polyarea(v(:,1), v(:,2));
  31.         hold on;
  32.       endfor
  33.     else
  34.       for i=1:n
  35.         v=[xl(i) f1(xl(i));(xl(i) + dx) f1(xl(i) + dx);(xl(i) + dx) f2(xl(i) + dx);xl(i) f2(xl(i))];
  36.         AnT(i)=polyarea(v(:,1), v(:,2));
  37.       endfor
  38.     endif
  39.     %Soma da área dos trapézios
  40.     A =  sum(AnT);
  41.   endif
  42.  
  43.  %plota as funções f1 e f2
  44.  if disp == 0
  45.    s=a:0.01:b;
  46.   plot(s,f1(s),'LineWidth',2,'Color','k');
  47.   hold on;
  48.   plot(s,f2(s),'LineWidth',2,'Color','k');
  49.  
  50.   grid on;
  51.   xlim([a b]);
  52.   set(gca,'FontSize',18);
  53.   pbaspect([1 1 1]);
  54.   title((num2str(A)));
  55.  endif
  56.   P = A;
  57. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement