Annual Open Tech Conference - ISsoft Insights 2021. June 19. Learn more.
×Закрыть

Поліноми від -∞ до +∞. Малюємо нескінченну функцію на скінченному просторі екрана за допомогою арктангенсальної шкали

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

Ця стаття написана за мотивами мітапу, що відбувся 23 лютого в онлайн-форматі. Раніше такі мітапи проходили на локації від Матеріалайзу, прямо на кухні. Із живим спілкуванням, інтерактивними «роздатками», і частуванням. На жаль, пандемія розігнала нас всіх по домівках, і замість справжньої зустрічі, доводиться обмежуватися спілкуванням через Zoom.

Через брак живого спілкування, мітап перетворюється на монолог, і це вже не так весело. Але у всьому можна вбачити позитив. Так і монолог принаймні можна записати, причесати, скоротити і опублікувати.

Так я і зробив. І от що в мене вийшло.

Поліноми від -∞ до +∞

Ніколи не подумав би що слово «поліном» може бути клік-бейтом. Але ось, маємо.

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

Якось непереконливо.

Тому про арктангенсальну шкалу я хоч і розкажу коротенько, але потім, використовуючи цю шкалу, ми розглянемо глобальні властивості поліномів. І само собою стане зрозуміло, навіщо цю шкалу придумали, і як її використовувати.

Отже, арктангенсальна шкала

Дивіться, оце тангенс:

Всім знайома функція: ділимо синус на косинус — маємо тангенс. Функція періодична, повторює сама себе з періодом в Π. Для нас особливо цікаво, що, наприклад, з -Π/2 до +Π/2 вона неперервно і гладко зростає від -∞ до +∞. Проходить через нуль, і в нулі, що теж цікаво, має одиничну похідну тобто непогано наближується рівнянням y = x.

Тобто вона працює як неперервний гладкий трансформер із кінцевого але відкритого проміжку (-Π/2; +Π/2) на безкінечний інтервал (-∞; +∞).

А от арктангенс:

Це функція, яка майже обернена до тангенсу. Чому «майже», тому що по-чесному, арктангенс не може мати оберненої функції. Його обернене відображення неоднозначне, кожна точка з числової осі відображається на нескінченну кількість періодичних часток тангенса.

Але якщо спростити тангенс до однієї частки, тієї що визначена на (-Π/2; +Π/2), то арктангенс цілком буде до неї оберненою функцією. А це саме та частка яка нам потрібна.

Тобто це неперервний гладкий трансформер, обернений до тангенса, який відображає будь яке число з (-∞; +∞) на проміжок (-Π/2; +Π/2).

Тепер дивіться. Нехай в нас є графік. Звичайний графік в звичайній лінійній шкалі. Ми бачимо дві функції на клаптику (-4; +4)×(-4; +4).

Червона функція — це поліном: x3-√2x .

Зелена функція — трохи вивернута експонента: 4-e-x-1.

З цього графіка схоже що зелена функція упирається в горизонтальну асимптоту y=4, а ще — що червона зростає паралельно із зеленою у квадранті (-∞,0)×(-∞,0).

«Схоже» не значить «правда».

Давайте подивимось на ці самі функції у арктангенсальній шкалі. Для цього нам треба відобразити їх графіки з (-∞,∞)×(-∞,∞) на [0..640)×[0..640). 640×640 — це розмір клаптика екрану куди ми відображатимемо графіки у пікселях.

Отже, спершу беремо всі 640 пікселів по осі х. Лінійним перетворенням відображаємо їх на (-Π/2; +Π/2), потім тангенсом на (-∞,∞). Тепер 640 пікселів розкидані нерівномірно, але по всій числовій осі.

Для кожного з них знаходимо значення функцій. Кожне значення відображаємо арктангенсом з (-∞,∞) на (-Π/2; +Π/2), а потім лінійним перетворенням із округленням на [0..640). Маємо множину точок у дискретному просторі [0..640)×[0..640). З’єднуємо точки, будуємо графіки.

