Матросов А.В. Maple 6. Решение задач высшей математики и механики (1185909), страница 71
Текст из файла (страница 71)
Аналитическая геометрия и линейная алгебра ЗВ5 7.3. Линейная алгебра Одной из первых задач, решаемых в курсе линейной алгебры, является задача решения системы линейных алгебраических уравнений. Существует много способов ее решения, но классическим считаются два — метод Крамера и метод исключения Гаусса.
Первый в настоящее время практически не используется из-за накопления ошибок округления при реальных вычислениях на подмножестве вешественных чисел с ограниченной мантиссой, хотя, справедливости ради, следует заметить, что при вычислениях в Мар)е подобной проблемы не существует, так как пользователь всегда может увеличить количество цифр в мантиссе используемых чисел, присвоив системной переменной 01о1пп требуемое значение.
Метод Гаусса широко используется не только в учебных„ но и в практических вычислениях, поэтому с него мы и начнем демонстрацию решения задач линейной алгебры. Задача 7.5 Дана система линейных уравнений Зх, +2х. +х, =5 2х, +Зх, +х, =1 2х, +х1+Зх, =(! Доказать ее совместность и решить методом Гаусса Решение. Неоднородная квадратная система линейных уравнений совместна при любом векторе правой части, если определитель, составленный нз ее коэффициентов (он называется определителем системы), не равен нулю. Проверим это условие для нашей системы, Прежде всего определим на рабочем листе матрицу системы л и вектор правой части в: > Л:=пагг1х (3,3, ( (2, 1, О], (-3, 4,0], [-2, 1, 2) ) ) > В: епессоп (3, (5, 1, 11] ) В:= [ 5, 1, 1 ! ! Вычислить определитель в Мар!е можно, обратившись к команде реп() паКЕта Шпп1д ИЛИ НаПИСатЬ рЕКурСИВНуЮ ПрОцЕдуру ВЫЧИСЛЕНИЯ ОПрЕдЕЛИтЕЛя разложением, например, по первому столбцу.
Пример 7.2 содержит текст процедуры вычисления определителя квадратной матрицы. > оеп. паепгх:=рпос(а::паепдх) 1оса1 1,а,п,аеп,с; а мп Часть д Математика 386 ыс='11сса1д/конбаз' (а); ц:='11ла1с/со1б1ы'(а)с 1Г ы с> ц С)сел естес("Матрица $1 должна быть квадратной", а)) елб 36; 1Г са = 1 С)сец тегцтл(а [1, 1! ) ' елб 11; бег:.=О; Гог с Гсот 1 Со лс бо с:='1саа1д/с(е1со1з'('1наа1д/бе1тонз'(а,'..с),1..:); бесс=беге (-1) " (1+1) *а[1, 1) *бег тат стх (с) ецс) с)о; елб ртосс В первом операторе тв процедуры бес лсаст1х осуществляется проверка, является ли переданная через формальный параметр а матрица квадратной.
Далее проверяется размерность матрицы — если она равна 1, то процедура завершает свое вычисление, возвращая в качестве определителя значение его единственного элемента. Если размерность больше единицы, то в цикле го вычисляется определитель матрицы разложением по первому столбцу. На каждом шаге цикла строится матрица с вычеркиванием )цй строки и первого столбца исходной матрицы а, определитель которой называется минором элемента а) ) и обозначается М/), и по правилу разложения определителя по столбцу вычисляется сумма ~,(-!) а,, м,, ..! которая и является определителем матрицы а. Вычисление минора осуществляется рекурсивным обращением к разработанной нами процедуре бес тастах () . Теперь можно вычислить определитель матрицы А системы уравнений задачи: > беС лагтьх(А) 22 Замечание Наша процедура вычисления определителя матрицы бес сласт1х() работает без подключения пакета щца1д, так как а ее теле все команды этою пакета вызываются с использованием их полных имен.
Можно (даже необходимо) проверить полученный результат вычислением определителя матрицы с помощью команды бес () пакета 11ца1о) > н11)с(11ца1Ч)сбет(А); 22 Глава 7. Аналитическая геометрия и линейная алгебра Зо7 ;,43Фата~](~3.,!Фф~Мйв:'-~~~([тйМйийтйдффФЙ4~йй;;;:::, ' . ; фбззза1р~~МЙМ4%жф~хйй~':!'::::.:-':;:-:-.:"':::,:-'-":::":,-::-.'::;-':-::.":::::::-::.;=;- 21 г: ': > давал ао1яес =рвот (а::тагт х,Ьс:ссесгог) 1оса1 1,],)с,о,г,х,т; ЕЕ '1"па1дйоиб1т'(а) <> '11па1д,сяеогб1т'(Ь) сЬев етвог("Количество столбцов матрипы Е1 должно размерности вектора а2",а,Ь)с е11Е '11па1дйоиб1т' (а) <> ' '(сазддоотб1т' (а) гйесс етвот('"Иатрипа 11 должна быть квадратной", а,'; епс( ' Е; т:='11па1дЕгоис(1т' (а); Сс=д; о:='11па1д/сопсаг'(О,Ь)с х:=яесгог(вл; () Прямой ход Еог 1 Еголс 1 го и бо гс=1/с[1,1]с сс"=' 11па1д/ти1гои' (с, ь, г) с ЕЕ 1 <> т гпеп Еог ) Егот 1+1 го т бо г:= †с,1]с с:='11па1д/асЫгои'(с,1,], т); епс( с(о; епб ЕЕ; равнятьоя епб бо; () Обратный ход х[т]:=с[т,лн-1]; Еог 1 Етот т-1 го 1 Ьу -1 с(о х[]]:= с[1,тт1]-апт(х[)с]*с[1,)с],)с=(1ь1)..т)) епб бо) еча1(х); епб ртосс В прямом ходе метода расширенная матрица системы с (матрица системы с присоединенным вектором правой части) приводится к верхнему тре- Как и следовало ожидать, получен такой же результат, что и с помощью процедуры бег аггьх().
Определитель квадратной системы линейных уравнений не равен нулю, и следовательно, система имеет единственное решение. По условию задачи получить ее решение следует с помощью метода исключения Гаусса. В Мар]е нет специальной команды решения системы линейных уравнений этим методом, поэтому нам предстоит разработать собственную процедуру.
В примере 7.3 приведен текст процедуры давая во1че;; решения системы линейных уравнений методом исключения Гаусса. Часть д Математика 388 угольному виду с единицами на главной диагонали. В обратном ходе в локальном векторе х процедуры вычисляется вектор решения системы, который и является ее возвращаемым значением. При приведении матрицы к верхнетреугольному виду в двойном цикле используется команда ецгг ПаКЕта 11па1Ч, а ПрИ ПОСЛЕдОВатЕЛЬНОМ ВЫЧИСЛЕНИИ ЭЛЕМЕНТОВ ВЕКтОра рсшения — команда зивм. Эти команды реализуют циклы, которые при разработке в другом языке программирования, например, Гопгап или С, пришлось бы программировать явным образом.
Итак, у нас все готово для решения системы уравнений — ее матрица и вектор правой части заданы, процедура метода исключения Гаусса разработана, и остается только получить решение: > зо1:=Часзз зо1~е по В~ Полученное решение следует обязательно проверить: еча1та(дг. ь>1~; еча1те',В); 15,1, П~ 15, 1, 11] Вычислив произведение матрицы системы л на полученный вектор решения ь>1, ВИДИМ, Чтс рсэуЛЬтнруЮШИй ВЕКтср ПОЛНОСТЬЮ СОВПадаЕт С ВЕКтОрОМ правой части, а значит найленное решение верное.
ДЛя ПрОВЕрКИ МОЖНО ВОСПОЛЬЗОВатЬСя И КОМаНдсй 1~пзо1че(~ ПаКЕта . которая решает не только квадратную систему линейных уравнений, но и общую систему линейных уравнений с числом переменных, не обязательно равным числу уравнений. Первые два параметра этой команды представляют матрицу системы и вектор правой части. третий параметр является именем переменной, в которой будет содержаться по завершении выполнения команды ранг матрицы системы: > 11пео1чецпв, 'гез') > гею Иногда возникает необходимость отображения преобразованной матрицы системы на каждом шаге метода Гаусса. Это можно реализовать, добавив в нашу процедуру третий параметр, управляющий печатью промежуточных ЗНаЧЕНИй — ЕСЛИ ОН раВЕН сгсе, тО ПрОМЕжутОЧНЫЕ рЕЗуЛЬтатЫ ПЕЧатаЮтея, если равен га1зе, то нет. Текст подобной процедуры приведен в примере 7.4.
звр Глава 7. Аналитическая геометрия и линейная алгебра > дацзз зо1че рп1птз=ртос(аззпзаьп1х,ьзззгессоп,зсерззьоо1еап) 1оса1 1, 3, )с, с, и, х,гпз 1г '11па1д/гонб1пз'(а) <> '1зпа1д/честите'(Ь) СЬеп еггог(бнолнчество столбцов матрицы Ъ1 должно равняться 1 размерности вектора $2",а,Ь)з е111 '11па1с/гоыб1пз"(а) <> '11па1д/со1бзп'(а) Спев еггот("Матрица $1 должна быть квадратной", а)з епб зтз пс ='11па1д/тоыбзпз' (а); с:=а) сз='1зпа1О/сопсаг'(с,Ь)) хзгееспог(ы)з $ Прямой ход 1ог з.
з гот 1 Ьо пз бо и:=1/с[1, з.! з сз='11па1О/пзп1поы' (с, з.„т) з зт з <> зп СЬеп тот 2 тсопз 1е1 со пз бо т:=-с[в,з.)з сз= 11па1О/аббтон (с,1,1/и) епб бог епб 1гз 11 зсер сьев ртзпс(еча1(с)) епб 11) О добавлен епб бог () Обратный ход х[пз)с=с[аз,гпь1)з тот з ттопз пз-1 то 1 Ьу -1 бо х [1 ): = с [ 3., пн 1 ) — зсзп (х [ К) "с [ 1, К), К=. ( з е1 ) .. гп) г епб с1оз еча1 (х); епб ртосз > зо1з=сацзз зо1че рт1пп(А,В,тпце)з ! 1 — О 2 !1 Π— О 2 О 2 2 17 2 16 Результаты построения решения нашей задачи с печатью промежуточных результатов представлены ниже: Часть!!. Математика 390 1 1 2 5 О 2 О 1 О 17 11 ! 5 17 О 1 О 11 71 О О 1 11 у=Ах Здесь у и х представляют и-мерные векторы двух пространств, а матрица А является матрицей линейного преобразования одного пространства в другое.