Что означает гистерезис и как он применяется к информатике или программированию?
Я просматривал какой-то код и увидел неконтекстный комментарий о "гистерезисе". Я думаю, что выяснил, что делает код, поэтому мой вопрос не содержит ничего конкретного. Я просто не понимаю, что означает этот термин или как он применим в программировании. Я посмотрел вокруг и увидел некоторые математические определения, но хотел бы получить больше информации. Из того, что я могу сказать, гистерезис как-то связан с предсказанием или принятием определенного состояния для X на основе того, что случилось с X в прошлом?
6 ответов
Гистерезис характеризует систему, поведение (выход) которой зависит не только от ее входных данных в момент времени t, но также от ее прошлого поведения, от пути, которым она следовала.
Хорошо известным устройством, проявляющим гистерезис, является термостат. Представьте себе термостат, который включал бы и выключал нагрев при температуре 70°F. Когда температура около 70°F, хотя и немного колеблется, термостат будет постоянно включать и выключать нагрев. Как правило, термостат построен с гистерезисом: он включит нагрев при (скажем) 69°F, но отключит нагрев при 71°F. Это позволяет избежать постоянных переключений.
Пример термостата:
heatPointLow = 8°C
heatPointHeight = 10°C
heater = off
while(true){
if(temperature < heatPointLow)
heater = on
if(temperature > heatPointHeight)
heater = off
}
Если бы там была только одна точка, система могла бы колебаться вокруг этой единственной точки. Между точками по высоте и низу это зависит от последнего значения нагревателя, включен он или выключен.
Google был моим другом:
Принцип в целом относится к поведению изменений любой системы, основываясь на предыдущих состояниях. Таким образом, вы можете смоделировать гистерезис с помощью диаграммы состояния или графика.
В дизайне пользовательского интерфейса это относится к практике отстания пользовательского интерфейса от событий пользовательского ввода или других событий. Нажатие кнопки может не сразу отобразить окно сведений; вместо этого запускается анимация, которая постепенно меняет пользовательский интерфейс.
Я думаю о тех пузырях "Device Driver Configured" в панели задач Windows 7, как о гистерезисе: пузырь появляется в ответ на событие завершения из ОС и начинает исчезать. Событие при наведении курсора на пользователя сбрасывает этот таймер, давая пользователю время щелкнуть пузырь для получения подробной информации о событии; он задерживает анимацию затухания, даже если после этого события мыши находятся за пределами области пузырька.
Он также используется в технике. Например, в видеоиграх, если есть логика, которая вызывает много переключений без хорошего результата, вы можете добавить к проблеме гистерезис и заставить объекты фиксироваться в определенном направлении в течение периода времени, который может избежать проблем с подергиванием. Подобно тому, что сделано в электронике с триггерами Шмидта - чтобы избежать постоянного переключения, которое не толкает систему в новое состояние, но заставляет систему вибрировать в одном состоянии и не сможет выйти. Очень простая концепция, которая полезна.
Ищите "Берсерк гистерезис" в YouTube для примера. Без гистерезиса роботы в игре буквально просто дергаются и практически не двигаются (когда происходит много активности).
Хорошие ответы. На практических уровнях интеграции это очень важно. Интеграционный слой с гистерезисом сам по себе является подсистемой. Понятно, что идеалом является отсутствие гистерезиса (машина Мура); но, как правило, существует несоответствие в конечных автоматах каждой из систем, и это может быть решено только переводчиком, использующим гистерезис. Например, модуль полевой службы Microsoft Dynamics/Great Plains записывает состояние в своей таблице журнала аудита основного обслуживания SVC00210. Каждый звонок находится в каком-то SRVSTAT. При интеграции планировщика, такого как планировщик оптимизации сервиса ClickSoftware, необходимо работать с его состоянием. Состояние CS определяется пользовательской реализацией. Например, открыто, InRoute, OnSite, Incomplete, Cancelled, Complete. Кроме того, он также находится в состоянии незавершенности с ожидающими деталями, хотя он реализован как подсистема состояний в незавершенном состоянии. Итак, переходы в GP должны отображаться в CS. К сожалению, GP допускает (делает запись на экране ввода для вызова) переходы из одного состояния в себя; таким образом, событие перехода не может быть использовано исключительно для запуска изменения состояния в GP. Следовательно, новое триггерное событие является комбинацией перехода состояния GP, а также мета-состояния, определенного некоторой логикой на множестве прошлых событий. Как видите, гистерезис быстро превращает проблему из простой в сложную. С точки зрения компьютерных наук, идеалом является машина Мура, а практической - машина Мили. Я предпочитаю думать об этом как о мучной муке с жуками, живущими в ней, и все! Я думаю, что возможно изготовить машину Мура из любой машины Мили, у машины Мура будет просто больше состояний. Смотрите: Мили v / s. Мур
Не могу выразить это более кратко, чем первое предложение статьи в Википедии:
Гистерезис - это зависимость состояния системы от ее истории.
TS; Н.М.
Интересный взгляд на понятие гистерезиса выражен в статье " Гистерезис как жизнь":
Эта форма или график неизменно связана со всеми реальными случаями использования гистерезиса:
Если мы называем ось X "время", а ось Y "события", то мы можем сказать, скорее в поэтическом, чем в научном смысле, что все жизни начинаются одинаково. Со временем каждый человек испытывает события. Хотя события уникальны, они все же попадают в ограниченный диапазон "всего человеческого опыта".
В конце концов, человек умирает. Таким образом, факты рождения и смерти - это данность, но промежуточные события зависят от человека - в определенной степени.