8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 91 92 93 94 95 96 97 ... 365

бенности подынтегральной функции. Диагностическое сообщение сопровождается номером строки файл-функции quad, выполнение которой привело к предупреждению.

Очевидно, что полученный ответ 9.8955 не соответствует заданной точности — обращение к quadi также не улучшит ситуацию. Причина заключается в методах, реализованных в MATLAB для вычисления определенных интегралов. Численное интегрирование функций с особенностями может быть основано на квадратурных формулах, узлы которых не являются границами интервала, или на квадратурных формулах с весовой функцией для выделения особенности. Такой алгоритм вы сможете запрограммировать самостоятельно после чтения главы 7, посвященной конструкциям языка программирования MATLAB. В главе 8 рассмотрено написание собственных файл-функций для вычисления определенных интегралов на основе других квадратурных формул.

После вывода предупреждения о том, что функция может иметь особенность, вычисления продолжаются. Попробуйте вычислить интеграл от

функции у = 1/л по отрезку [0,1], на котором она имеет неинтегрируемую

особенность.

При интегрировании негладких функций (типа л:, или имеющих интегрируемый разрыв) интервал интегрирования следует разбивать на части так, чтобы на подынтервалах функция была гладкой. Вычисление интегралов от быстроменяющихся функций так же возможно при разбиении исходного промежутка на участки монотонности подынтегральной функции.

Вычисление двойных интегралов

В MATLAB определена функция dblquad для приближенного вычисления двойных интегралов. Как и в случае вычисления определенных интегралов, следует написать файл-функцию дли вычисления подынтегрального выражения. Найдите значение интеграла

1 я

J ev sin у + е~х cos у j tlxily .

0-л

Функция fint2 должна содержать два входных аргумента х и у, ее текст приведен в листинге 6.6.


Листинг 6.6. Файл-функция, вычисляющая подынтегральную функцию

function f = fint2(x, у)

f = exp(x).*sin(y)."2 + exp(-x).*cos(у).л2;

£k Примечание

Вмести файл-функции можно использовать анонимные или inline-функции.

Функция dblquad имеет пять входных аргументов, при ее вызове необходимо учесть, что первыми задаются пределы внутреннего интеграла по дг, а вторыми — внешнего по у:

» dblquad(@fint2, -pi, pi, 0, 1) ans =

23.0977

Дополнительным шестым параметром можно задать точность вычисления интеграла. Поскольку в dblquad реализованы двумерные квадратурные формулы, основанные на одномерных, то при вычислении двойного интеграла dblquad использует quad. Если седьмым аргументом указать *quadi, то будет применяться соответствующий алгоритм

» format long

» dblquad(@fint2, -pi, pi, 0, 1, 1.0e-012, quadl) ans =

23.09747871451549

В случае гладких подынтегральных функций задание quadl позволяет сократить время счета.

Вычисление некоторых интегралов

В данном разделе разобрано несколько примеров: интегрирование функции, зависящей от параметров, и вычисление интеграла с переменным верхним пределом.

Интегралы, зависящие от параметра

Функции quad и quadl позволяют находить значения интегралов, зависящих от параметров. Приемы передачи параметров те же, что и для функции fzero. Опишем ту возможность, которая осталась недокументированной в последней версии пакета. Аргументами функции, вычисляющей подынте-


тральное выражение, должна быть не только переменная интегрирования, но и все параметры. Значения параметров указываются через запятую, начиная с шестого аргумента quad или quadi. Вычислите интеграл

[р\Х2 + р2 sin xiix -i

при значениях параметров рх - 22.5, р2 - -5.9 по квадратурным формулам Ньютона—Котеса с автоматическим выбором шага.

Текст функции fparam, зависящей от трех аргументов, которая вычисляет значение подынтегральной функции, приведен в листинге 6.7.

I Листинг 6.7. Параметрически заданная функция

function z = fparam(x, Pari, Par2) z = Parl.*x."2 + Par2.*sin(x);

Найдите значение интеграла при помощи quad, использование quadi производится аналогично.

» q = quad(@fparam, -1, 1, 1.0е-05, 1, 22.5, -5.9) q =

15.00000005742834

Пятый параметр, равный единице, поставлен для вывода в командное окно таблицы с информацией о ходе рекурсивного алгоритма интегрирования. Если нужно получить только значение интеграла, то пятый параметр должен быть нулем. Заметьте, что если пропустить этот параметр, то появится сообщение об ошибке, т. к. функция fparam предполагает наличие трех входных аргументов. Итак, при вычислении интеграла, зависящего от параметров, их следует указывать, начиная с шестого аргумента quad или quadi.

Также для вычисления интеграла, зависящего от параметров, может быть использована анонимная функция:

» Pari = 22.5; » Раг2 = -5.9;

» q = quad(@(x) Раг1.*х.л2 + Par2.*sin(x), -1, 1, 1.0е-05)

q =

15

В качестве упражнения примените вложенную функцию для решения этой задачи.



0 ... 91 92 93 94 95 96 97 ... 365