Что такое код hypot


Hypot — Hypot

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

содержание

Мотивация и использование

Расчет длину гипотенузы треугольника можно с помощью функции квадратного корня по сумме двух квадратов, но hypot ( х , у ) позволяет избежать проблем , которые возникают при квадратуре очень больших или очень небольших количествах.

Величину гипотенузы из (0, 0) до ( х , у ) можно рассчитать следующим образом :

Эта операция также известна как Пифагор дополнения .

Однако квадраты очень больших или малых значений х и у могут превышать диапазон машинной точности при расчете на компьютере, что приводит к неверному результату , вызванной арифметической сгущенного и / или арифметического переполнения . Функция hypot была разработана , чтобы вычислить результат , не вызывая эту проблему.

Функция hypot часто используются вместе с atan2 функцией для преобразования декартовых координат в полярные координаты :

Реализация

Трудности с наивным осуществления является то , что х 2 или у 2 может переполненным или незаполненным, если промежуточный результат не вычисляется с расширенной точностью . Методика общей реализации является обмен ценностей, если это необходимо, так что | х | ≥ | у |, а затем использовать эквивалентную форму:

Вычисление у / й не может переполнение. Если у / х потери значимости, конечный результат равен | х |, что является правильным в точности расчета. Квадратный корень вычисляется из значения между 1 и 2. Наконец, умножение на | х | не может Underflow и переливается только тогда , когда результат слишком велик для представления.

ПСЕВДОКОД

Поддержка языков программирования

Функция присутствует на нескольких языках программирования:


Что такое код hypot

x , y
Значения с плавающей запятой.

В случае успешного выполнения hypot возвращает длину гипотенузы; при переполнении hypot возвращает INF (бесконечность) и errno присваивается переменной ERANGE . Можно использовать _matherr изменить обработку ошибок.

Дополнительные сведения о кодах возврата см. в разделе errno _doserrno, _sys_errlist и _sys_nerr.

hypot Функции вычислить длину гипотенузы прямоугольного треугольника, длина двух сторон x и y (другими словами, квадратный корень из x 2 + y 2 ).

Для обеспечения совместимости с более ранних стандартах имеются версии функций, которые имеют символов подчеркивания. Их поведение идентично поведению версии, которые не являются символами подчеркивания в начале. Рекомендуется использовать версии без символов подчеркивания для нового кода.

Подпрограмма Обязательный заголовок
hypot , hypotf , hypotl , _hypot , _hypotf , _hypotl

Дополнительные сведения о совместимости см. в разделе Compatibility.

Math.hypot()

На этой странице

Сводка

Метод Math.hypot() возвращает квадратный корень суммы квадратов своих аргументов, то есть

Синтаксис

Параметры

Описание


Поскольку метод hypot() является статическим методом объекта Math , вы всегда должны использовать его как Math.hypot() , а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

При вызове без аргументов результатом вызова будет значение +0.

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет NaN .

При вызове с одним аргументом, метод Math.hypot() то же самое значение, что и метод Math.abs() .

Примеры

Пример: использование метода Math.hypot()

Полифилл

Этот метод может эмулироваться следующим образом:

Что сложного может быть в вычислении гипотенузы?

В библиотеках различных языков программирования часто может быть включена функция для вычисления гипотенузы прямоугольного треугольника (или вы сами можете написать такую функцию для решения той или иной задачи).

На первый взгляд это может показаться тривиальной задачей, не так ли? Если сторонами треугольника являются x и y, то, формально, формулой для вычисления гипотенузы будет:

Это работает теоретически, но на практике данный подход может приводить к ошибке. Если значение x достаточно велико, то вычисление x*x может привести к переполнению типа данных (ни один тип данных от этого не застрахован, если не рассматривать длинную арифметику), и результатом вычислений будет бесконечность.

Одним из вариантов избежать вероятности переполнения является следующая последовательность действий:

