Искусство программирования на Си (984073), страница 53
Текст из файла (страница 53)
меже~в использовать ее в любом разговоре о линейной алгебре, даже если не имеете о ней никакого представ- ления. Однако, квк и во многих рругих элементах мате- матики, это просто общепринятое название. Дпя непосредственного вычисления определителей матричная библиотека не использует свойство умножения строки на константу, в умножает на константу свм определитель. Однако далее в этой <паве определитель тоже косвенно вычисляется в процессе обращения матриц, и далее будет использоваться это его свойство.
сопл!<)Ь РИСУНОК 17.13. Ре<иение с' с<с<я<няню определителя. хв т де1А Таблица 177Е Гауссоао исключение. о этой главе лая решения систем уравнений нс используется подход, изображенный на рис. 17.13, однако в большинстве учебников по линейной алгебре и матрицам рассказывается о рсшснии уравнений именно таким методом. (Нослс этого авторы у <сбников этот метод нс используют, поскольку он малоэффективен.) На рис. 17.14 изображен другой подход к решснию системы уравнсний.
Исходная матрица Если лвс строки матрицы переставляются, то определитель матрицы, полученной в результате такой перестановки, имсст то жс абсолютное значение, что и оригинальная матрица, но знак определителя меняется на противоположный (рис.
17.17). 1.00 5.00 1.00 200 2.00 6.00 3.00 7.00 5.00 -3.00 4.00 8.00 4.00 строка Ос перестановка строк г = (-1) де1 0 0 7.00 3.00 5.00 5.00 1.00 1.00 = ( — 1) 2 3 4 = -24 8.00 4.00 7.00 2.00 4.00 Мз<рнхз Д рознером 2к2 имев ооределн<ень, роений вехнчнне Иногда (особенно в инженерной терминологии) сдиа, з — вози РИСУНОК 17.17.
Определитель матрицы, е которой 2.00 3.00 -3.00 4.00 личная матрица называется унитарной и обозначается иврит Д римером Зхэ нмт< треденн<екь ровный земные строка О, столбец О. Матричная ..! иапо лини днлиннитеимые теиаминегние регланы $ Часть й! — Глава 17 Сушествуст соблазн проигнорировать возможность при расчете определителя точность булат выше. Котла дес = -сев! перестановки строк. Если вы это сделали, то рано илп выполняется перестановка строк для того, чтобы помс- гееокв две; поздно, выполняя эти операции, вы столкнстссь с мат- стить л!аксииа.ьный элелзент из нижней (подаиагоназь- ) рицсй, которая имеет нуль на диагонали и не позволит нои) половины матрицы в положение велушего элсмен- веаг(с чо1О вам работать с треутольной матрицсй (по крайнси морс, та, то такой метод называется га»есава исключение с ВЕЕ 1си ХЕГО(ната!к т и Е, 1ОЕ СО1) без перестановки строк).
Пример такои матрицы разме- частичной максимизацией вед»и(ега злеменгла (Сааза(ап ( ром ЗхЗ изображен на рис. !7.)9. е(гзл(лазал гмт(~ раг!!а! речи! тахглиеаооп). 1вь 1, З; В матричнои библиотеке имеется функция т йе(о оооо[в рзчос, евссок) () () 1 дзя расчета определителя.
Вспомогательные функции 1 1 1 ьзчаргоизо и зе! )озч лего() используются соответствен- 1 2 2 но для перестановки указанной и велушей строк н при- ток (1 = со1; З < Е->со1в; )++) бавляст или вычитает числа ведушей строки, чтобы Е->ча1[вдх(Е, з, 3)! Еассог и Е->ча1[вдх(Е, со1, )!); получить каждый элемент под диагональю в соозвет- Матрица на рис. !7.)9 имеет определитель, равныи ствуюшем столбце равным нулю. -(, но ее нельзя представить в форме диагоназьной или Код приве сн в листинге )7.9; ф кт ч ) треугольной матрицы без перестановки строк. рованис на сингулярность проводится с использованиЕше одна причина перестановки строк — это Увели- ем концепции нормализованного алределиглеля (паггла((еед вгаг(с чозд чение точности.
Если ведуший элемент — это элемент де!елен(линг», о котором буд т а к н в сеген(лил, о котором удет рассказано в слелуюшем в столбце с максимальным абсолютным значением, то ра~д~л~ ( РаЗДЕЛЕ 1вс Матричная ориг/гнет и на Глава 17 Донгннигнегьгеяе теиатичегкиерая)егь я Часть 10 ), то матрица булст плохо обусловленной. Нормалнзо- ОбратНая МатрИца Листинг 17.10. Обращение матрицы. ванный определитель дает возможность более объсктив- илтвгх т * но прслставить, насколько опрслслитсль близок к нулю ПРоцссс вычислениЯ обРатной матрицы очень похо~ на в гпиегне(ИХТВ1Х Т * и, ИХТВ1Х Т ' а, и является ли матрица плохо обусловленной.
Этот метод процесс вычисления опрслелитсля. Обратная матрица допЫе «лег, аопЫе ервз1оп) хор шо работа т в б л шинствс случаев, однако пользо- А опРеделяется как матрица А, которая при Умножс! ( нии на А ласт единичную матрицу (рис. 17.21). Это сшс /* Рассчвтывает обравеннув матрицу с вспользованвем вскпвчении гаусса-диордана с частвчноа ватель должен знать, что иногда даже этот подход может давать обманчивыс результаты. В этих случаях может быть олно исключение из свойств УмножсниЯ матРиц. 1пс гоы, со1, ныар, нхдп; полезна проверка по норме Евклида обратной матрицы РИСУНОКТ)21 допЫе рзиог, е попа; дд-1 д-тд (хотя этот способ нс реализован в нашей матричной Сеайстааоаратнойматричы.
иатвтх т «1 - воььт библиотеке, прилагаемой к этой книге). /*'« Ход проверка овибкв ве показав *«'/ Вернемся к нашей системс линейных уравнений, е поги = в е поги; зьланных в матричной форме (рис. 17.22). «дне = 1.0; )дог<я)/ РИСУНОК 1220. <е! Для рсшсния этого матричного уравнения, сели нам н1дп = 1; тня ет» известна матртша А ', умножаем обе части уравнения нп Норма Евклида. /' разместить 'червовую матрацу для иввертврованвя '/ /„в( А '. Результат показан на рис.
17.23. Итак, сели вы выполняете таким жс образом умножение строки, перестановку строк и исключение внслиагональных элементов лля А и /, то моткетс одноврс- /» установвть целевую матрацу дпи единвчвой матрицы */ Термины Еянлидояы нормы и нормолизоаанный опре- мснно преобразовывать А н / и /в А . Если вы будете А / / А'Е и = в авв1дп 1аеп1111(и)1 делитель — зто немного необычные назяиння;и опять хче, Часть (и ч, зпг гоч, 1пе вчар] ( 1!)! Г->ча1[вдх(Г, виар, 7)] геар; 1)) ч->ча1(вдх(ч, вчар, 1)) гевр; Дотиншнегьные тематическиерая]егы а(инрични«иридькетики 1 Глава 17 йассог ' Г->ча1[вдх(г, со1, 7)]1 РИСУНОК !724. Ошибки в числах с плавающей точкой накапливают ч->ча1(адх(ч, з 1)1 7'еии ние систем и могут маскировать правильные результаты при про(ассах * ч->ча1[вдх(ч, со1, 7)1; АН=Ь ~к=А Ь лингнны«ураенений ведении таких расчетов, как инвертирование (обращс] с ийр имением матрицы.
ние) матрицы. Например, при вы<итаннн двух почти одинаковых чисел в полученном результате теряется 1!маются несколько более прямолинейные методы точность. Таким же образом при сложении и вычитании Бене«с ча)д РСЩСНИЯ Снетсм ЛИНЕИНЫХ )РаВНЕНИИ (Как ГалаРИЛаьн В ДВУЛ ЧИСЕ1, КатаРЫЕ Отпн 1аЮГСЯ На ПОРЯДОК ВЕЗИЧИНЫ, ачарг в (На ача гочв2 Ната1Х 7 * Г, Нагагг Ч * разделе, посвященном определителю). Их основное прс- очень близкой к используемой компилято)юм базовой ( зпс ]1 им« щество заключается в том, гго они позволяют легко и точности, тоже теряется точность. В главе 24 подробно доил)е Геар; непосредственна исправлять возможные ошибки. рассказывается о распространении ошибок в числах с йог (7 а; 1 < Г->со1БГ 1++) фУнкциа Язь|ка С д- Я Решеннл сиате лннс н11« плаваюшеи точкои Геар = Г->ча1[вдх(Г, гоч, ур1лнсний прсдстаазена в листинге !7.)1. Г->ча1(адх(г, гоч, 7)1 Поскольку мы хотим получить от этой функции ПРИМЕЧАНИЕ рсл1гние системы линейных )равнений, та па оканча- Например, если максимальная то~ность чисел состнвпяГевр = ч->чаЦВдх(ч, гоч, ч->ча1[адх(ч, гоч, 7)) нин асчета вычисленная обратная матрнпа нас боль- ет четыре Значащие цифры, то Разница межДУ 100,0 и р шс пе интересует.
1рункция назначает и асваболлает 99,95 '"о'ке' (я знвиси"'ости ог 'о'о, кн» зтн операция выполняется математической библиотекой) давать 0 ипн вр е у руктуру в еченн ю ст укт МАТИ)Х Т для х ансния аб ат- О,1; однако ни то, нн другое нас не устраивает.(Конеч- ) нап матрицы. К тому жс она вызьгваст ф)'нкцию но, можно сделать так, чтобы конкретная магематичесщ йьчегве[), которая также размещает и освобождает кая библиотека могла «ранить допопнитепьны цифры точ- $Щ Дикиекиегьньиые тем итичегл ие ри где»ы Уитричиие ирифыетики » Часть и! Глава 17 ИСПраВЛЕНИЕ ОШИбОК Прн РЕШЕНИИ СИСТЕМ продолжать. В конце концов, в процессе произойдет Листинг 17.12.
Исправление ошибок при решении систем линейных уравнений. линейных уравнений ошибка, вызванная лзльнсйшим уточнснисм. Этот процесс реализует функция С ш есхоие(). в есво1че(нлтвтх т ' х, нлтвтх т * а, нлтвтх т * Если есть подозрение о наличии существенных ошибок Итсрншзи прололжаются до тех пор, пока убывает свк- бопЫе ервз1оп) в решении системы линсиных уравнений. можно при- лидове норма.(В этой фупкпии лля избежания нскон- ( мснить простой итерационный подхол к исправлению тролнрусмых вычислений жестко закодированоограни- /» Реиает линейное уравнение Ах=Ь атвосвтепьно х с обрааением матраца и атератввнмм исправлением этих ошибок.
чснис в 10 итераций. На практике (О нтсрнш»й никогда оиабок»1 нАтв1х т *а1пт = ноььп нс понадобятся, олнако если необходимо увеличить НЛТВХХ т *Ьргзве = НПЬГЫ ПРИМЕЧАНИЕ этот прслсл, цикл гог объединяют с пределом, указан- нлтххх т »ас1 = нпььп значительность ошибки зависит ат того, кто ее апенина- ным в комментарии.) код этой фу кции приВсден В НЛтдхХ т *псих = НОЬЬ; ет. В одних спучзяк 2% точности (ипи меньше) будет (7 (2. нАтд1х т»левад) = нпьш листинге (7.