Hypot — це математична функція для обчислення довжини гіпотенузи прямокутного трикутника. Її було розроблено, щоб уникнути помилок, що виникають через обмежену точність обчислень, що їх виконують на комп'ютерах.
Мотивація і використання
Обчислення довжини гіпотенузи трикутника можливе застосуванням квадратного кореня до сумі двох квадратів, але hypot(x, y) уникає проблем з піднесенням до квадрату дуже великих і дуже маленьких чисел.
Довжина гіпотенузи від (0, 0) до (x, y) можна обчислити використовуючи
Цю операцію знають як теореми Піфагора.
Однак, під час обчислень на комп'ютері, квадрати дуже великих чи маленьких значень x і y можуть вийти за межі машинної точності, що призводить до неточного результату спричиненого переспорожнінням і/або переповненням. Функцію hypot було розроблено, щоб отримувати результат не маючи такої проблеми.
Функцію hypot часто використовують разом із функцією [en] для переведення з декартових у полярні координати:
- r = hypot(x, y),
- θ = atan2(y, x).
Якщо якійсь із входів це нескінченність, то вислід це теж нескінченність.
- hypot(x, ±∞) = hypot(±∞, x) = +∞
Втілення
Вада наївного втілення в тому, що x2 або y2 може переспрожнітись чи переповнитись, хіба що ми використаємо [en]. Загальноприйнята техніка це, якщо потрібно, то обміняти значення так, щоб |x| ≥ |y| і тоді використати рівнозначну форму
Обчислення y/x не може переповнитись, хіба що і x, і y це 0. Якщо y/x переспорожняється, то кінцевий результат рівний |x|, що правильно в межах точності обчислення. Квадратний корінь треба обчислити для значення між 1 і 2. Зрештою, множення на |x| не може переспорожніти і переповнюється лише, якщо результат занадто великий.
Цей підхід вимагає додаткового ділення чисел з рухомою комою, що може подвоїти ціну в порівнянні з наївним втіленням, бо множення і додавання значно швидші ніж ділення і взяття кореня.
Складніші втілення уникають цього розбиванням можливих входів на більше випадків:
- x ≫ y: hypot(x, y) = |x|, з точністю до машинного епсилон.
- x2 переповнюється: помножити x і y на маленький масштабувальний множник (наприклад, 2−64 для одинарної точності IEEE), використати наївний алгоритм, який не переповниться і помножити результати на обернене до масштабувального множника (наприклад, 264).
- y2 переспорожняється: Як вище, але обернути масштабувальний множник, щоб збільшити проміжні значення.
- Інакше: можна безпечно використати наївний алгоритм.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Hypot ce matematichna funkciya dlya obchislennya dovzhini gipotenuzi pryamokutnogo trikutnika Yiyi bulo rozrobleno shob uniknuti pomilok sho vinikayut cherez obmezhenu tochnist obchislen sho yih vikonuyut na komp yuterah Motivaciya i vikoristannyaObchislennya dovzhini gipotenuzi trikutnika mozhlive zastosuvannyam kvadratnogo korenya do sumi dvoh kvadrativ ale hypot x y unikaye problem z pidnesennyam do kvadratu duzhe velikih i duzhe malenkih chisel Dovzhina gipotenuzi vid 0 0 do x y mozhna obchisliti vikoristovuyuchi r x 2 y 2 displaystyle r sqrt x 2 y 2 Cyu operaciyu znayut yak teoremi Pifagora Odnak pid chas obchislen na komp yuteri kvadrati duzhe velikih chi malenkih znachen x i y mozhut vijti za mezhi mashinnoyi tochnosti sho prizvodit do netochnogo rezultatu sprichinenogo peresporozhninnyam i abo perepovnennyam Funkciyu hypot bulo rozrobleno shob otrimuvati rezultat ne mayuchi takoyi problemi Funkciyu hypot chasto vikoristovuyut razom iz funkciyeyu en dlya perevedennya z dekartovih u polyarni koordinati r hypot x y 8 atan2 y x Yaksho yakijs iz vhodiv ce neskinchennist to vislid ce tezh neskinchennist hypot x hypot x VtilennyaVada nayivnogo vtilennya v tomu sho x2 abo y2 mozhe peresprozhnitis chi perepovnitis hiba sho mi vikoristayemo en Zagalnoprijnyata tehnika ce yaksho potribno to obminyati znachennya tak shob x y i todi vikoristati rivnoznachnu formu r x 2 y 2 x 2 1 y x 2 x 1 y x 2 x y x y 1 1 y x 2 displaystyle begin aligned r amp sqrt x 2 y 2 amp sqrt x 2 left 1 left tfrac y x right 2 right amp x sqrt 1 left tfrac y x right 2 left x frac y x frac y 1 sqrt 1 left tfrac y x right 2 right end aligned Obchislennya y x ne mozhe perepovnitis hiba sho i x i y ce 0 Yaksho y x peresporozhnyayetsya to kincevij rezultat rivnij x sho pravilno v mezhah tochnosti obchislennya Kvadratnij korin treba obchisliti dlya znachennya mizh 1 i 2 Zreshtoyu mnozhennya na x ne mozhe peresporozhniti i perepovnyuyetsya lishe yaksho rezultat zanadto velikij Cej pidhid vimagaye dodatkovogo dilennya chisel z ruhomoyu komoyu sho mozhe podvoyiti cinu v porivnyanni z nayivnim vtilennyam bo mnozhennya i dodavannya znachno shvidshi nizh dilennya i vzyattya korenya Skladnishi vtilennya unikayut cogo rozbivannyam mozhlivih vhodiv na bilshe vipadkiv x y hypot x y x z tochnistyu do mashinnogo epsilon x2 perepovnyuyetsya pomnozhiti x i y na malenkij masshtabuvalnij mnozhnik napriklad 2 64 dlya odinarnoyi tochnosti IEEE vikoristati nayivnij algoritm yakij ne perepovnitsya i pomnozhiti rezultati na obernene do masshtabuvalnogo mnozhnika napriklad 264 y2 peresporozhnyayetsya Yak vishe ale obernuti masshtabuvalnij mnozhnik shob zbilshiti promizhni znachennya Inakshe mozhna bezpechno vikoristati nayivnij algoritm