Используя Trapezium Rule для любой функции и покажите график - PullRequest
1 голос
/ 15 апреля 2020

Мне удалось создать код, в котором я могу оценить площадь под кривой, используя правило Трапеции. Что я пытаюсь сделать, это построить соответствующий график. Я использовал x ^ 2 в качестве примера, и на рисунке я добавил a = -5, b = 5 и n = 3. И оригинальный график x ^ 2 не подходит, а скорее является слиянием между синими и зелеными линиями. Может кто-нибудь помочь исправить это? Спасибо.

Рисунок 1

% Trapezium Rule
f=@H; % Input Function
 a=input('Enter lower limit a: '); 
 b=input('Enter upper limit b: ');  
 n=input('Enter the no. of interval: ');  
 h=(b-a)/n;
 sum=0;
 % Sum of f(x_1) to f(x_n+1)
 for k=1:1:n+1
  x(k)=a+k*h;
  y(k)=f(x(k));
  sum=sum+y(k);
 end
hold on
plot(x, y,'bo-');
% drawing of the function
plot([x(1:end); x(1:end)], [zeros(1,length(y)); y(1:end)], 'r-');
% vertical lines from the points
plot([x(1:end-1); x(2:end)], [y(1:end-1) ; y(1: end)], 'g--');
% Meant to be forming a trapizium
hold off
answer = (h*0.5)*(sum);
% answer=h/2*(f(a)+f(b)+2*sum);
fprintf('\n The value of integration is %f',answer);

function y = H(x)
    y = x.^2;
end 

1 Ответ

1 голос
/ 15 апреля 2020

Ваша зеленая линия не go от одного и того же значения! Это противники от одного к другому. Вы забыли это.

% the only reason you do -1 is so the last y can go to the end! The same as x
plot([x(1:end-1); x(2:end)], [y(1:end-1) ; y(2: end)], 'g--');
...