Численно вычислить двойной интегральный - мозаичный метод
указывает дополнительные параметры с одним или несколькими q = quad2d(fun,a,b,c,d,Name,Value)Name,Value аргументы пары. Например, можно указать 'AbsTol' и 'RelTol' для настройки пороговых значений ошибок, которым должен удовлетворять алгоритм.
Объединяться
(y)
свыше π≤x≤2π и 0≤y≤π.
fun = @(x,y) y.*sin(x)+x.*cos(y); Q = quad2d(fun,pi,2*pi,0,pi)
Q = -9.8696
Сравните результат с истинным значением интеграла, .
-pi^2
ans = -9.8696
Интеграция функции
+ y) 2] -1
над регионом и . Этот интеграл бесконечен в начале координат (0,0), которое лежит на границе области интегрирования.
fun = @(x,y) 1./(sqrt(x + y) .* (1 + x + y).^2 ); ymax = @(x) 1 - x; Q = quad2d(fun,0,1,0,ymax)
Q = 0.2854
Истинное значение интеграла - .
pi/4 - 0.5
ans = 0.2854
quad2dquad2d начинается с отображения области интегрирования в прямоугольник. Следовательно, могут возникнуть проблемы с интеграцией по области, которая не имеет четырех сторон или имеет сторону, которая не может быть плавно отображена на прямую линию. Если интеграция не удалась, некоторые полезные тактики уходят Singular установить в значение по умолчанию, равное true, изменение между декартовой и полярной координатами, или разрыв области интегрирования на части и добавление результатов интегрирования на части.
Например:
fun = @(x,y)abs(x.^2 + y.^2 - 0.25); c = @(x)-sqrt(1 - x.^2); d = @(x)sqrt(1 - x.^2); quad2d(fun,-1,1,c,d,'AbsTol',1e-8,... 'FailurePlot',true,'Singular',false);
Warning: Reached the maximum number of function evaluations (2000). The result fails the global error test.

График отказа показывает две области сложности, вблизи точек (-1,0) и (1,0) и около окружности 0,25.
Изменение значения Singular кому true справится с геометрическими сингулярностями при (-1,0) и (1,0). Большие затененные области могут нуждаться в уточнении, но, вероятно, не являются областями трудностей.
Q = quad2d(fun,-1,1,c,d,'AbsTol',1e-8, ... 'FailurePlot',true,'Singular',true);
Warning: Reached the maximum number of function evaluations (2000). The result passes the global error test.

Отсюда можно воспользоваться преимуществами симметрии:
Q = 4*quad2d(fun,0,1,0,d,'Abstol',1e-8,... 'Singular',true,'FailurePlot',true)
Q = 0.9817
Тем не менее, код все еще работает очень много около сингулярности. Возможно, он не сможет обеспечить более высокую точность:
Q = 4*quad2d(fun,0,1,0,d,'Abstol',1e-10,... 'Singular',true,'FailurePlot',true);
Warning: Reached the maximum number of function evaluations (2000). The result passes the global error test.

