Ввод переделов интегрирования a и b
3. События, возникающие при нажатии кнопки «Вычисление»4
3.1. Присвоить соответствующим переменным значения функции и пределов интегрирования.
% Переменной F присвоить значение свойства 'String' объекта 'FunctionName.
% Тип переменной 'String' - string (строка, символьное выражение), поэтому тип переменной F -
% string
F=get(handles.FunctionName,'String');
% Переменной strStart присвоить значение свойства 'String' объекта 'Start'
strStart=get(handles.Start,'String');
% C помощью функции str2num('str') преобразем строку strStart в число
a=str2num(strStart);
% Можно записать в одну строку, передавая функции str2num() в качестве
% аргумента значение свойства 'String' объекта 'Start'
% a=str2num(get(handles.Start,'String'));
strLast=get(handles.Last,'String');
b=str2num(strLast);
% b=str2num(get(handles.Last,'String'));
3.2. Вычислить интеграл
% Вычисление интеграла методом парабол (квадратурная формула). Ограничение
% функции quad(F,a,b) - подинтегральная функция F должна содержать поэлементные операции
% ('.*', './', '.^'), тип данных F - string.
I=quad(F,a,b);
3.3. Записать результат расчета в поле «Интеграл»
% Переменной strI присваиваем преобразованное в строку значение интеграла I
strI=num2str(I);
% Задать свойству 'String' объекта 'Integral' значение strI
set(handles.Integral,'String',strI);
4. События, возникающие при нажатии кнопки «График»
4.1. Очистка осей
% Очистить графическое окно объекта 'axes1'
axes(handles.axes1);
cla;
4.2. Присвоить соответствующим переменным значения функции и пределов интегрирования
% Для графического представления аналитически заданной функции
% воспользуемся фунцией ezplot (x,[min,max]), где x - символьное выражение
% или текстовая строка, содержащая аналитическое задание функциональной
% зависимости, [min,max] - область построения графика функции.
x=get(handles.FunctionName,'String');
min=str2num(get(handles.Start,'String')); 5
max=str2num(get(handles.Last,'String'));
4.3. Построить график функции, добавив подписи осей и сетку
ezplot (x,[min,max])
% Можно записать в одну строку
% ezplot (get(handles.FunctionName,'String'),[str2num(get(handles.Start,'String')),str2num(get(handles.Last,'String'))])
% Добавить подпись оси Y
ylabel('f(x)','FontSize',12);
% Добавить подпись оси X
xlabel('x','FontSize',12);
% Использовать основные лини сетки
set(handles.axes1, 'XMinorGrid', 'on', 'YMinorGrid', 'on');
% Использовать промужуточные лини сетки
set(handles.axes1, 'XGrid', 'on', 'YGrid', 'on', 'GridLineStyle', '-');
6. Пример рабочего окна приложения
Численное интегрирование функции одной переменной
Обыкновенный определенный интеграл, у которого известна его
первообразная Fx, вычисляется по формуле Ньютона-Лейбница
I Fa Fb. Поэтому для вычисления “простых”
определенных интегралов достаточно вычислить значения функции
Fx в точках x = a и x = b.
Применяют численный метод интегрирования, если невозможно
вычисление интеграла по формуле Ньютона — Лейбница или
первообразная функция является сложной для вычисления значений.
Определенный интеграл с пределами интегрирования a и b можно
b
a
I f x dx
трактовать как площадь фигуры, ограниченной ординатами a и b,
осью абсцисс x и графиком подынтегральной функции f x.
Суть метода численного интегрирования заключаются в замене
подынтегральной функции на более простую, т.е. интерполяции
функции f x на отрезке a,b подходящим полиномом,
интеграл которого можно вычислить аналитически.
Обычно отрезок a,b разбивается на n частей, к каждой из
которых применяется интерполяция функции и определяется
соответствующая формула интегрирования.
Метод прямоугольников
1) метод левых прямоугольников
( ) ( ),
b n
a i
f x dx h f a i h
где h b - a шаг интегрирования.
Рис. 1. Ступенчатая фигура, полученная по методу левых
Прямоугольников
Псевдокод алгоритма метода левых прямоугольников
ввод f (x), n, a, b
i = 0
S = 0
h = (b − a)/n
пока i ≤ n − 1 делать
x = a + i∙h
S = S + f (x)·h
2) метод правых прямоугольников
( ) ( ),
b n
a i
f x dx h f a i h
( ) ( ( 0,5) )
b n
a i
f x dx h f a i h
function I=inegral_R(func,a,b,n)
% Функция возвращает значение определенного
интеграла, вычисленного методом
% прямоугольников.
% Входные аргументы:
% func - переменная, представляет функцию в виде
строки
% a - начало промежутка интегрирования
% b - конец промежутка интегрирования
% n - число узлов (число отрезков, разделяющих
интервал [a,b])
% Выходные аргументы:
% I - значение определенного интеграла функции на
отрезке [a,b]
% Чтобы задать свою функцию, используем функцию
inline, см. ниже или help inline
f=inline(func);
% теперь переменная f является зависимостью f(x),
записанной в переменной func.
%%%
I=0;
% h - шаг интегрирования
h=(b-a)/n;
for i=0:n-1
% х - высота прямоугольника
x=a+h*(i+0.5);
% f(x)*h - площадь прямоугольника
% I - сумма площадей прямоугольников
I=I+f(x)*h;
End
Метод Симпсона (парабол)
где xi a i h
1
1/2 1
( ) 4 ,
b n
i i i
a i
f x dx h f x f x f x
function I=inegral_P(func,a,b,n)
% Функция возвращает значение определенного
интеграла, вычисленного методом
% Симпсона (парабол).
% Входные аргументы:
% func - переменная, представляет функцию в виде
строки
% a - начало промежутка интегрирования
% b - конец промежутка интегрирования
% n - число узлов (число отрезков, разделяющих
интервал [a,b])
% Выходные аргументы:
% I - значение определенного интеграла функции на
отрезке [a,b]
% Чтобы задать свою функцию, используем функцию
inline, см. ниже или help inline
f=inline(func);
% теперь переменная f является зависимостью f(x),
записанной в переменной func.
%%%
I=0;
% h - шаг интегрирования
h=(b-a)/n;
for i=0:n-1
% x1 - начало i-го отрезка
x1=a+h*i;
% x2 - конец i-го отрезка
x2=x1+h;
% x12 - середина i-го отрезка
x12=(x1+x2)/2;
% (f(x1)+4*f(x12)+f(x2))*h/6 - площадь
параболы
% I - сумма площадей парабол
I=I+(f(x1)+4*f(x12)+f(x2))*h/6;
End