📈 Ряди Тейлора — Поліноміальна Апроксимація
Візуалізація рядів Тейлора: як поліноми наближають sin(x), cos(x) та e^x. Слайдер N від 1 до 20 — кожен член розширює точність апроксимації.
Про Ряди Тейлора — Поліноміальна Апроксимація
Ця симуляція обчислює кожен коефіцієнт Маклорена безпосередньо із замкненої формули для sin, cos та ex, а не шляхом символьного диференціювання: taylorCoeff() повертає (−1)(k−1)/2/k! для непарних k у випадку sin (нуль для парних k), (−1)k/2/k! для парних k у випадку cos (нуль для непарних k) та 1/k! для кожного k у випадку ex, при цьому факторіали кешуються рекурсивно в масиві-довіднику. evalTaylor() підсумовує ці коефіцієнти, помножені на xk, від k=0 до значення слайдера Terms (N). Кожен кадр анімації обчислює 700 точок у діапазоні слайдера X window, малює точну функцію синім кольором, а усічений поліном — оранжевим, і виводить найбільший поточковий розрив між двома кривими як показник Max error.
Часті запитання
Що показує симуляція
Синя крива — це справжня функція, обчислена за допомогою Math.sin/Math.cos/Math.exp; оранжева крива — усічений поліном Тейлора TN(x) = Σ ckxk для k = 0…N, побудований з тих самих замкнених коефіцієнтів, що використовує taylorCoeff(). Там, де оранжева крива помітно відходить від синьої, поліном вийшов за межі області гарного наближення для поточних N та вікна X.
Як користуватися
Оберіть sin, cos або ex, потім перетягніть повзунок Terms (N) від 1 до 20, щоб додавати поліноміальні члени по одному, і розширте X window, щоб розбіжність з'явилася швидше. Кнопка Animate крокує animN туди-сюди між 0 і N кожні 0.7 секунди, щоб ви бачили, як внесок кожного члена наростає й спадає; Reset зупиняє анімацію та повертає animN до 0.
Чи знали ви?
Оскільки факторіал у знаменнику зростає швидше за будь-який фіксований степінь x, усі три ряди збігаються для будь-якого дійсного x — тут немає скінченного радіуса збіжності, на відміну від рядів на кшталт 1/(1−x). Саме тому ряд ex, у якого кожен коефіцієнт дорівнює точно 1/k!, є найпростішим з можливих: він не потребує жодного чергування знаків чи пропуску нульових членів.
Чому ряди sin і cos пропускають кожен другий член?
taylorCoeff() повертає 0 для парних k, коли функція — sin, і 0 для непарних k, коли функція — cos. Це відповідає справжнім розкладам Маклорена: похідні sin у нулі циклічно повторюють 0, 1, 0, −1, тож виживають лише непарні степені, а похідні cos циклічно повторюють 1, 0, −1, 0, тож виживають лише парні степені.
Чому оранжева крива обривається або стрибає при великих |x|?
Цикл малювання перевіряє isFinite(ppyj) та чи вийшло значення y за межі подвійної висоти канвасу. Коли значення полінома переповнюється при високих степенях x, код розриває відрізок лінії (скидає firstPt) замість того, щоб намалювати дикий сплеск на графіку.
Що насправді вимірює число Max error?
Щокадру evalTaylor і evalTrue порівнюються у 700 точках вибірки, розподілених по поточному вікну X, і зберігається найбільша абсолютна різниця. Це числова оцінка найгіршого розриву на видимому діапазоні, тож вона залежить і від N, і від того, наскільки широко встановлено повзунок X window.
Як кнопка Animate вирішує, яке N показувати?
displayN дорівнює animN під час анімації, а animN збільшується або зменшується на 1 кожні 0.7 секунди між 0 і значенням повзунка Terms (N), змінюючи напрямок щоразу, коли досягає будь-якої межі. Це почергове коливання туди-сюди, а не одноразовий підрахунок вгору.
Чому ряд e^x має однакову форму для будь-якого значення x, а sin і cos чергують знак?
Похідна ex дорівнює ex на будь-якому порядку, тож кожен коефіцієнт Маклорена — це просто 1/k! без жодних змін знака. sin і cos циклічно проходять чотири похідні, що повторюються (sin, cos, −sin, −cos), що й зумовлює чергування знака (−1)k, яке видно в taylorCoeff().