Чи є кращі квадратури для шумних або тонкоструктурованих даних, ніж правило середньої точки?


12

Лише перші два розділи цього довгого питання є істотними. Інші - лише для ілюстрації.

Фон

Розширені квадратури, такі як композити вищого ступеня Ньютон-Котс, Гаус-Легендр і Ромберг, здається, в основному призначені для випадків, коли можна тонко вибирати функцію, але не інтегруватися аналітично. Однак, для функцій зі структурами, більш точними, ніж інтервал вибірки (див. Додаток А для прикладу) або шуму вимірювання, вони не можуть конкурувати з простими підходами, такими як правило середньої точки або трапеції (див. Додаток В для демонстрації).

Це дещо інтуїтивно, як, наприклад, складене правило Сімпсона, по суті, «відкидає» чверть інформації, присвоюючи їй меншу вагу. Єдиною причиною, коли такі квадратури є кращими для досить нудних функцій, є те, що правильне поводження з ефектами кордонів переважає вплив викинутої інформації. З іншого погляду мені інтуїтивно зрозуміло, що для функцій з тонкою структурою або шумом вибірки, віддалені від меж інтеграційної області, повинні бути майже рівновіддаленими і мати майже однакову вагу (для великої кількості зразків ). З іншого боку, квадратура таких функцій може виграти від кращого керування ефектами кордону (ніж для методу середини).

Питання

Припустимо, що я хочу чисельно інтегрувати галасливі або тонкоструктуровані одновимірні дані.

Кількість точок відбору проб є фіксованим (через те, що оцінка функцій є дорогою), але я можу їх вільно розміщувати. Однак я (або метод) не можу розміщувати точки вибірки інтерактивно, тобто на основі результатів інших точок відбору. Я також заздалегідь не знаю потенційних проблемних регіонів. Отже, щось на кшталт Гаус-Легендр (нееквидистантні точки відбору проб) добре; Адаптивна квадратура не є, оскільки вона вимагає інтерактивно розміщених точок відбору проб.

  • Чи були запропоновані якісь методи, що виходять за межі методу середини для такого випадку?

  • Або: Чи є якісь докази того, що метод середини найкращий за таких умов?

  • Більш загально: чи існує якась робота над цією проблемою?

Додаток A: Конкретний приклад тонкоструктурованої функції

Я хочу оцінити за: з і . Типова функція виглядає так:01f(t)dt

f(t)=i=1ksin(ωitφi)ωi,
φi[0,2π]logωi[1,1000]

накладені синуси

Я вибрав цю функцію для таких властивостей:

  • Він може бути інтегрований аналітично для контрольного результату.
  • Він має тонку структуру на рівні, що унеможливлює захоплення всього цього за кількістю зразків, які я використовую ( ).<102
  • У ній не переважає його тонка структура.

Додаток В: Орієнтир

Для повноти, ось еталон у Python:

import numpy as np
from numpy.random import uniform
from scipy.integrate import simps, trapz, romb, fixed_quad

begin = 0
end   = 1

def generate_f(k,low_freq,high_freq):
    ω = 2**uniform(np.log2(low_freq),np.log2(high_freq),k)
    φ = uniform(0,2*np.pi,k)
    g = lambda t,ω,φ: np.sin(ω*t-φ)/ω
    G = lambda t,ω,φ: np.cos(ω*t-φ)/ω**2
    f = lambda t: sum( g(t,ω[i],φ[i]) for i in range(k) )
    control = sum( G(begin,ω[i],φ[i])-G(end,ω[i],φ[i]) for i in range(k) )
    return control,f

def midpoint(f,n):
    midpoints = np.linspace(begin,end,2*n+1)[1::2]
    assert len(midpoints)==n
    return np.mean(f(midpoints))*(n-1)

