Числова інтеграція компактно підтримуваної функції на трикутнику


10

як випливає з назви, я намагаюся обчислити інтеграл компактно підтримуваної функції (квінтичний многочлен Венленда) на трикутнику. Зауважте, що центр функції знаходиться десь у тривимірному просторі. Я інтегрую цю функцію в довільний, але малий трикутник ( area<(radius/4)22 ). На даний момент я використовую інтеграцію, описану Dunavant, 1985 (p = 19).

Однак видається, що ці квадратурні правила не підходять для компактно підтримуваних проблем. Це підтверджується тим, що коли я інтегрую f(r)=[r1] (так що функція, що дорівнює 1 всередині кола радіуса 1) на площині, яка дискретизується за допомогою трикутників, мої (нормалізовані) результати знаходяться між 1.001 та 0.897.

Отже, моє запитання полягає в тому, чи існує спеціалізоване правило квадратури для такої проблеми? Чи буде краще працювати композиційне правило інтеграції нижчого порядку?

На жаль, ця процедура є дуже важливою для мого коду, тому точність є вирішальною. З іншого боку, мені потрібно зробити цю інтеграцію "кілька разів" за один часовий крок, тому обчислювальні витрати не повинні бути занадто великими. Паралелізація - це не проблема, тому що я сама виконуватиму інтеграцію послідовно.

Заздалегідь дякую за відповіді.

EDIT: Квінтичний многочлен Вендленда задається W(q)=[q2]αh3(1q2)4(2q+1)зα=2116πq=rr0hr0R3

EDIT2: Якщо - двовимірний трикутник, то я хочу обчислити з . Тож в ніколи не буде меншим за 0. Зверніть увагу, що інтеграл - це поверхневий інтеграл над 2-D поверхнею вΔΔω(r)drω(r)=W(rr0h)qWR3

EDIT3: У мене є аналітичне рішення для 1-D (рядкової) проблеми. Вирахування одного для 2-D (трикутника) також може бути можливим.


Чи можете ви надати нам ще кілька деталей функції, яку ви намагаєтесь інтегрувати? Це просто многочлен? Або кусково-многочлен?
Педро

Відредаговано відповідно до запиту.
Azrael3000

Відповіді:


4

Оскільки функція є гладкою в межах , але не з фіксованим ступенем (тобто в площині, тобто), я б запропонував використовувати просту адаптивну схему, наприклад, трапеційне правило за методом Ромберга , в обох вимірах.q2

Тобто, якщо ваш трикутник визначений вершинами , y і z R 3 , і у вас є рутина, яка інтегрується уздовж лінії від до , ви можете зробити наступне (у позначенні Matlab):xyzR3romb(f,a,b)fab

int = romb( @(xi) romb( W , xi , y+(z-y)*(xi-x)./(z-x) ) , x , z );

У цьому rombвипадку не використовуйте фіксовану кількість очок, але продовжуйте рости таблицю, поки різниця між двома послідовними діагоналями не буде нижче необхідного допуску. Оскільки ваша функція є рівною, це має бути хорошою оцінкою помилок.

Якщо частини трикутника знаходяться за межами домену , можна спробувати відповідно скорегувати межі інтеграції у наведеному вище коді.W(q)

Це може бути не найбільш обчислювально ефективним способом вирішення вашої проблеми, але адаптивність дасть вам набагато більше стійкості, ніж буде встановлено правило фіксованого ступеня.


Функція smmoth скрізь, за винятком . Сусідство цієї точки викликає неприємності. q=0
Арнольд Ноймаєр

Ах, розкладаючись на дві 1-D проблеми, зовсім не погана ідея. Тому що є одне, чого я вам не сказав. У мене є аналітичне рішення в режимі 1-D, тому я можу замінити внутрішній обрив на аналітичну функцію. Я вже дам цей знімок +1
Azrael3000

@ArnoldNeumaier, вибачте, я не бачу, як це можливо. Чи можете ви пояснити?
Педро

