Численно оцените двойной интеграл — размещенный рядом метод
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)
fun(x,y)
по плоской области и . Границы c
и d
могут каждый быть скалярами или указателями на функцию.
задает дополнительные опции с одним или несколькими аргументами пары q = quad2d(fun,a,b,c,d,Name,Value)
Name,Value
. Например, можно задать 'AbsTol'
и 'RelTol'
, чтобы настроить пороги ошибок, которые должен удовлетворить алгоритм.
также возвращает аппроксимированную верхнюю границу на абсолютной погрешности, E = | q - я |, где я - точное значение интеграла.[q,E] = quad2d(___)
Интегрироваться
и.
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
Ограничения quad2d
quad2d
начинается путем отображения области интегрирования с прямоугольником. Следовательно, это может испытать затруднения при интеграции по поводу области, которая не имеет четырех сторон или имеет сторону, которая не может быть сопоставлена гладко с прямой линией. Если интегрирование неудачно, некоторая полезная тактика оставляет набор 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
должны принять матрицы и возвратить матрицы, одного размера с соответствующими значениями. Вводы и выводы функций должны быть или одинарной или двойной точностью.
Типы данных: единственный
| удваиваются
| function_handle
Поддержка комплексного числа: Да
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Имя
должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
((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'
— Максимальное количество оценок fun
2000
(значение по умолчанию) | скалярМаксимальное количество оценок 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 - я |.
[1] L.F. Шемпин, "Программа MATLAB для Квадратуры в 2D". Прикладная математика и Вычисление. Издание 202, Выпуск 1, 2008, стр 266–274.
Указания и ограничения по применению:
Сгенерированный код выдает предупреждение, если размер массивов внутренней памяти не является достаточно большим. Если предупреждение происходит как обходное решение, можно попытаться разделить область интегрирования в части и суммировать интегралы по каждой части.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.