Про одне застосування дуальних чисел

💡 Усі статті, обговорення, новини про Python — в одному місці. Приєднуйтесь до Python спільноти!

Доброго дня, шановне товариство!

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

P.S. Розв’язки задач прохання не спойлити, а то спущу злого собака!

👍ПодобаєтьсяСподобалось15
До обраногоВ обраному5
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

Прикольно :)
Тест add(): ✅ Пройдено

Тест sub(): ✅ Пройдено

Тест mul(): ✅ Пройдено

Тест div(): ✅ Пройдено

🎉 Всі тести пройдено успішно!

До речі, бачив дуже цікаве пояснення звідки можна дуже легко обгрунтувати комплексні числа:
1. Все числа можна представити як вектора
2. Коли ми множимо на негативне число, то вектор обертається
3. Тобто, множиння — це не тільки масштабування, але і обертання?
4. Раз ми змогли обернути число на 180 градусів, давайте побудуємо рівняння, щоб знайти на що треба помножити число, щоб обернути вектор на 90 градусів
5. Два обертання по 90 градусів — буде обертання на 180 градусів. Тобто, x**2 = −1
6. Тоді для обертання числа на 90 градусів треба помножити його на sqrt(-1)

Справді гарно, хоч текст місцями запікає мозок. Добре, що є випадаючі розділи, які можна не відкривати) Там хардово і для «бувалих».

До речі, всі три алгебри представляються деякими сімействами матриць 2×2. І тоді не потрібно ніяких нових/особливих «числових сутностей». Функцію від матриці вмієм обчислити. Не любу певне, але є техніки.

А ще, ε непрямим чином з’являється під час алгебраїчних робіт з проєктивною геометрією.
Я бачив класний відос про це.
—Мотивацію пом’ятаю: що буде, якщо пряму представити як тюпл з коефіцієнтів її рівняння у повному вигляді?
Тобто ax+by+c=0 <=> (a, b, c)
хм, пласка(2D) пряма представляється трьома числами?! Два числа ніби зрозуміло чому, а третє до чого(?) і що воно дозволяє робити? Можна ще погратися зі всякими векторними речами і дивитися результати. Думаю, це навіть може проявити якісь властивості. Не пробував.

Свого часу заробив чимало грошей на цій техніці:
Кросс-продакт двох «туплів» прямих дає «тупл» точки їх перетинання
Кросс-продакт двох «туплів» точек перетинання дає «тупл» прямої, через яку вони проходять
+1 за слагкота на аватарці)

я попробував... шось не то, не робе) може там ще ділилося на щось
точка перетину прямих (5, −7, 2) і (-9, 7, 4) це (3/2, 19/14 ) і аж ніяк не (-42, −38). У нас же перші 2 координати типу точки на площині. Весь векторний добуток = тюплу (-42,-38, 28) [geogebra]

*** я бачив автопереклад «slugcat» на «слимакотик», милота. Однак, слимак має хатку, а тут нема. Це слизняки немають хатки. Тому слизокотик виходить. ( ⓛ ω ⓛ *)

Векторний добуток або (-42, −38, −28) або (42, 38, 28)
Але це 3Д вектор у гомогенних координатах
Щоб перевести у відповідну 2Д точку треба взяти перетин 3Д вектора з площиною z=1
Тобто поділити x/z і y/z
Вийде (3/2, 19/14)
Якщо колись z буде 0 -> прямі паралельні

є випадаючі розділи, які можна не відкривати

ну я чесно попереджав, що там темно і страшно )))

До речі, всі три алгебри представляються деякими сімействами матриць 2×2. І тоді не потрібно ніяких нових/особливих «числових сутностей».

це дуже влучне зауваження, ви по-суті зачепили теорію представлень (en.wikipedia.org/...​i/Representation_theory) будь-яку скінченну групу можна представити у вигляді матриць (лінійних перетворень) --- це наслідки теореми Келі (en.wikipedia.org/wiki/Cayley’s_theorem) та подібних структурних теорем. у фізиці часто обидва варіанти живуть паралельно, наприклад матриці Дірака (en.wikipedia.org/wiki/Gamma_matrices) постійно то розписують повністю, то пишуть просто gamma_i і маніпулюють як уявними одиницями. я свідомо вирішив не приводити матричне представлення, щоб не перевантажувати статтю, але може воно було б простіше, не знаю.

хм, пласка(2D) пряма представляється трьома числами?! Два числа ніби зрозуміло чому, а третє до чого(?) і що воно дозволяє робити?

два числа (a та b), щоб задати нормаль (напрямок), а ще одне © --- для зміщення відносно початку координат. ну але це дуже умовно, бо при бажанні можна три числа записати одним --- потужності-то ті самі, значить є бієкція. просто ми часто ще хочемо додаткових властивостей: наприклад, щоб при невеликій зміні параметрів ми отримували геометрично близькі прямі (тут зв’язок з топологією). ще складніше, якщо ми хочемо не просто кожній прямій поставити у відповідність набір чисел, але щоб він був унікальний і ще щоб кожному набору відповідала якась пряма. тут уже і показуються проективні простори, бо природна топологія прямої R не дозволяє подібного.

У сучасній 2D проєктивній геометричній алгебрі (Projective Geometric Algebra, PGA, arxiv.org/pdf/1901.05873) плоска пряма записується саме як вектор: a e1 + b e2 + c e0. Базові вектори e1 та e2 --- звичні нам напрямки x та y, їх квадрати рівні 1. А от третій базисний вектор e0 --- те саме дуальне epsilon, його квадрат нульовий.

перетворив мій мозок на фарш

природознавець

це звучить як стьоб

дякую :)

перетворив мій мозок на фарш

ну це завжди будь ласка ))

природознавець
це звучить як стьоб

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

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

приємно що не всі цьому підвладні!

так шо стьоб у виключно хорошому сенсі, який мені до смаку гг

тата ти сичас з ким разговарював? ))

та намааана ))
і картинки є.

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

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

dual numbers contain what mathematicians call zero divisors (non-zero numbers that multiply to equal zero).
...
Where Dual Numbers Win: Automatic Differentiation

ЗЫ: як ось тут теж кросівоє

The real part gives you the function’s output value, and the dual part gives you the exact mathematical derivative simultaneously.

все точно так. «Маленька задача навздогін» це по суті «знайти дільники нуля», тільки я їх так явно не називаю, щоб поменше «надто розумних» термінів. ну і формула f(x+e) = f(x) + f’(x)e це в точності

The real part gives you the function’s output value, and the dual part gives you the exact mathematical derivative simultaneously.

Тест add(): ✅ Пройдено
Тест sub(): ✅ Пройдено
Тест mul(): ✅ Пройдено
Тест div(): ✅ Пройдено
🎉 Всі тести пройдено успішно!
=============================================
Автор не любить читачів і змушує вчити JavaScript (((((((((((((((((

Оце я розумію — моментально розв’язав ))

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