гладкий як функція , але q - негладна функція r , а інтеграція закінчена r , наскільки я зрозумів питання. Таким чином, складова функція - це негладка функція r . qqrrr
Арнольд Ноймаєр

1
@Pedro я реалізував це, і він працює як шарм. Ми фактично також знайшли аналітичне рішення сьогодні. Але це лише для окремого випадку, який може бути використаний для реконструкції загального. Це означає, що нам потрібно зробити декомпозицію домену. Оскільки Ромберг сходиться приблизно в 4 кроки, я думаю, що через це це буде швидше, ніж використання аналітичної формули. Згідно з Вікіпедією, ми можемо зробити все ж краще, ніж Ромберг, коли використовуємо раціональні многочлени. Ви знайдете своє ім’я в подяках мого наступного документу :) Привіт.
Azrael3000

2

Для хорошого огляду правил кубатури див. "Р. Кулс, Енциклопедія кубатурних формул J. Complexity, 19: 445-453, 2003". Використання фіксованого правила може дати вам перевагу в тому, що деякі правила точно інтегрують поліноми (як квадратура Гаусса в одновимірному).

Cools також є одним з головних авторів CUBPACK , програмного пакету для чисельної кубатури.


Я думаю, що проблема тут полягає в тому, що функція є поліномом , але q - нелінійна функція в просторових координатах. Функція плавна до краю основної функції, але не поліномальна, за винятком осей. qq
Педро

Це правильно Педро.
Azrael3000

а, добре. моя помилка. вибачте.
GertVdE

2

Правила інтеграції передбачають, що функція локально добре апроксимована поліномом низького ступеня. Ваша проблема не має нічого спільного з компактною підтримкою. Компактно підтримувані радіальні основи функції плавні на межі опори, і правила квадратури до порядку гладкості можуть використовуватися без проблем. (Правила вищого порядку не допомагають; тому, ймовірно, ви не повинні використовувати правило, яке точно інтегрує поліноми ступеня 5.)

У вашому випадку неточність випливає з того, що у вашому випадку припущення про добру поліноміальну приблизність не вдається для трикутників поблизу , навіть коли вони не містять r 0 .r0r0

гладкий як функція q , але q - негладна функція r , з градієнтом, який стає нескінченним у межі r r 0 . Інтеграція закінчена r , а складова функція - негладка функція r .Wqqrrr0rr

Якщо трикутник не містить , то функція C i n f, але це не допомагає, оскільки вища похідна дуже швидко зростає близько до r 0 , а похибка методу високого порядку пропорційна похідній високого порядку, отже, дуже великий!r0Cinfr0

Простий засіб полягає в тому, щоб розділити кожен трикутник T на кількість N_T підкутників. Ви можете взяти далеко від r 0 , а N T1 близько r 0 . Ви можете визначити в режимі офлайн, яким повинен бути великий N T для трикутників заданого діаметра та відстані від r 0, щоб досягти бажаної точності. Крім того, слід використовувати лише формули низького порядку, близькі до r 0 .NT=1r0NT1r0NTr0r0

Коли ви інтегруєтесь через трикутник, але є тривимірним, трикутник, мабуть, знаходиться в R 3 .r0R3

Тому більш швидкий засіб би підсумовував інтеграл для як функцію трикутникових координат (нормалізується, обертаючи його у двовимірній площині x y, таким чином, що одна вершина лежить на осі x і відображає його таким чином, що друга вершина лежить над нею). Ця таблиця повинна бути достатньо детальною, щоб зробити лінійну чи квадратичну інтерполяцію достатньо точною. Але ви можете скористатися повільним методом, окресленим спочатку для створення цієї таблиці.r0=0xyх

Інший спосіб позбутися проблеми - це використання компактно підтримуваної функції радіальної основи, яка є поліномом у а не у q . Це скрізь гладко і легко інтегрувати.q2q


Думаю, є невелике непорозуміння. Я оновив опис свого питання. Власне, в інтегралі ніколи не може бути менше 0. І r 0 не обов'язково міститься в трикутнику. qr0
Azrael3000

r0R3rR3r0

R3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.