Лабораторная работа №4. Численное интегрирование.
1. Изучить содержание файла quadsimp.m
2. При помощи процедуры quadsimp вычислить определенный интеграл для функции sin(x) на отрезке [0,pi] с разными (например: 0.5, 0.2, 0.1) значениями шага разбиения отрезка интегрирования. Сравнить полученную погрешность с теоретической оценкой. Выписать зн-я шага, полученной погрешности, теоретической оценки в тетрадь.
3. Создать (в виде m-файлов) две собственные процедуры численного интегрирования, одна из которых использует квадратурную формулу прямоугольников, другая - формулу трапеций. Параметры вызова процедур - такие же, как у quadsimp.
4. С помощью полученных процедур интегрирования вычислить определенный интеграл для функции sin(x) на отрезке [0,pi] с теми же значениями шага разбиения отрезка интегрирования, что и в пункте 2. Сравнить полученную погрешность с теоретической оценкой. Выписать зн-я шага, полученной погрешности, теоретической оценки в тетрадь.
5. Используя квадратурные формулы прямоугольников, трапеций и Симпсона, вычислить определенный интеграл от функции y=x^2 на отрезке [0,1], оценить погрешность, сравнить с точным значением интеграла. Выписать в тетрадь результаты. Уменьшить вдвое шаг разбиения отрезка интегрирования и повторить выполнение данного пункта задания.
6. Вызвать демонстрацию примера численного интегрирования с заданной точностью (файл quaddemo.m). Изучив текст файла quaddemo.m, убедиться в том, что вычисление интеграла производится процедурой из файла quad.m. При помощи процедуры quad вычислить определенный интеграл для функции sin(x) на отрезке [0,pi] с различной точностью.
7. Найти определенные интегралы по заданию преподавателя.
Приложение - текст файла quadsimp.m
function [y]=quadsimp(f,a,b,h)
% [y]=quadsimp(f,a,b,h)
% квадратурная формула Симпсона
% вычисление интеграла по отрезку [a,b] от функции f
% h - шаг изменения абсциссы
% f - строковая переменная (имя функции), например, 'sin'
n=round((b-a)/(h*2)); % половина от общего числа вычислений f
h=(b-a)/(2*n); % уточняем h
sum1=0;
sum2=0;
for i=1:(n-1),
sum1=sum1+feval(f,a+h*(2*i-1));
sum2=sum2+feval(f,a+h*2*i);
end;
sum1=sum1+feval(f,a+h*(2*n-1));
y=(feval(f,a)+feval(f,b)+4*sum1+2*sum2)*h/3;