def evaluate(n,control,f):
    """
    returns the relative errors when integrating f with n evaluations
    for several numerical integration methods.
    """
    times = np.linspace(begin,end,n)
    values = f(times)
    results = [
            midpoint(f,n),
            trapz(values),
            simps(values),
            romb (values),
            fixed_quad(f,begin,end,n=n)[0]*(n-1),
        ]

    return [
            abs((result/(n-1)-control)/control)
            for result in results
        ]

method_names = ["midpoint","trapezoid","Simpson","Romberg","Gauß–Legendre"]

def med(data):
    medians = np.median(np.vstack(data),axis=0)
    for median,name in zip(medians,method_names):
        print(f"{median:.3e}   {name}")

print("superimposed sines")
med(evaluate(33,*generate_f(10,1,1000)) for _ in range(100000))

print("superimposed low-frequency sines (control)")
med(evaluate(33,*generate_f(10,0.5,1.5)) for _ in range(100000))

(Я тут використовую медіану для зменшення впливу людей, що втратили спокій, завдяки функціям, які мають лише високочастотний вміст. Середні результати - аналогічні.)

Медіанами відносних інтеграційних помилок є:

superimposed sines
6.301e-04   midpoint
8.984e-04   trapezoid
1.158e-03   Simpson
1.537e-03   Romberg
1.862e-03   Gauß–Legendre

superimposed low-frequency sines (control)
2.790e-05   midpoint
5.933e-05   trapezoid
5.107e-09   Simpson
3.573e-16   Romberg
3.659e-16   Gauß–Legendre

Примітка. Через два місяці та одну суму без результату я опублікував це на MathOverflow .


Це така проблема, яка вас справді цікавить? У 1D ви можете, мабуть, отримати хороші результати досить швидко за допомогою будь-якого методу.
Девід Кетчесон

"У мене є фіксована кількість точок відбору проб і можу їх вільно розміщувати. Однак я не можу розміщувати точки відбору проб інтерактивно, тобто на основі результатів інших точок відбору". Це обмеження мені не зрозуміло. Чи дозволено мені розміщувати вузли, куди б їх розмістив адаптивний алгоритм, якщо я просто дуже розумний (замість того, щоб реально використовувати адаптивний алгоритм)? Якщо мені не дозволяють бути «по-справжньому розумним» щодо цього, то які саме місця розміщення вузлів фактично дозволені?
Девід Кетчесон

@DavidKetcheson: Є чи це свого роду проблеми , яку ви дійсно зацікавлені в? - Так, мене дуже цікавить 1D. - У 1D ви, швидше за все, можете отримати хороші результати досить швидко за допомогою будь-якого методу. - Пам'ятайте, що оцінка функцій може бути дорогою. - то які місця розміщення вузлів насправді дозволені? - Я редагував своє запитання, сподіваючись зробити це більш зрозумілим.
Wrzlprmft

Дякуємо, що допомагає. Мені питання все ще видається невиразним. Я думаю, що є просте і точне питання, яке було б більш відповідальним. Було б потрібно визначити набір функцій (які можуть залежати від дозволеної кількості квадратурних вузлів) та метрику. Тоді ви можете запитати, чи є метод середньої точки оптимальним у метриці над цим набором функцій (де, мабуть, для квадратури всіх функцій повинен використовуватися той самий набір вузлів).
Девід Кетчесон

1
@DavidKetcheson: Це потребує визначення набору функцій (які можуть залежати від дозволеної кількості квадратурних вузлів) та метрики. - З огляду на те, що мені не вдалося знайти нічого корисного з цього приводу, я не бачу причин накладати такі обмеження. Швидше, маючи такі обмеження, я б ризикнув виключити якусь існуючу роботу (або простий доказ) для дещо інших умов або припущень. Якщо є якісь способи зафіксувати зображений сценарій у визначеннях і подібних, для яких існує довідкова робота або простий доказ, я радий тому.
Wrzlprmft

Відповіді:


1

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

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