І тут стає видно, що, по-перше, зелена функція і правда впирається в y = 4 і до самої нескінченності цю межу не переходить, а по-друге, зелена і червона функції ідуть не паралельно, а таки перетинаються у лівому нижньому квадранті. Щоправда, місце перетину видно трохи нечітко.

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

Тепер ми чітко бачимо, що перетин є, але окрім цього ми вже не бачимо геть нічого.

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

Арктангенсальна шкала крута тим що дозволяє показати на графіку нескінченність. Показати, як глобально влаштована функція: де починається, де закінчується. Показати перетини графіків, корені, екстремуми. Показати, але не обов’язково побачити. Бо за теоретично нескінченною похибкою може ховатися практично все що завгодно.

А тепер поліноми

Це кубічна парабола виду: x3 + x2 — 4x + 2

Насправді, ні. Це лише фрагмент цієї параболи. Ми бачимо що в неї є один екстремум і два перетину з віссю «ікс». Якщо ви знаєтесь на поліномах, то вже бачите підступ. Кубічна парабола може мати два кореня, але тоді і тільки тоді коли один з екстремумів сам лежить на осі «ікс». Отже, щось тут нечисто.

Якщо ми зсунемо цей графік трохи вліво і вгору, ще і відмасштабуємо, то побачимо в чому справа.

Звісно, ця функція має два екстремуми і перетинає вісь «ікс» тричі.

У арктангенсальній шкалі, не треба нічого зсувати і масштабувати, щоб це побачити.

Це кубічна парабола від -∞ до +∞. Починається у мінус нескінченності, глобально зростає із перервою між локальним максимумом і мінімумом, перетинає вісь «ікс» три рази.

До речі, про перетини з віссю «ікс»

Якщо взяти поліном і пришити до нього " = 0«, отримаємо поліноміальне рівняння. Там де графік полінома перетинає або торкається вісі «ікс», там поліноміальне рівняння має розв’язок. Корінь.

Кубічне рівняння, наприклад, може мати 1 корінь.

Так буває коли всі екстремуми знаходяться по один бік від осі «ікс». Якщо один з екстремумів нижче осі, а інший вище, кривій доведеться перетинати вісь тричі, і коренів у рівняння буде три.

Є ще один частковий випадок. За межами підручників, він трапляється не так часто, але трапляється. Це коли один з екстремумів лежить на осі «ікс». Крива тоді її не перетинає, але торкається, і у рівняння лишається тільки два корені.

Добре. Що нам ще треба знати про кубічну параболу і кубічне поліноміальне рівняння?

Ще кубічна парабола може обходитись зовсім без екстремумів.

Або замість екстремумів мати плато з однієї точки. В цій точці крива ані зростає, ані спадає, вона «паралельна» осі «ікс».

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

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

Отже ми бачимо що кубічна парабола або може мати два екстремуми, або не мати жодного. Мати 2, чи 3 корені, але принаймні не менше одного. В будь якому разі, кубічний поліном має поміняти знак хоча б один раз.

Чому так? Зараз спробуємо розібратись.

Симетричні поліноми

Це — найпростіша квадратична парабола y=x2.

Як бачите, її графік симетричний відносно осі «ігрек». Насправді, можна було б навіть на графік не дивитися бо всі ми і так знаємо що x2 = (-x)2.

Якщо ми помножимо x2 на число, функція все ще буде симетричною. Якщо помножимо симетричну функцію на x2, це все ще не поламає її симетрії. І якщо складемо разом дві симетричні функції, результат все ще буде симетричним.

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

Симетричні поліноми можуть не мати коренів взагалі.

Або мати парну кількість коренів.

Або, як ми насправді вже бачили, мати непарну кількість коренів, наприклад один, але тоді непарний корінь має обов’язково бути в нулі і з’являтися від доторку екстремуму з віссю «ікс».

