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

16 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівПрикольно :)
Тест 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 -> прямі паралельні
ну я чесно попереджав, що там темно і страшно )))
це дуже влучне зауваження, ви по-суті зачепили теорію представлень (en.wikipedia.org/...i/Representation_theory) будь-яку скінченну групу можна представити у вигляді матриць (лінійних перетворень) --- це наслідки теореми Келі (en.wikipedia.org/wiki/Cayley’s_theorem) та подібних структурних теорем. у фізиці часто обидва варіанти живуть паралельно, наприклад матриці Дірака (en.wikipedia.org/wiki/Gamma_matrices) постійно то розписують повністю, то пишуть просто gamma_i і маніпулюють як уявними одиницями. я свідомо вирішив не приводити матричне представлення, щоб не перевантажувати статтю, але може воно було б простіше, не знаю.
два числа (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 клас) і економить багато слів щоб не представлятися більш бюрократично.
ну знаєш є ця тенденція ділити людей по типу мозку, наче хтось той мозок взагалі бачив, все таки чомусь люди забули що та ж фізика це природознавча наука
приємно що не всі цьому підвладні!
так шо стьоб у виключно хорошому сенсі, який мені до смаку гг
тата ти сичас з ким разговарював? ))
та намааана ))
і картинки є.
ну так но звісно з власного досвіду особисто я зрозумів терію чисел з комплексними числами включно лише зі своїх уже американських лекцій де спочатку розтлумачувалося що власно «одиниця» і далі відповідно як усе у математиці починало складатися одне на одне
... зокрема ідея мати іншу систему числення просто щоб прикладати до рішення інших задач для мене особисто очевидна але ж так само і геть нова і сам я таки не додумався
ЗЫ: як ось тут теж кросівоє
все точно так. «Маленька задача навздогін» це по суті «знайти дільники нуля», тільки я їх так явно не називаю, щоб поменше «надто розумних» термінів. ну і формула f(x+e) = f(x) + f’(x)e це в точності
Тест add(): ✅ Пройдено
Тест sub(): ✅ Пройдено
Тест mul(): ✅ Пройдено
Тест div(): ✅ Пройдено
🎉 Всі тести пройдено успішно!
=============================================
Автор не любить читачів і змушує вчити JavaScript (((((((((((((((((
Оце я розумію — моментально розв’язав ))