При более высокой точности изменение координат может работать лучше.
polarfun = @(theta,r) fun(r.*cos(theta),r.*sin(theta)).*r;
Q = 4*quad2d(polarfun,0,pi/2,0,1,'AbsTol',1e-10);Лучше всего поставить сингулярность на границе, разбив область интегрирования на две части:
Q1 = 4*quad2d(polarfun,0,pi/2,0,0.5,'AbsTol',5e-11); Q2 = 4*quad2d(polarfun,0,pi/2,0.5,1,'AbsTol',5e-11); Q = Q1 + Q2;
fun - Функция для интеграцииИнтегрируемая функция, заданная как дескриптор функции. Функция Z = fun(X,Y) должен принимать матрицы 2-D X и Y одинакового размера и возвращают матрицу Z соответствующих значений. Поэтому функция должна быть векторизирована (то есть необходимо использовать элементарные операторы, такие как .^ вместо матричных операторов, таких как ^). Входы и выходы функции должны быть либо одинарными, либо двойными.
Пример: @(x,y) x.^2 - y.^2
Типы данных: function_handle
a,b - x пределы интеграцииx пределов интегрирования, указанных как скаляры.
Типы данных: single | double
Поддержка комплексного номера: Да
c,d - y пределы интеграцииy пределов интегрирования, заданных как скаляры или дескрипторы функций. Каждый предел может быть указан как скаляр или дескриптор функции. Если пределы указаны как дескрипторы функции, то они являются функциями x предела интегрирования ymin = @x c(x) и ymax = @(x) d(x). Функция обрабатывает ymin и ymax должны принимать матрицы и возвращать матрицы одинакового размера с соответствующими значениями. Входы и выходы функций должны быть либо одинарными, либо двойными.
Типы данных: single | double | function_handle
Поддержка комплексного номера: Да
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
quad2d(@(x,y) x.*y.^2, 0, 1, 0, 2, 'AbsTol',1e-3) указывает абсолютный допуск для интеграции как 1e-3.'AbsTol' - Абсолютная погрешность1e-5 (по умолчанию) | скалярАбсолютный допуск ошибки, указанный как разделенная запятыми пара, состоящая из 'AbsTol' и скаляр.
quad2d попытки удовлетворить ERRBND <= max(AbsTol,RelTol*|Q|). Это абсолютный контроль ошибок, когда |Q| достаточно малое и относительное управление ошибками, когда |Q| больше. Значение допуска по умолчанию используется, если допуск не указан. Значение по умолчанию AbsTol 1e-5. Значение по умолчанию RelTol является 100*eps(class(Q)). Это также минимальное значение RelTol. Меньше RelTol значения автоматически увеличиваются до значения по умолчанию.
'RelTol' - Относительная погрешность100*eps(class(q)) (по умолчанию) | скалярОтносительный допуск ошибки, указанный как разделенная запятыми пара, состоящая из 'RelTol' и скаляр.
quad2d попытки удовлетворить ERRBND <= max(AbsTol,RelTol*|Q|). Это абсолютный контроль ошибок, когда |Q| достаточно малое и относительное управление ошибками, когда |Q| больше. Значение допуска по умолчанию используется, если допуск не указан. Значение по умолчанию AbsTol 1e-5. Значение по умолчанию RelTol является 100*eps(class(Q)). Это также минимальное значение RelTol. Меньше RelTol значения автоматически увеличиваются до значения по умолчанию.
'MaxFunEvals' - Максимальное число оценок fun2000 (по умолчанию) | скалярМаксимальное количество оценок fun, указанная как пара, разделенная запятыми, состоящая из 'MaxFunEvals' и скаляр. Используйте этот параметр, чтобы ограничить количество раз quad2d вычисляет функцию fun.
'FailurePlot' - Переключение для генерации графика отказаfalse или 0 (по умолчанию) | true или 1Переключение для создания графика отказа, заданного как пара, разделенная запятыми, состоящая из 'FailurePlot' и числовой или логический 1 (true) или 0 (false). Набор FailurePlot кому true или 1 для создания графического представления областей, нуждающихся в дальнейшем уточнении, когда MaxFunEvals достигнут. График не создается, если интеграция завершается успешно до достижения MaxFunEvals. График отказов содержит (как правило) 4-сторонние области, которые отображаются в прямоугольники внутри. Кластеры небольших регионов указывают на трудности в интеграции.
'Singular' - Переключение для преобразования граничных сингулярностейtrue или 1 (по умолчанию) | false или 0Переключение для преобразования граничных сингулярностей, указанных как разделенная запятыми пара, состоящая из 'Singular' и числовой или логический 1 (true) или 0 (false). По умолчанию quad2d использует преобразования для ослабления граничных сингулярностей для повышения производительности. Набор 'Singular' кому false или 0 чтобы отключить эти преобразования, которые могут обеспечить преимущества производительности при некоторых гладких проблемах.
q - Расчетный интегралВычисляемый интеграл, возвращаемый как скаляр.
E - Привязка к ошибкеОграничение ошибки, возвращенное как скаляр. Граница ошибки обеспечивает верхнюю границу ошибки между вычисленным интегралом q и точным значением интеграла I, так что E = | q - I |.
[1] Л. Ф. Шампин, «Программа MATLAB для квадратуры в 2D.» Прикладная математика и вычисления. Том 202, выпуск 1, 2008, стр. 266-274.
Примечания и ограничения по использованию:
Созданный код выдает предупреждение, если размер внутренних массивов хранения недостаточно велик. Если возникает предупреждение, как обходной путь, можно попытаться разделить область интегрирования на части и суммировать интегралы над каждой частью.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.