Заметим, что значение подкоренного выражение лежит на интервале от 1 до 2, что никак не может привести к переполнению при вычислении квадратного корня. Единственное место в котором может случиться переполнение, это финальное умножение. Но, если переполнение и произошло, это лишь означает, что результат настолько велик, что не может быть вмещён в используемый тип данных, и это уже не проблема выбора алгоритма а проблема выбора типа данных.

Для того, чтобы увидеть как вышеприведённый алгоритм может преуспеть в то время как решение в лоб упасть, приведём небольшой пример. Пусть M — наибольшее число, которое может быть представлено выбранным типом данных. Для типа данных double, M будет порядка 10 308 . Пусть x и y эквивалентны величине 0.5 M. Алгоритм должен вернуть значение примерно равное 0.707 M, что не должно переполнить выбранный тип данных. Но решение в лоб не даст правильного ответа, в то время как предложенный алгоритм преуспеет.

Ради интереса проверил стандартную функцию (hypot или _hypot) включённую в math.h, и результат порадовал.


Вывод, который я сделал для себя: если в библиотеку включена какая-то функция, которая на первый взгляд кажется элементарной и пишется в две строчки, то есть большая вероятность, что сделано это не просто так и есть какие-то глубокие причины для такого решения.

По ссылке на оригинальный материал могут быть найдены комментарии к вопросу о том, не будет ли потеряна точность при таком способе нахождения гипотенузы.

numpy.hypot

Функция hypot() вычисляет длинну гипотенузы по указанным значениям катетов. Эквивалентно sqrt(x1**2 + x2**2) .

Параметры: x1, x2 — подобные массиву объекты Длины катетов или массивы значений длин катетов. *ufunc_args — аргументы универсальной функции Аргументы, позволяющие настроить и оптимизировать работу функции (подробнее см. универсальные функции). Возвращает: результат — массив NumPy или его подкласс Длинна гипотенузы прямоугольного треугольника или массив значений длин гипотенузы.

hypot

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

hypot — Рассчитывает длину гипотенузы прямоугольного треугольника

Описание

hypot() возвращает длину гипотенузы прямоугольного треугольника с длинами сторон x и y или расстояние точки ( x , y ) до начала координат Эквивалентно sqrt(x*x + y*y).

Список параметров

Длина первой стороны

Длина второй стороны

Возвращаемые значения

Вычисленная длина гипотенузы


User Contributed Notes 2 notes

If you need a higher-dimensional diagonal length (norm), you can exploit the fact that sqrt(x*x+y*y+z*z) == sqrt(x*x+sqrt(y*y+z*z)). In other words hypot(x, y, z)==hypot(x, hypot(y, z)).

To be generic about it.
function norm (. $args )
<
return array_reduce ( $args , ‘hypot’ , 0 );
>

A simpler approach would be to allow an arbitrary number of parameters. That would allow for whatever number of dimensions you want *and* it would be backwards compatible with the current implementation.

function hypo ()
<
$sum = 0 ;
foreach ( func_get_args () as $dimension ) <
if (! is_numeric ( $dimension )) return — 1 ;
$sum += pow ( $dimension , 2 );
>
return sqrt ( $sum );
>

print hypo (); // vector in 0 dimensions, magnitude = 0.
print hypo ( 1 ); // vector in 1 dimension, magnitude = 1.
print hypo ( 3 , 4 ); // vector in 2 dimensions, magnitude = 5.
print hypo ( 2 , 3 , 6 ); // vector in 3 dimensions, magnitude = 7.

Что такое код hypot

x , y
Значения с плавающей запятой.

В случае успешного выполнения hypot возвращает длину гипотенузы; при переполнении hypot возвращает INF (бесконечность) и errno присваивается переменной ERANGE . Можно использовать _matherr изменить обработку ошибок.

Дополнительные сведения о кодах возврата см. в разделе errno _doserrno, _sys_errlist и _sys_nerr.

