The shadows lurking in the equations 🔥 Горячее
Традиционная визуализация математических уравнений использует бинарный режим, показывая только точные решения, где уравнение точно равно нулю. FuzzyGraph предлагает не-бинарный подход, визуализируя не только точные решения, но и области, где уравнение почти равно или сильно отклоняется от равенства. Эти "математические тени" или "черные дыры" остаются невидимыми в традиционных графиках, но могут содержать важную информацию о поведении уравнений.
Примеры демонстрируют впечатляющие различия: для уравнения "Slash Dot" FuzzyGraph выявляет гигантскую "черную дыру", полностью невидимую в бинарном представлении. Уравнение "Quasar" показывает глазоподобные структуры, также скрытые от традиционного графирования. Даже простые уравнения, такие как "Черная дыра" (1/(x²+y²)=0), не имеют решений в бинарном режиме, но FuzzyGraph визуализирует их математическую топографию. Эти "тени" не всегда похожи на черные дыры - иногда они образуют линии или другие сложные структуры, раскрывая скрытые аспекты математических объектов.
Комментарии (85)
- Обсуждение развернулось вокруг того, что авторы называют «fuzzy graph» просто визуализируют погрешность, а не решают уравнение.
- Участники обсуждали, что «цветная» версия графика по сути показывает, насколько точка отклоняется от равновесия, а не само решение.
- Некоторые комментаторы отметили, что подобные визуализации полезны для иллюстрации градиента ошибки и чувствительности модели к шуму в данных.
- Были упомянуты инструменты вроде Desmos 3D и CalcPlot3D, которые позволяют пользователям самостоятельно экспериментировать с подобными визуализациями.
- Несколько участников подчеркнули, что визуализация «размытого» графика не нова и используется в машинном обучении для отображения ошибки модели.
Uncertain<T> 🔥 Горячее
Люди слишком уверены в себе. В коде это проявляется так:
if currentLocation.distance(to: target) < 100 {
print("Вы прибыли!") // А точно ли? 🤨
GPS-координаты приблизительны, но Bool требует выбора. Мы «схлопываем волновую функцию» слишком рано.
В 2014 г. исследователи предложили тип Uncertain<T>, встроенный в систему типов. Я портировал идею на Swift:
import Uncertain
let loc = Uncertain<CLLocation>.from(currentLocation)
let nearby = loc.distance(to: target) < 100
if nearby.probability(exceeds: 0.95) {
print("Вы прибыли!") // с 95 % уверенности
}
Сравнение возвращает не Bool, а Uncertain<Bool> — вероятность истинности. Под капотом используется распределение Рэлея и метод Монте-Карло; выборка происходит только при необходимости, а SPRT экономит вычисления.
let speed = 400 / Uncertain<Double>.normal(mean: 60, sd: 5)
let ok = speed < 6
print(ok.probability(exceeds: 0.9))
Такой подход делает неопределённость первоклассной и заставляет писать более умный код.
Комментарии (93)
- Обсуждение крутится вокруг идеи «Uncertain<T>» — типа данных, который носит и распространяет неопределённость (ошибки, распределения вероятностей) через обычные вычисления.
- Участники вспоминают похожие подходы: interval arithmetic, вероятностное программирование, fuzzy logic, а также библиотеки Boost, gvar, monad-bayes и Pyro.
- Отмечают, что GPS-ошибки редко бывают круглыми и независимыми; важно учитывать ковариацию и корреляции между переменными.
- Кто-то мечтает о таблицах, где можно вводить «1 m ± 10 cm» и получать правильную пропагацию погрешностей, а кто-то — о языках, где «Uncertain» был бы типом по умолчанию.
- Главный вопрос: почему, несмотря на множество реализаций, такие типы всё ещё не стали мейнстримом в продакшене.