Численно вычислите двойной интеграл - мозаичный метод
задает дополнительные опции с одним или несколькими q = quad2d(fun,a,b,c,d,Name,Value)Name,Value аргументы в виде пар. Для примера можно задать 'AbsTol' и 'RelTol' чтобы настроить пороги ошибок, которые должен удовлетворять алгоритм.
Объединяться
и .
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
Интегрирование функции
по области и . Этот интегранд бесконечен в источник (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) и около круга .
Изменение значения 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] L.F. Shampine, «Программа MATLAB for Quadrature in 2D.» Прикладная математика и расчеты. Том 202, Выпуск 1, 2008, стр. 266-274.
Указания и ограничения по применению:
Сгенерированный код выдает предупреждение, если размер внутренних массивов хранения недостаточно велик. Если происходит предупреждение, в качестве обходного пути можно попытаться разделить область интегрирования на части и суммировать интегралы по каждой части.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.