То яка ідея адаптивної квадратури, реалізованої, наприклад, у QUADPACK ?

  1. Основним інгредієнтом є "вкладене" правило квадратури: це поєднання двох правил квадратури, коли одне має більш високий порядок (або точність), як інше. Чому? Виходячи з різниці між цими правилами, алгоритм може оцінити квадратурну помилку (звичайно, алгоритм використовуватиме як найточніший як опорний результат). Прикладами можуть бути правило трапеції з вузлами та вузлами. У випадку QUADPACK правила - це правила Гаусса-Кронрода. Це інтерполяційні правила квадратури, які використовують правило квадратури Гаусса-Леандра певного порядку2n2n+1Nі оптимальне розширення цього правила. Це означає, що вищий порядок квадратури може бути отриманий за допомогою повторного використання вузлів Гаусса-Леандра (тобто дорогих оцінок функції) з різною вагою та додавання ряду зайвих вузлів. Іншими словами, оригінальне правило Гаусса-Лежандра порядку порядку точно інтегрує всі поліноми ступеня , тоді як розширене правило Гаусса-Кронрода точно інтегрує деякий поліном вищого порядку. Класичним правилом є G7K15 (Гаус-Легенд 7-го порядку з Гауссом-Кророндом 15-го порядку). Магія полягає в тому, що 7 вузлів Гаус-Легенда є підмножиною з 15 вузлів Гаус-Кроронда, тому з 15-ма функційними оцінками я маю оцінку квадратури разом із оцінкою помилок!N2N1

  2. Наступним інгредієнтом є стратегія "розділити та перемогти". Припустимо, ви відпустите цей G7K15 на вашому інтегралі та спостерігаєте квадратурну помилку, яка на ваш смак занадто велика. Потім QUADPACK розділить початковий інтервал на два однаково розташовані підінтервали. А потім буде переоцінено два підінтеграли, використовуючи основне правило, G7K15. Тепер алгоритм має глобальну оцінку помилок (яка, сподіваюся, повинна бути нижчою за першу), а також дві локальні оцінки помилок. Він вибирає інтервал з найбільшою помилкою і ділить цю на два. Оцінюються два нові інтеграли та оновлюється глобальна помилка. І так доти, доки глобальна помилка не буде нижче бажаної цілі або не буде перевищена максимальна кількість підрозділів.

Тому я закликаю вас оновити свій код вище за допомогою scipy.quadметоду. Можливо, у випадку інтеграду з великою кількістю «тонкої структури», можливо, вам знадобиться збільшити максимальну кількість підрозділів ( limitопція). Ви також можете грати з параметрами epsabsта / або epsrel.

Однак якщо у вас є лише експериментальні дані, я бачу дві можливості.

  1. Якщо у вас є можливість вибору точок вимірювання, тобто значень , я б вибирав їх рівномірно і бажано як потужність щоб ви могли застосувати вкладене трапецієподібне правило (і отримати прибуток від екстраполяції Ромберга).t2
  2. Якщо у вас немає засобів вибору вузлів, тобто вимірювання відбуваються у випадковий час, найкращим варіантом, на мою думку, все ж є правило трапеції.

Я думаю, ви неправильно розумієте поняття адаптивної квадратури. - Ваше повідомлення повністю узгоджується з моїм попереднім розумінням адаптивної квадратури, і це явна відповідність тому, як я визначив інтерактивне розміщення точок вибірки (чи це відповідна фраза чи ні). - ви пишете […]. Я думаю, що ідея повинна полягати в тому, щоб кількість точок відбору проб […] була якомога меншою (тобто не була фіксованою). - Якщо у вас така розкіш, звичайно, але експериментальні обмеження можуть бути не такими доброякісними. Наприклад, припустимо, що вам потрібно щось вимірювати одночасно з фіксованою кількістю дорогих датчиків.
Wrzlprmft

Мої вибачення. Я неправильно трактував "інтерактивно" у вашому запитанні. На мій погляд, "інтерактивно" означає втручання користувача, а не за алгоритмом. Я додав абзац у свою відповідь на експериментальні дані. Іншим підходом було б "відфільтрувати" інформацію тонкої структури, тобто застосувати перетворення Фур'є та видалити частоти високого порядку з малими амплітудами. Це був би варіант?
GertVdE

