∫ Інтеграл Рімана
Суми Рімана сходяться до точного інтеграла: порівняйте ліві, праві, серединні прямокутники й трапеції для sin(x), x², exp(x), |x|, √x.
Схожі симуляції
Про цю симуляцію
Цей симулятор візуалізує суми Рімана, які сходяться до точного визначеного інтеграла п'яти функцій — sin x, x², eˣ, |x| та √x — на регульованому інтервалі [a, b]. Кожен з N піддіапазонів має фіксовану ширину Δx = (b−a)/N, а висота його прямокутника визначається одним із чотирьох класичних правил — Left (лівий кінець f(x₀)), Right (правий кінець f(x₁)), Midpoint (середина f((x₀+x₁)/2)) або Trapezoid (½(f(x₀)+f(x₁))) — після чого підсумовується і множиться на Δx. Полотно малює ці N фігур під справжньою кривою, а нижня смуга перебудовує графік абсолютної похибки |sum−exact| для кожного n від 1 до min(N+1, 50), щоб можна було порівняти збіжність першого й другого порядку одночасно.
🔬 Що це показує
Основне полотно накладає N прямокутників Left/Right/Midpoint або трапецій Trapezoid на справжню криву функції (намальовану білим) між пунктирними межами a і b; смуга під ним показує, як похибка апроксимації зменшується зі зростанням N, дозволяючи порівняти швидкість збіжності кожного правила.
🎮 Як користуватися
Оберіть функцію (sin x, x², eˣ, |x| або √x), виберіть правило підсумовування, а потім перетягуйте повзунок Subintervals (1–200) і повзунки a/b, щоб змінити форму інтервалу. Панель статистики під полотном оновлює суму Рімана, точний інтеграл, похибку та Δx у реальному часі при будь-якій зміні.
💡 Чи знали ви?
Симулятор перераховує всю криву похибки залежно від N щокадру, повторно запускаючи riemannSum() для n від 1 до min(N+1, 50). Усереднення Midpoint і Trapezoid у співвідношенні два до одного — (2×Midpoint + Trapezoid)/3 — відтворює правило Сімпсона, похибка якого зменшується як O(Δx⁴), набагато швидше, ніж будь-яке правило окремо.
Часті запитання
Чому правило Trapezoid малює похилі верхівки замість пласких прямокутників?
У функції draw() гілка method === "trap" — єдина, що заповнює чотирикутник, який з'єднує (x₀,0) → (x₀,f(x₀)) → (x₁,f(x₁)) → (x₁,0), замість однієї виміряної висоти, як у Left, Right і Midpoint. Ця похила верхівка — це точно середнє значення ½(f(x₀)+f(x₁)), яке використовує riemannSum() для методу трапецій.
Чому побудована похибка настільки більша для eˣ, ніж для sin x при однаковому N?
Теоретична межа |error| ≤ M·(b−a)³/(12N²) залежить від M = max|f″| на [a,b]. Оскільки |f″| для sin x скрізь обмежена одиницею, тоді як друга похідна eˣ — це сама eˣ, яка необмежено зростає зі збільшенням b, те саме N дає помітно більшу криву похибки для eˣ на нижній панелі.
Чому √x поводиться дивно, коли нижня межа a від'ємна?
FUNS.sqrt.f повертає 0 для будь-якого x < 0 (x ≥ 0 ? Math.sqrt(x) : 0), а його exact() обмежує обидві межі значенням max(0,·) перед інтегруванням. Тому перетягування a нижче нуля не екстраполює від'ємний квадратний корінь — симулятор просто трактує підінтегральну функцію як нуль на цій частині інтервалу, що відповідає реальному обмеженню області визначення √x.
Що саме показує нижня панель похибки і чому вона зупиняється на 50?
Для кожного n від 1 до min(N+1, 50) скрипт викликає riemannSum(fn, a, b, n, method), обчислює абсолютну різницю з точним інтегралом і будує відповідну криву. Обмеження в 50 точок утримує обчислення на кадр дешевим, навіть коли повзунок Subintervals N підняти до максимуму в 200.
Чому похибки Midpoint і Trapezoid зменшуються швидше, ніж у Left і Right, зі зростанням N?
Left і Right вибирають лише один кінець кожного піддіапазону, тому їхня локальна похибка на панель має порядок O(Δx), а сумарна похибка масштабується як O(Δx); Midpoint і Trapezoid фактично усереднюють кривизну f на панелі, даючи локальну похибку O(Δx²) і сумарну похибку — те саме сходження другого порядку, яке гарантує межа |error| ≤ M(b−a)³/(12N²), показана на інформаційній панелі.