Глобально, симетричні поліноми ані зростають, ані спадають. Якщо симетричний поліном починається у плюс-нескінченності, він має закінчитись у плюс-нескінченності. Якщо починається у мінус-нескінченності, то у мінус-нескінченність він зрештою і повернеться.

Антисиметричні поліноми

Це найпростіший антисиметричний поліном: y = x.

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

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

Антисиметричний поліном завжди міняє знак. Якщо він починається у мінус-нескінченності, то має закінчитись у плюс-нескінченності. Якщо починається у плюс-нескінченності, має закінчитись у мінус-нескінченності.

Через те, що поліном функція неперервна, він має десь перетнути вісь «ікс». Але так само він має перетнути вісь «ігрек» і знов неперервно. Тому антисиметричні поліноми перетинають обидві вісі в точці (0, 0).

Звісно, він може мати і інші корені, але вони тоді мають бути симетричними і відповідно їх кількість — парною.

Але симетричні чи антисиметричні, це все лише якісь окремі часткові випадки, і чому я взагалі про них розказую?

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

Наприклад, п’ятнадцять років тому був такий момент коли процесори ще не вміли в супер-скалярні тригонометричні функції, але вже достатньо випереджали шину пам’яті по швидкодії, щоб обчислення полінома було швидшим за звернення до таблиці значень. Ми тоді апроксимували синуси і косинуси поліномами. Хтось — через розкладання в ряд, а ми — антисиметричними і симетричними інтерполюючими поліномами із заданими похідними. Звісно, моделювати антисиметричний синус чи симетричний косинус загальним поліномом було б просто недоцільно.

А по-друге, кожен поліном — це сума симетричного і антисиметричного поліномів. Це як індейське прислів’я про двох вовків. Всередині тебе живуть два полінома: симетричний і антисиметричний, і перемагає той, в якого вище ступінь.

Будь який поліном поводить себе глобально відповідно до свого ступеню. Якщо він парний, він так само як симетричний поліном, починається і закінчується в одній нескінченності. Якщо непарний — то як антисиметричний — починається в одній, закінчується в іншій.

Відповідно, парні поліноми n-го ступеню можуть мати від нуля до n коренів. Непарні — від 1 до n.

Згадаємо тепер про похідні поліномів

Похідна суми — це сума похідних. Похідна скалярного добутку — скалярний добуток похідної. Похідна xn це nxn-1. А це все, з чого поліноми складаються. Отже, похідна поліному — це теж поліном, але зі ступенем на одиничку меншим.

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

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

Дивіться, похідна кубічної параболи — це парабола квадратична. Вона тут має два корені. Два рази перетинає вісь «ікс».

Якщо похідна перетинає вісь «ікс» зростаючи, це означає що функція, від якої це похідна власне походить, спадала-спадала, а потім оп — і почала зростати. Тобто маємо локальний мінімум.

Якщо похідна перетинає вісь «ікс» спадаючи, то функція, відповідно, зростала, а потім почала спадати. Це локальний максимум.

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

Функція торкається, але не переходить вісь; отже корінь є, а екстремуму немає. Є плато з однієї точки.

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

Це графіки, а ось коефіцієнти:

Що можна з цього всього розібрати? Що лежить на поверхні?

По-перше, передостанній коефіцієнт кожної похідної — це останній коефіцієнт наступної. Гаразд, логічно, бо похідна ax це a.

По-друге, перед-перед останній коефіцієнт — це останній коефіцієнт другої похідної, але поділений на два. Знов сходиться, бо похідна ax2 це 2ax, a потім похідна від 2ax це 2a.

По-третє, перший коефіцієнт кубічної параболи — це останній коефіцієнт третьої похідної, але поділений на шість. Теж зрозуміло, ми ж маємо диференціювати його тричі: ax3 у 3ax2, потім у 6ax, а вже тоді у 6a.

По-n-не, кожен n-й коефіцієнт полінома пов’язаний з останнім членом своєї n похідної через ділення на n!.

Чому нам цікавий саме останній коефіцієнт? Бо останній коефіцієнт поліному — це його значення у нулі.

