Лише перші два розділи цього довгого питання є істотними. Інші - лише для ілюстрації.
Фон
Розширені квадратури, такі як композити вищого ступеня Ньютон-Котс, Гаус-Легендр і Ромберг, здається, в основному призначені для випадків, коли можна тонко вибирати функцію, але не інтегруватися аналітично. Однак, для функцій зі структурами, більш точними, ніж інтервал вибірки (див. Додаток А для прикладу) або шуму вимірювання, вони не можуть конкурувати з простими підходами, такими як правило середньої точки або трапеції (див. Додаток В для демонстрації).
Це дещо інтуїтивно, як, наприклад, складене правило Сімпсона, по суті, «відкидає» чверть інформації, присвоюючи їй меншу вагу. Єдиною причиною, коли такі квадратури є кращими для досить нудних функцій, є те, що правильне поводження з ефектами кордонів переважає вплив викинутої інформації. З іншого погляду мені інтуїтивно зрозуміло, що для функцій з тонкою структурою або шумом вибірки, віддалені від меж інтеграційної області, повинні бути майже рівновіддаленими і мати майже однакову вагу (для великої кількості зразків ). З іншого боку, квадратура таких функцій може виграти від кращого керування ефектами кордону (ніж для методу середини).
Питання
Припустимо, що я хочу чисельно інтегрувати галасливі або тонкоструктуровані одновимірні дані.
Кількість точок відбору проб є фіксованим (через те, що оцінка функцій є дорогою), але я можу їх вільно розміщувати. Однак я (або метод) не можу розміщувати точки вибірки інтерактивно, тобто на основі результатів інших точок відбору. Я також заздалегідь не знаю потенційних проблемних регіонів. Отже, щось на кшталт Гаус-Легендр (нееквидистантні точки відбору проб) добре; Адаптивна квадратура не є, оскільки вона вимагає інтерактивно розміщених точок відбору проб.
Чи були запропоновані якісь методи, що виходять за межі методу середини для такого випадку?
Або: Чи є якісь докази того, що метод середини найкращий за таких умов?
Більш загально: чи існує якась робота над цією проблемою?
Додаток A: Конкретний приклад тонкоструктурованої функції
Я хочу оцінити за: з і . Типова функція виглядає так:
Я вибрав цю функцію для таких властивостей:
- Він може бути інтегрований аналітично для контрольного результату.
- Він має тонку структуру на рівні, що унеможливлює захоплення всього цього за кількістю зразків, які я використовую ( ).
- У ній не переважає його тонка структура.
Додаток В: Орієнтир
Для повноти, ось еталон у 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 .