Якщо у вас є можливість вибрати точки вимірювання […] - рівновіддалені точки - це те, що мені потрібно для середньої точки, простої трапеції тощо. Тут екстраполяція Ромберга не дає жодної переваги.
Wrzlprmft

Іншим підходом було б «відфільтрувати» інформацію про тонку структуру […] Це було б варіантом? - У моєму прикладі я вважаю, що тонка структура є частиною того, що я хочу виміряти, у мене просто не буває достатньо багато зразків, щоб повністю її захопити. Що стосується фактичного шуму, то немає жодних технічних обмежень, які не дозволяють мені фільтрувати. Однак інтеграл у цілому домені вже є найвищим фільтром низьких частот, тому я скептично налаштований на те, що це можна покращити, не маючи шуму з певними, доброякісними та відомими властивостями.
Wrzlprmft

Це справді стохастично? Повинні бути деякі похідні, що є стохастичними інтегральними наближеннями вищого порядку.
Кріс Ракаукас

0

Я не переконаний, що ваш код демонструє щось принципове щодо різних правил квадратури та того, наскільки вони добре спрацьовують проти шуму та тонкої структури, і вважаю, що, якщо ви виберете різні різні структури тонких тонкощів, ви знайдете щось інше. Ось теорема:

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

|abfdxQ^[f^]||abfdxQ[f]|+μ[4ab|f|dx+ab|xf|dx]
Q^f^f

Доведення: Нехай квадратурні вузли будуть а ваги квадратури (негативні) будуть і позначаємо їх наближення з плаваючою точкою і . Припустимо, що задовольняє де де - окружність одиниці. Тоді {xi}i=0n1{wi}i=0n1w^ix^if^f^(x)=f(x)(1+2δ)|δ|μμ

Q^[f^]=i=0n1w^if^(x^i)=i=0n1wi(1+δiw)f(xi+δixxi)(1+2δif)(1+δi)i=0n1wi[f(xi)+δixxif(xi)](1+δiw+2δif+δi)i=0n1wif(xi)+i=0n1δixwixif(xi)+wif(xi)(δiw+2δif+δi)
щоб цьому передбачається, що сума обчислюється без помилок; помножимо на щоб скинути це припущення.
|Q^[f^]Q[f]|μi=0n1wi(|xif(xi)|+4|f(xi)|)4μ|f|dx+μ|xf|dx
n

Mutatis mutandis ви також можете показати, що результат тримається в арифметиці з фіксованою точкою.


Дякую за відповідь. У мене виникають певні проблеми з розумінням сценарію, який ви розглядаєте, і як це стосується мого питання. Що ви маєте на увазі під необмеженою сумарною варіацією плаваючої точки? Якщо я не дуже помиляюся, на всі мої обчислювальні результати (за винятком контрольного випадку з Ромбергом та Гаусом-Легендром) далеко не впливають неточності арифметичної реалізації (плаваюча точка чи фіксована точка). Я вважаю, що шум не має чисельного характеру, а експериментальний.
Wrzlprmft

@Wrzlprmft: Плаваюча точка - це результат, який я зміг довести. Я також можу довести це у фіксованій точці, яка потім вказує на те, що результат справедливий для експериментальних даних. Я вважаю, що це стосується будь-якого джерела помилок у квадратурних вузлах. Я відредагував, щоб уточнити.
користувач14717

Для експериментальних даних результат набагато переконливіший, оскільки в цілому експериментальні дані не диференційовані, а значить, загальна варіація нескінченна.
користувач14717

Мені шкода, але я все одно не вслід за тобою. Здається, ваш результат стосується помилки, допущеної при чисельній реалізації квадратури, а не про помилку самої квадратури. Проблема, яку я маю, стосується останнього, і, зокрема, я не бачу причин вважати, що це не виявиться для . μ=0
Wrzlprmft

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