Искусство программирования на Си (984073), страница 54
Текст из файла (страница 54)
(2. более чем достаточна. В других случаях даже 10 ипи 15 Нвтдтх т »егг = НПЬЬ| значащих цифр точности, гарантированных стандартом С, зпс Ыегагуапг может быть недостаточно, даже если не происходит СоаЫе ае)епага, пенал)енота, Сегз распространению ошибок. Множество специалисток полагают, что одной ипи двух итерации достаточно дпя этой технологии исправления ввеггсоае = АььосРА1ьз Полученный в результате расчета Вектор х; возврн- ОШИбОК. ОДНЭКО ПРИМЕНЕНИЕ Этай тЕХНалаГИИ ИЕ ПРИНЕ- сет никакого вреда да тех пор, пока не будет достигнут шасмый нкциси пз зо(те, нс является точным рсшсникой-нибудь специфический критерий (типа уменьшения хт (!(Ьрг1ве а пеи(Ь->ганн, Ь->со1н))) ( нисм.
Подставляя х обратно в исходнос матричное уран- евклидовой нормы) можно также испапьзаяеть и другие ваеггсаде = АЬЬОСРА1ьг пенис, мы получим новый вектор правых частей критерии, например, уменьшение мэксимапьнага ебсадосо епл1пдз системы Ре отличающийся от псрнонпчвльного (г пютнаго значения величины хес(т Доотеи от ел ииые те оптические рот!ты е часть и! м еппзпв: а (гее(егг)! в (гее(пеяпв)) а атее(печа)! в атее(ад))! в (гее(вргзае) в (гее(а(по)! геепгп х!) ° Используйте полностью альтернативный подход и РЕЗ)ОМЕ найдите коммерческую или свободно доступную библиотеку и реализуйте ее дзя использования на В этой главе были рассмотрены основные идеи простой своей платформе.
арифметики матриц и пути реализации этих илеи в матричной библиотеке А)ЧЫ С. Д ругие подходы Были описаны основные проектнь<с принципы и рассказано о сложении и вычитании матриц, а также об Есть свободно доступный пакет, который называется их транспонировании и инверсии. Зля этого был исйеграг)е, написанный много лет назад на языке пользован метод расчета определителя квадратных мат- ГОКТКА)Ч.
Он во многом является эталоном для рас- риц и способ опрслслсния относительной (или нормачетов по линейной алгебре. Если вы имеете доступ к лизованной) абсолютной величины определителя. колшилятору языка ГОКТКАХ и ваш компилятор язы- Читатель узназ, как использовать матричную библиоНа этом заканчивается так называемая техническая ° Оптимизируйте арифметику индексного исчисления ка С поддерживает вызываемый объектный код, нани- теку (в частности, функцию инверсии матриц) лля по- часть повествования. Далее читатель найдет ряд реко- для расширения возможностей реализации.
санный на других языках, то можно реализовать набор иска решения систем линейных уравнений. мсндаций и советов по усовершенствованию матричной интерфейсных функций-оболочек и прямо обрашаться Поскольку бывают врожденные погрешности (или ° Используйтс новые возможности для линамическобиблиотеки, и узнает, какое сшс сушсствуюшсе про- к подпрограммам пакета ))прас)г. ошибки), происходяшие при инверсии матрицы, суьцсго размсшения двумерных массивов, чтобы сделать граммное обеспечение можно при этом использовать.
Сушсствует множество других коммерческих или ствуют и врожденные ошибки при поиске решения сиописания элементов более естественными В качестве свободно доступных пакетов, которые можно исполь- стсмы уравнений. Матричная библиотека используется Д альтернативы замените динамическое размешение мадьмНЕйЩИЕ НыаПРмввмдЕНИ(( РЕбОТЫ яэ у! Осгро болг в о лиг!гиов ыв го го во о в Глава за В ЭТОЙ ГЛАВЕ Сжатие данных Джек Клейн ° Применение С к явлениям реального мира ° Сжатие данных Типы Окатив Таблица 18.1. Некоторые распространенные типы сжатых файлов.
Тии файва Даииые .гуго; оа "" '.::*,*'.' , 'в„„,"уз э-. "оао,* ',, гв о *:,",."'~,-;;;,:,:,з"',;~:,г „"~ ва' ' „." .о':;;.',:; ":,',"ф-". Обработка цифровых сигналов ° Выявление и исправление ошибок ° Алгоритмы управления Р!гу ° Специализированные пропессоры цифровых сигналов В этой главе описаны некоторые методы, примени- описания компьютеров, встроенных внутрь устройств Следует отметить, что в значительной части примеров кода, прелставленных в этом разлсле, очень широко используются операторы языка С побитовой обработки и сдвига.
Если вы не знакомы с этими особенностями языка, то. прежле чем приступать к работе с кодом, обратитесь к главе 5. Сжатие ланных — одна из клю <свых технологий современной сети !пгегпег. За исключением кола НТМ! самих %еб-странигц почти все передаваемые по сети %%% данные являются сл,атыми в том или ином формате В табл. !8.! приведены лишь некоторые из форматов сжатия, которые можно встретить в %%%. Алгоритмы сжатия основываются на распознавании последовательностей и повторений в исходных несжатых данных. Если ланныс одновременно шифруются и сжимаются, то обычно конечный файл имеет меньшие размеры, если сжатие выполняется ло шифрования.
Это связано с тем, что при шифровании удаляются-последовательности и повторения, нзличие которых в конечном файле и обусловливает эффективность алгоритмов сжатии. Все форматы сжатия можно разделить на два типа: без потерь и с потерями. ° Сжал~с без ггоглврь является полностью обратимым. При распаковке слзтого представления ланных результат оказывается точным дубликатом исходных данных перед сжатием.
Важно поминать, что никакие методы сжатия без потерь нс могуч гарантирован ювлиывеенгш,лазы„,юл„„,ррдб„„согппогвлиовьчоло Часть П! домпиипипли~ е пмипп~ииеп игра Зепи повторении, присутстнуюших в данных, которые подлежат кодированию. Эти гшгоритмы мого обес- печить наибольшие обшие коэффициенты сжатия лля произвольных форматов данных. ° Фиясираааииые алгоригплгы сэгагпия основываются на предварительно сделанных допущениях относительно данных, которые должны быть закодированы При применении к любым произвольным форлгатам данных этп;шгоритмы нс обеспечивают таких нысохих хг1эффицпснзов сжапш, ках адаптируемь|с алгоритмы Но прп гричснснпп к точу типу данных, для которого они были разработаны, эти алгоритмы часто могуч обеспечить более высокие коэффнписнты сжацпц ~см зтаптирусмые метолы обшего нззнзчения. Наиболее часто используемые алгоритмы сжатия из документов, ко орые они сканируют, перелают и гринимают или воспроизводят.
Многие функции протокола Г4 предназначались для того, чтобы обеспечить разработку сравнительно недорогих факсимильных аппаратов в те времена, когда процессоры бьши значительно белес дорогими и менее произвсгдительнымн, а память — более лорогостояшсй, чем н настояшее время. Факсимильный аппарат мог иметь всего несколько тысяч байтон памяти. В то время как для современного типичного настольного компьютера э~о не имеет особого значения, память — дефицитный ресурс в типичных встроенных системах, таких как самостоятельный фзксимильныи аппарат. В примерах программ кодирования и леколирования по протоколу Т.4 будут проиллюстрированы некоторые технологии, которые позволяют сократигь объеч используемой памяти в подобных приложениях.
Факсимильное изображение Зля понимания кодирования н сжатия информации по стандарту Т.4 презкде всего необходимо понять, как изображение страницы выглядит для факсимильного аппарата в процессе сканирования. Воспользуемся небольшилг фрагментолг из самой известной программы на языке С вЂ” "Нейо хцог!о" — и взгяянсм на нсгсг г:юзами факсимильного аппарата. На рпс. гХ.! показано, как слово "Нейо", напечатанное и сканированное или визуализированное с повышенным разрешением цюифтом размером 9 пунктов, выглядит лля факсимильного аппарата или программы. Ойрааоп ха ии4рппиг сигма пм Глава 48 ИИ знака можно без проблем хранить любую колгбинзцию битов ! и О, представляющих белыс и черные пнкселы. 11ажс если конкретная реализация имеет типы символон, содержашие более восьлги битов, в кзжзолг символьном значении без знака удобно хранлп ь восемь битон данных, поскольку закис устройстна, как ОЛКТ, используемые прн перслаче факсимильных сообшений, как пранило, олновреченно принимают по восемь битов.
Обычно для оцифровки изображений в сканерах факсимильных аппаратов и других цифровых видеоустройствах, таких как настольныс сканеры и цифровые калзеры, используются устройства Сйагяе Саар!егГ !Уемсез (ССГУ вЂ” устройства накопления заряла). В факсимильных аппаратах особенно часз о используется усгроиство, нагывасчое хпигпалгииым сканером изобразкелия (Саигагг Ьпайс .Усааег — С/Я, разработанное сггецг~ально для факсов, но являюшесся всего лишь специальным типом ССП.
Зля каждого пиксела в изображении устройство ССО выводит аналоговый сигнал в нгиде напряжения, Ве, пдп иг1,, ~югхпх хх ил .интэте . в .;эхо! инззги зопоаипц~ ь...,. —, Дава ва а ~а ~ иные меиаяииеек ие ра»де ~ ы Обривав»а иифраеы» еи иа ае ! Масть !и Глава 19 Можно было бы перелавать изображение факси- Все остальные 209 сил!вольных значений ввз!8пее( Обратите внимание, что, несмотря на выражение /7ос|едователлвоси!ь Белое Чериое мильного сообщения в виде простых двоичных скани- сваг содержат Охгг для остальной части пустой белой "коловые слова", колы Т.4 имени переменную длину от кодовое слово кодовое слово рованных строк, как описано выше, — по 216 окгетов сканированной строки. 2 ло 13 битов и никак не связаны с размером слов про- 16 101010 0000010111 (восьмерок) на строку, что при стандартном разрешении Первый шаг при кодировании каждой сканирован- цессора и!и с каким-либо иным значением фикснровансоотвстствовало бы 246888 октетам или !975!04 битам ной строки — шо вычисление текущей длины.
Начиная 0000011000 при максил!альном количестве сканированных строк с самого левого пнксела каждой сканированной строки, Одним из возможных способов присвоения кодовых 0000001000 страницы разл!ера А4, равном !143. При типичной ско- выполняется подсчет количества последовательных беслов последовательностял! пикселов было бы наличие 0001100 00001100111 рости передачи данных факса, равной 9600 бит/с (би- лых пикселов в строке до конца строки или до первого !729 кодовых слов для каждой возможной последова- 2О 000! 000 00001101000 тов в секунду) для передачи изображения потребовалось встреченно!о черного пиксела.
Пикселы в строке люж- тельности белых пикселов ллиной от 0 ло 1728 и 1728 21 0010111 00001101100 бы приблизительно 205 секунд или почти 3.5 минуты. но описать сериями чисел, представляющих количесзво кодовых слов -- для последовательностей черных пик- 22 0000011 00000110! 11 Лазке при скорости передачи, равнои !4400 бит/с, обес- пнксслов олного цвета, за каждым из которых следует ослов. Это привело бы к очень длинным кодовым пос- 29 0000100 00000101000 псчиваемой в более современных факсимильных аппа- символ % для белых пикселов (ли!п1е) или  — для чер- леловательностял! и ограничило бы достижилеую степень 0101000 00000010111 ратах, время передачи все же составило бы около 137 ных (ЫасЕ).