Численно оцените двойной интеграл — размещенный рядом метод
q = quad2d(fun,a,b,c,d)q = quad2d(fun,a,b,c,d,Name,Value)[q,E] = quad2d(___) задает дополнительные опции с одним или несколькими аргументами пары 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) должен принять 2D матрицы X и Y, одного размера, и возвратить матричный Z соответствующих значений. Поэтому функция должна быть векторизована (то есть, необходимо использовать поэлементные операторы, такие как .^ вместо матричных операторов, таких как ^). Вводы и выводы функции должны быть или одинарные или двойная точность.
Пример: @(x,y) x.^2 - y.^2
Типы данных: function_handle
a, B пределы x интегрированияПределы x интегрирования, заданного как скаляры.
Типы данных: single | double
Поддержка комплексного числа: Да
cD пределы y интегрированияПределы y интегрирования, заданного как скаляры или указатели на функцию. Каждый предел может быть задан как скаляр или указатель на функцию. Если пределы заданы как указатели на функцию, то они - функции предела x интегрирования ymin = @x c(x) и ymax = @(x) d(x). Указатели на функцию ymin и ymax должны принять матрицы и возвратить матрицы, одного размера с соответствующими значениями. Вводы и выводы функций должны быть или одинарные или двойная точность.
Типы данных: single | double | function_handle
Поддержка комплексного числа: Да
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.