КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Математическое отступление.Поговорим о преобразовании функций. Для простоты возьмём функцию F(X)=X на отрезке [0,1]. Легко себе представить её график - это прямая линия под 45 градусов. Теперь применим к ней последовательно пару функций - G1(X)=100*X и G2(X)=0.01*X. Финальная функция G2(G1(F(X)))=0.01*100*X=X очевидно никак не изменилась - всё тот же отрезок под 45 градусов. Таким образом, преобразование G1 было обратимым - оно имеет т.н. обратное преобразование G2. Нетрудно видеть, что и преобразование H1(X)=0.1*X также обратимо и имеет обратное - Н2(Х)=10*X. Кроме этого, и порядок применения обратимых преобразований не важен: G2(G1(F(X)))=G1(G2(F(X))). Всё так хорошо лишь пока мы находимся на "территории математики" - все числа у нас действительные, т.е. могут принимать любые значения и быть измерены с любой точностью. Но как только от "математических" чисел мы переходим к "компьютерным"(или "цифровым"), т.е. к ячейкам памяти, появляются два фундаментальных ограничения:
Представим что на рассмотренных выше примерах M=1 и m=0.01., кроме этого считаем значения ограниченными снизу нулём.
Обобщим полученные на этом простом примере результаты. Итак, при ограниченном диапазоне значений и ограниченной точности (разрядности) данных, строго говоря, ЛЮБОЕ преобразование МОЖЕТ перестать быть обратимым, и, более того, МОЖЕТ приводить к потере информации. Потеря информации получается ДВУХ сортов: "ограничение" и "потеря разрядности". В приведённом выше примере умножение на 10 (и тем более на 100), а также сложение (и вычитание) 0.5 приводило к "ограничению". А в случае, когда мы сначала делили на 10 (и тем более на 100) - мы видели потерю разрядности. Поясню выделенное слово "МОЖЕТ". На приведённой в примере функции F(X)=X легко доказать что не только МОЖЕТ, но ВСЕГДА необратимо. Но для некоторых других функций это не так. Например функцию F2(X)=0.1*X можно смело "подвергать" воздействию умножения на 10 - ограничения не произойдёт. Причина - диапазон значений не подходит "достаточно близко к границе". Впрочем, от умножения на 100 это "не спасёт". Другой пример: функцию F3(X)=0.5*X можно безболезненно умножать на два (или прибавлять 0.5), а вот на 10 умножать (или прибавлять 0.8) без ограничения уже не выйдет. Обобщим вновь: чем ближе значения исходной функции к границам диапазона, тем более "мягкими" должны быть преобразования для того, чтобы оставаться обратимыми. И, наконец, последнее. Выше я показал, что последовательное применение двух преобразований (прямого и обратного) не совпадает в "цифровом" случае с исходным результатом, т.е. с тождественным преобразованием, которому в математике равно последовательное применение прямой и обратной функции. Но если это справедливо даже для тождественного преобразования(частный случай), то совершенно очевиден и более общий случай ЛЮБОГО преобразования, являющегося математической комбинацией двух других: если "в математике" А(В(...))=С(...), то в общем случае "в цифре" A(B(...)) НЕ РАВНО С(...). Иными словами, если к одной и той же цели "математически" можно придти разными путями, то эти же пути "в цифре" дадут строго говоря РАЗНЫЙ результат.
|