Численно оцените двойной интеграл — размещенный рядом метод
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
Ограничения 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
должны принять матрицы и возвратить матрицы, одного размера с соответствующими значениями. Вводы и выводы функций должны быть или одинарные или двойная точность.
Типы данных: 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'
— Максимальное количество оценок 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 - I |.
[1] Л.Ф. Шемпин, "Программа MATLAB для Квадратуры в 2D". Прикладная математика и Вычисление. Издание 202, Выпуск 1, 2008, стр 266–274.
Указания и ограничения по применению:
Сгенерированный код выдает предупреждение, если размер массивов внутренней памяти не является достаточно большим. Если предупреждение происходит как обходное решение, можно попытаться разделить область интегрирования в части и суммировать интегралы по каждой части.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.