%вычисление определённых интегралов с помощью
%метода левых, правых ,средних прямоугольников,
%метода трапеции и метода Симпсона
function [] = lab_8()

clc;clear; %очистить экран

%по аналогии с предыдущей работой
%в качестве исходного данного возьмем модуль напряжений
%с предыдущих расчетов

U = [
9.94;
10.09;
9.96;
10.01;
10.09;
10.09 ];


f = 50; %частота основной гармоники
w = 2 * pi * f; %круговая частота 314 Гц
T = 1 / f; %период частоты 50 Гц = 20 мс
dt = 0.005; %шаг дискретизации по оси времени


%задаём значения по оси времени как простой массив значений
t = 0:dt:T;
%генерируем функцию в каждой точке оси времени
%значения предыдущих расчетов теперь используются просто как
%коэффициенты
u = U(1)+U(2)*cos(w*t)+U(3)*sin(w*t)+U(4)*cos(2*w*t)+U(5)*sin(3*w*t)+U(6)*cos(4*w*t)

%вычисляем интеграл функции по методу левых прямоугольников
%для этого берем первое значение и умножаем его на ширину шага и т.д.
sum = 0;
for i = 1:length(t)-1
sum = sum + u(i) * dt;
end
U_mlp = sum;

%по методу правых прямоугольников
%действия аналогичные, но на первом шаге берём не первое, а второе
%значение и т.д. (то есть значение справа от текущего шага)
sum = 0;
for i = 1:length(t)-1
sum = sum + u(i+1) * dt;
end
U_mpp = sum;

%для метода средних прямоугольников нужно вычислить значение ф-ции
%которое находится посередине шага. Для этого подставляем его в
%исходную формулу

sum = 0;
for i = 1:length(t)-1

tau = ( t(i)+t(i+1) )/2;
v = U(1)+U(2)*cos(w*tau)+U(3)*sin(w*tau)+U(4)*cos(2*w*tau)+U(5)*sin(3*w*tau)+U(6)*cos(4*w*tau);
sum = sum + v * dt;
end
U_msp = sum;

%метод трапеции оказывается проще по записи и точнее, поэтому
%используют в основном его
sum = 0;
for i = 1:length(t)-1
sum = sum + (u(i)+u(i+1))/2 * dt;
end
U_trap = sum;

%формула Симпсона является сочетанием метода трапеций и средних
%прямоугольников
sum = 0;
for i = 1:length(t)-1

tau = ( t(i)+t(i+1) )/2;
v = U(1)+U(2)*cos(w*tau)+U(3)*sin(w*tau)+U(4)*cos(2*w*tau)+U(5)*sin(3*w*tau)+U(6)*cos(4*w*tau);
sum = sum + 1/6 *( u(i)+4*v+u(i+1) ) * dt;
end
U_sim = sum;

disp('МЛП:')
U_mlp
disp('МПП:')
U_mpp
disp('МСП:')
U_msp
disp('МТ:')
U_trap
disp('МС:')
U_sim
end

%Отчёт загрузить до 18:00 10.12.2021
%Попробовать разный шаг дискретизации от 0.02 до 0.0001
Соседние файлы в папке лаба 8