hypot Функции вычислить длину гипотенузы прямоугольного треугольника, длина двух сторон x и y (другими словами, квадратный корень из x 2 + y 2 ).

Для обеспечения совместимости с более ранних стандартах имеются версии функций, которые имеют символов подчеркивания. Их поведение идентично поведению версии, которые не являются символами подчеркивания в начале. Рекомендуется использовать версии без символов подчеркивания для нового кода.

Подпрограмма Обязательный заголовок
hypot , hypotf , hypotl , _hypot , _hypotf , _hypotl

Дополнительные сведения о совместимости см. в разделе Compatibility.

iOS Manual Pages


  • Table of Contents
  • Download Sample Code
ADC Home>Reference Library> Reference > Mac OS X > Mac OS X Man Pages

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).

Sending feedback…

We’re sorry, an error has occurred.

Please try submitting your feedback later.

Thank you for providing feedback!

Your input helps improve our developer documentation.

Документирование кода

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

Основное назначение комментариев – пояснить что делает код, как он работает. Основное назначение строк документации – кратко описать в целом для чего предназначен объект, какие аргументы принимает, и что возвращает.


В исходном коде Python строки документации заключаются в тройные кавычки и пишутся сразу под заголовком объекта. Пример документированного модуля:

Извлекать строки документации можно двумя способами:

Через встроенный для каждого объекта атрибут-переменную __doc__.

С помощью встроенной в Python функции help(), которая запускает интерактивную справочную систему.

Если дать команду help(planimetry), то будут выведены все строки документации модуля в структурированном виде. Однако можно «заказывать» справку по отдельным объектам:

Выход из справки осуществляется с помощью клавиши q.

В Python документированы все встроенные объекты и модули библиотеки.

Таким образом, если вам надо узнать, для чего предназначена та или иная функция, и как она работает, это всегда можно сделать, не выходя из интерпретатора Python. Перечень атрибутов модуля или объекта можно посмотреть с помощью встроенной функции dir().

Следует отметить, документирование модулей принято выполнять на английском языке. Многие проекты имеют открытый код, выкладываются в Веб, их смотрят и дорабатывают программисты из разных стран. Использование одного языка позволяет им понимать друг друга. Поэтому профессиональный программист должен владеть английским хотя бы на начальном уровне. Google Translate – тоже вариант.

Практическая работа

Выполните полное документирование модуля, созданного в практической работе прошлого урока.

Курс с примерами решений практических работ и всеми уроками: android-приложение, pdf-версия.

тестер диэлектрической прочности / сопротивления изоляции
Hypot® Series

Характеристики

сопротивления изоляции, диэлектрической прочности

Описание

Познакомьтесь с новым поколением Hipot Tester. Новая серия Hypot® повышает планку безопасности и эффективности в производственных линиях Hipot Testers. Независимо от того, требуется ли вам проведение испытаний на устойчивость к переменному току, испытаний на устойчивость к постоянному току или испытаний на сопротивление изоляции, Hypot Series Hipot Tester предлагает инновации, которые позволят вам начать достигать лучших методов обеспечения безопасности и эффективности без необходимости использования дорогостоящей автоматизированной испытательной системы или подключения к ПК. Прекратите писать от руки тысячи результатов тестирования и улучшите прослеживаемость благодаря встроенным возможностям хранения и передачи данных. Автоматизируйте свою производственную линию с помощью прямого подключения штрих-кода, что позволяет быстро связывать продукты с предварительно запрограммированными тестовыми файлами. Обеспечьте безопасность оператора с помощью SmartGFI®, защитной блокировки и СИЗ-совместимых аксессуаров. Вы даже можете подключить серию Hypot® к серии HYAMP® для создания бесшовной системы соответствия требованиям безопасности при проведении испытаний гипсовых и заземляющих соединений. Серия Hypot включает следующие модели: 3805, 3865, 3870, 3880.

Это автоматический перевод. (просмотреть оригинал на английском языке)

Илон Маск рекомендует:  Атрибут volume в HTML
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL