Ввод переделов интегрирования 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 (xh

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