ВЫЧИСЛЕНИЕ ИНТЕГРАЛОВ % № 1 % Метод трапеций средствами MATLAB >> x = 0:pi/100:pi; >> y = sin(x); >> z = trapz(x,y) z = 1.9998 % № 2 % Метод Симпсона. Вычисление интеграла аналитически заданной функции средствами MATLAB % q = quad(fun,a,b) approximates the integral of function fun from a to b % to within an error of 10-6 using recursive adaptive Simpson quadrature. % Вариант 1 >> Q = quad('sin(x)',0,pi) % Вариант 2 с указанием точности аппроксимации квадратур >> Q = quad('sin(x)',0,pi,1e-4) % № 3 % Метод ЛОБАТТО (Gaussian quadrature). Вычисление интеграла аналитически заданной функции средствами MATLAB % q = quadl(fun,a,b) approximates the integral of function fun from a to b, to within an % error of 10-6 using recursive adaptive Lobatto quadrature. fun accepts a vector x and % returns a vector y, the function fun evaluated at each element of x. % Вариант 1 >> Q = quadl('sin(x)',0,pi) % Вариант 2 с указанием точности аппроксимации квадратур >> Q = quadl('sin(x)',0,pi,1e-4) % № 4 ПОДГОТОВКА ТЕСТОВЫХ ДАННЫХ x = 0:pi/100:pi; y = sin(x); z = trapz(x,y) M1=[x; y]; h=x(2)-x(1); % № 4 % Вычисление интеграла с переменным шагом методом трапеций % M1(1,k) - Значения X % M1(2,k) - Значения Y if (size(M1,1) < 2) || (size(M1,1) < 2) disp('Размерность матрицы M1 должна быть не менее чем 2х2'); return; end; s=0; for k=1:(size(M1,2)-1) s=s+(M1(2,k)+M1(2,k+1))*(M1(1,k+1)-M1(1,k)); end; s=s/2; % № 5 function s=ftrap01(M1) % Вычисление интеграла с переменным шагом методом трапеций % M1(1,k) - Значения X % M1(2,k) - Значения Y if (size(M1,1) < 2) || (size(M1,1) < 2) disp('Размерность матрицы M1 должна быть не менее чем 2х2'); return; end; s=0; for k=1:(size(M1,2)-1) s=s+(M1(2,k)+M1(2,k+1))*(M1(1,k+1)-M1(1,k)); end; disp('Вычисление интеграла с переменным шагом методом трапеций'); s=s/2; % № 6 function s=ftrap02(y,h) % Вычисление интеграла с постоянным шагом h методом трапеций % y - Значения y % h - Значение шага if (length(y) < 2) disp('Число элементов вектора y должно быть не менее чем 2'); return; end; s=0; for k=1:(length(y)-1) s=s+y(k)+y(k+1); end; disp('Вычисление интеграла с постоянным шагом h, методом трапеций'); s=s*h/2; % № 7 function s=fsimp01(y,h) % Вычисление интеграла с постоянным шагом h методом Симпсона % y - Значения y % h - Значение шага if (length(y) < 3) disp('Число элементов вектора y должно быть не менее чем 3'); return; end; s=0; k=1; if rem(length(y),2)==0 s=s+(y(2)+y(1))/2; k=2; end; s ke= length(y)-2; while k <= ke s = s + (y(k)+4*y(k+1)+y(k+2))/3; k=k+2; end; disp('Вычисление интеграла с постоянным шагом h методом Симпсона'); s=s*h;