Отже, якщо ми розкладемо поліном на всі його похідні, і обчислимо їх у нулі, то отримаємо числа, з яких потім, ділячи їх на відповідний факторіал, зможемо зібрати наш поліном назад. Зможемо розібрати поліном і зібрати наново!

Розумію, що напевно ви не поділяєте мій ентузіазм. Дійсно, вправа якась більш атлетична ніж практична. Нащо нам збирати те, що в нас і так вже є?

А соль в тому, що на похідні у нулі ми можемо розібрати не тільки поліном, а майже будь-яку функцію, а зібрати назад все одно поліном, і цей поліном буде нам правити за функцію і інколи не гірше за оригінал.

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

Але як же перетворити довільну функцію на поліном?

Дякую, що спитали.

Оце — експонента: ex.

Експонента — функція унікальна, бо похідна експоненти — це така ж експонента.

Друга похідна — теж експонента. І третя похідна. І четверта. Скільки не бери — стільки ж і лишиться.

Відповідно, значення експоненти у 0 буде 1. І значення похідної — 1, і другої — 1, і третьої, і будь-якої.

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

y = x + 1

Ну гаразд, він поки що не дуже заміняє експоненту, але зачекайте. Давайте додамо ще один член. Третій член матиме коефіцієнт 1/2.

y = (1/2)x2 + x + 1

Це вже трохи краще. Але не будемо зупинятися. Коефіцієнт наступного члену (1/6).

y = (1/6)x3 + (1/2)x2 + x + 1

Ще краще. Додамо тоді ще один. Чому б ні?

y = (1/24)x4 + (1/6)x3 + (1/2)x2 + x + 1

І навіть ще один.

y = (1/120)x5+ (1/24)x4 + (1/6)x3 + (1/2)x2 + x + 1

Ми так можемо додавати коефіцієнти ще і ще, але не будемо. Бо, сподіваюсь арктангенсальна шкала зробила це очевидним, ми можемо наблизити неполіном поліномом лише локально. Глобально, експонента і поліном поводять себе по-різному, отже глобально одне іншим змоделювати ніяк не можна.

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

Висновки

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

При тому, інструмент цей незаслужено ігнорується. Так, наприклад, не так давно була пропозиція додати цю шкалу до D3 — відомої JavaScript бібліотеки для представлення даних, і пропозиція ця... просто заглухла.

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

Дякую за увагу. В мене все.

👍НравитсяПонравилось8
В избранноеВ избранном2
Подписаться на тему «C++»
LinkedIn

Похожие статьи

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Проте, вона має досить просте пояснення: коли ви знаходитеся біля великої будівлі [насправді, будь-який великий об’єкт], та дивитеся на неї вгору, ви бачите її висоту саме в арктангенсальній проекції. Наприклад, мінцифри дивиться на IT як м*ндавошка на статую Свободи. Але можна сказати «оцінює перспективи в арктангенсальній шкалі за світовими стандартами на найближчі десятиріччя».

Цікаво. Але не вистачає логаритмічної скалі для порівняння

У арктангенсальній шкалі, не треба нічого зсувати і масштабувати, щоб це побачити.

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

f[x_, a_] = ArcTan[(Tan[x] - a)^2]
В нормальній шкалі це парабола (x-a)^2 , вона просто торкалася б осі іксів в точці а і далі би собі зростала. Тепер побудую кілька графіків, табулюючи по 640 точок як в статті
Plot[f[x, 1], {x, -Pi/2, Pi/2}, PlotRange -> {-Pi/2-0.1, Pi/2+0.1}, 
 PlotPoints -> 640, MaxRecursion -> 0]
Як результат:
а = 1 imgur.com/zpNgwgf
a = 10 imgur.com/AhuwQ7A
a = 100 imgur.com/8VeRV6i
a = 1000 imgur.com/XjATeng
На 100 вже втрачається властивість дотикатися осі іксів, а на 1000 в принципі перестає бути зрозуміло, що відбувається.

Подписаться на комментарии