Mathcad решение системы уравнений методом крамера

26. Решение системы линейных уравнений

А) Последовательность действий для решения системы линейных уравнений методом Крамера такова:

Q создать матрицу коэффициентов системы линейных уравнений, например, (см. краткие теоретические сведения темы 2);

Q создать вектор свободных членов, например ;

Q с помощью оператора «:=» создать матрицу, равную матрице коэффициентов, например, ;

Q заменить в созданной матрице первый столбец вектором свободных членов, используя операцию выделения столбца матрицы, например, или (в зависимости от значения переменной ORIGIN);

Q аналогично из матрицы коэффициентов создать матрицу, в которой второй столбец заменен вектором свободных членов, затем матрицу, в которой третий столбец заменен вектором свободных членов, и т. д. (количество таких матриц определяется количеством неизвестных в системе уравнений);

Q найти первый корень, разделив определитель матрицы с замененным первым столбцом на определитель матрицы коэффициентов, например: ;

Q найти остальные корни системы уравнений аналогично.

Б) Последовательность действий для решения системы линейных уравнений матричным методом такова:

Q создать матрицу коэффициентов системы линейных уравнений, например, А (см. краткие теоретические сведения темы 2);

Q создать вектор свободных членов системы линейных уравнений, например, B;

Q получить решение системы с помощью функции Lsolve, параметрами которой являются матрица коэффициентов и вектор свободных членов, например:

(решение также можно получить, умножив матрицу, обратную к матрице коэффициентов, на вектор свободных членов: );

Q вывести полученный вектор, содержащий корни системы, с помощью оператора «=».

В) Последовательность действий для решения системы линейных уравнений блочным методом такова:

Q задать начальные приближения для всех неизвестных, входящих в систему уравнений;

Q набрать ключевое слово Given;

Q ниже слова Given набрать уравнения, отделяя правую и левую части символом логического равенства «=» (см. краткие теоретические сведения темы 6);

Q набрать функцию Find, подставляя в качестве аргументов имена неизвестных системы;

Замечание. Корни системы уравнений, полученные разными способами, должны совпасть.

Пример 6.3. Решить систему линейных уравнений


методом Крамера, матричным и блочным методами. Сравнить полученные результаты. Начальные значения корней при использовании блочного метода принять равными 1.

Изучить возможности решения систем линейных уравнений в пакете Mathcad.

Дата добавления: 2015-07-23 ; просмотров: 4824 ; Нарушение авторских прав

Порядок выполнения лабораторной работы:

1. Внимательно изучить теоретический материал по работе с матрицами и решению систем линейных уравнений в Mathcad.

2. Повторить соответствующие разделы линейной алгебры.

3. Проработать рассмотренные задания.

4. Решить все задачи для самостоятельного выполнения. Номер варианта указывается преподавателем.

5. Составить отчет по лабораторной работе.

6. Защитить лабораторную работу.

Содержание отчета по лабораторной работе:

2 Задание для самостоятельного выполнения оформить следующим образом:

а) Условие задачи;

б) Ход решения (для каждой задачи);

Работа с матрицами в Mathcad.

Большинство операций с матрицами в Mathcad можно выполнить тремя способами – с по­мощью панелей инструментов, выбором операций в меню или обращением к соответст­вующей функции.

Панель операций с матрицами и векторами Matrix находится в панели математических ин­струментов (рисунок 1):

Открыть эту панель можно щелчком по соответствующей кнопке . За каждой кнопкой панели закреплены функции. Рассмотрим лишь необходимые нам кнопки и их функции:

определение размеров матрицы;

ввод нижнего индекса;

нахождение обратной матрицы;

вычисление определителя матрицы;

выделение n-го столбца матрицы М (нумерация начинается с нуля).

Для того чтобы выполнить какую-либо операцию с помощью панели инструментов, нужно выделить матрицу и щелкнуть по кнопке операции либо щелкнуть по кнопке в панели и ввести в помеченной позиции имя матрицы.

Меню символьных операций с матрицами (рисунок 2) содержит три функции – транспонирование, обращение матрицы и вычисление определи­теля матрицы. Чтобы произвести эти операции через меню нужно выделить матрицу и щелкнуть в меню по строке операции.

Функции, предназначенные для работы с матрицами, находятся в разделе Vector and Matrix в пункте «Функция» в меню «Вставка» (рисунок 3).

Рисунок 3

Рассмотрим ряд необходимых нам функций.

Функции определения матриц и операции с блоками матриц:

matrix(m, n, f) – создает и заполняет матрицу размерности mxn, элемент которой, располо­женный в i-той строке, j-том столбце, равен значению f(i, j)

diag(v) – создает диагональную матрицу, элементы главной диагонали которой хранятся в векторе v;

identity(n) – создает единичную матрицу порядка n;

augment(A,B) – формирует матрицу, в первых столбцах которой содержится матрица A, а в последних – матрица B (матрицы A и B должны иметь одинаковое число строк);

stak(A,B) – формирует матрицу, в первых строках которой содержится матрица A, а в по­следних – матрица B (матрицы A и B должны иметь одинаковое число столбцов).

Функции вычисления числовых характеристик матриц:

rows(A) – вычисление числа строк в матрице A;

cols(A) – вычисление числа столбцов в матрице A;

max(A) – вычисление наибольшего элемента в матрице A;

min(A) – вычисление наименьшего элемента в матрице A;

rank(A) – вычисление ранга матрицы A.

Функции, реализующие численные алгоритмы решения задач линейной алгебры:

rref(A) – приведение матрицы к ступенчатому виду с единичным базисным минором (вы­полняет элементарные операции со строками матрицы).

lsolve(A,B) – решение системы линейных уравнений AX=B.

Задание 1. Задайте матрицу А с использованием панели операций с матри­цами и векторами Matrix и матрицу В того же размера с помощью функции определения матриц. Найдите 12А-16В (рисунок 4).

1. Задаем матрицу А с использованием панели операции с матрицами и векторами Matrix.

2. Задаем матрицу B того же размера с помощью функции определения матриц.

3. Находим 12А-16В.

Рисунок 4

Задание 2.Задайте матрицу С размера 4х3 любым из описанных выше способов. Найдите транспонированную ей матрицу с помощью панели операций с матрицами и векторами Matrix, а также с использованием меню символьных операций с матрицами. Решение задания приведено на рисунке 5.

1. Задаем матрицу А.

2. Находим транспонированную матрицу с помощью панели операции с матрицами.

3. Находим транспонированную матрицу с использованием меню.

4. Сравниваем полученные результаты.

Задание 3. Задайте матрицы P размера 6х8 и H размера 8х2. Найдите произведение матриц РН. Решение данного задания приведено на рисунке 6.

1. Задаем матрицу Р.

2. Задаем матрицу Н.

3. Находим произведение матриц РН.

Задание 4.Задайте квадратную матрицу D четвертого порядка и матрицу-столбец F с че­тырьмя строками любым из описанных выше способов, а также единичную матрицу соот­ветствующей размерности с использованием функции определения матриц. Найдите про­изведения DF, и ЕD (рисунок 7).

1. Задаем матрицу D.

2. Задаем матрицу F.

3. Задаем матрицу Е с помощью функции определения матриц.

4. Находим произведение матриц DF.

5. Находим произведение матриц DE.

6. Находим произведение матриц ED.

Рисунок 6

Рисунок 8

Задание 5. Задайте квадратную матрицу G четвертого порядка. Найдите обратную матрицу для матрицы G. Сделайте проверку. Решение задания на рисунке 8.

1. Задаем матрицу G.

2. Находим матрицу G -1 (чтобы получить результат в символьном виде после G -1 наберите знак символьных вычислений – стрелка вправо).

3. Для проверки находим произведение GG -1 .

Задание 6. Найти 15AB-29CE+D 3 -18FG т +38H -1 , где , , , , , , , E – единичная матрица соответствующей размерности. Решение задания на рисунке 9.

1. Задаем матрицы A, B, C, D, F, G, H.

2. Находим матрицу Е с помощью функции определения матрицы.

Рисунок 9

Векторные и матричные операторы и функции системы Mathcad позволяют решать широ­кий круг задач линейной алгебры. К примеру, если заданы матрица A и матрица-столбец (называемая в Mathcad вектором) В для системы линейных уравнений в матричной форме AX=B, то решение можно получить из очевидного выражения X=A -1 B.

Задание 7. Решить систему матричным способом.

1. Задаем матрицу системы А.

2. Задаем столбец свободных членов В.

4. Делаем проверку полученного решения подстановкой в уравнение АХ=В.

Кроме рассмотрен­ного матричного метода решения систем линейных алгебраических уравнений, существует еще ряд методов решения таких систем. Рассмотрим, каким образом реализуются в Mathcad методы Крамера и Гаусса.

Для нахождения решения методом Крамера необходимо научиться вычислять определи­тель матриц. Вычисление определителя матрицы в системе Matcad относится к матричным операциям и эту операцию можно выполнить несколькими способами: с использованием панели операций с матри­цами и векторами Matrix и с помощью меню.

Задание 8. Найдите определитель матрицы А четвертого порядка несколькими способами. Решение задания показано на рисунке 10.

1. Находим определитель, не задавая матрицы.

2. Задаем матрицу А

3. Находим определитель с помощью панели операций с матрицами.

4. Находим определитель с использованием меню.

5. Сравниваем полученные результаты.

Рисунок 10

Задание 9.Решить систему линейных алгебраических уравнений методом Крамера . Решение задания на рисунке 11.

Возможности Mathcad позволяют использовать метод Крамера не только при на­хождении решения невырожденной системы, но и для нахождения общего решения сис­темы, имеющей бесконечно много решений. Для этого используется нахождение определителя как функции, зависящей от свободных переменных.

1. Задаем определитель матрицы системы.

2. Находим определитель матрицы системы.

3. Задаем вспомогательные определители.

4. Находим вспомогательные определители.

5. Находим решение по формуле Крамера.

Задание 10.Решить систему методом Крамера. Решение задания на рисунке 12.

1. Задаем определитель матрицы системы.

2. Находим определитель матрицы системы.

3. Задаем вспомогательные определители.

4. Находим вспомогательные определители.

5. Находим базисный минор.

6. Определяем базисные и свободные неизвестные.

7. Задаем главный определитель, соответствующий базисному минору.

8. Задаем вспомогательные определители, соответствующие базисному минору.

9. Задаем формулы для нахождения базисных неизвестных, зависящих от свободных.

10. Находим решение по формуле Крамера.

Рисунок 11

Рисунок 12

Метод Гаусса в системе Mathcad можно осуществить с помощью функции rref.

Задание 11. Найдите решение системы линейных уравнений

с помощью функции rref. Решение задания на рисунке 13.

1. Задаем матрицу системы.

2. Задаем матрицу-столбец свободных членов.

3. Формируем расширенную матрицу системы с помощью функции augment.

4. Приводим расширенную матрицу системы к ступенчатому виду с помощью функции rref.

5. Выделяем последний столбец полученной ступенчатой матрицы с помощью кнопки определения столбца матрицы и получаем решение.

6. Делаем проверку полученного решения подстановкой в уравнение АХ=В.

Не всегда система линейных уравнений имеет решения, и даже если система имеет решение, то оно может быть не единственным. Для исследования систем линейных уравнений на совместность необходимо научиться находить ранг матрицы системы.

Задание 12.Найдите ранг матрицы размера 12х7. Решение задания на рисунке 14.

1. Задаем матрицу А.

2. С помощью функции rank находим ранг матрицы системы.

Рисунок 13

Рисунок 14

Задание 13.Исследовать систему на совместность. Если система совместна, то найти ее общее решение. Решение задания на рисунке 15.

1. Задаем матрицу системы.

2. Задаем матрицу-столбец свободных членов.

3. Находим ранг матрицы системы.

4. Формируем расширенную матрицу системы.

5. Находим ранг расширенной матрицы системы.

6. Выясняем, совместна ли система и сколько имеет решений.

7. Используя символьные вычисления Given-Find находим общее решение системы.

Внимание! Для того, чтобы решить систему с помощью символьных вычислений Given-Find необходимо

1) Ввести с клавиатуры Given;

2) Правее и ниже ввести уравнения системы, причем знак равенства в уравнениях вводится с помощью сочетания клавиш Ctrlи =;

3) Ниже с клавиатуры ввести Find, перечислив в скобках имена переменных, и знак символьных вычислений (стрелка вправо);

4) Щелкнуть по свободному месту в рабочем документе.

Возможен еще один способ решения системы линейных уравнений в Mathcad с помощью функции lsolve.

Задание 14.Решить систему линейных уравнений

с применением функции lsolve. Решение задания на рисунке 16.

1. Задаем матрицу системы.

2. Задаем матрицу-столбец свободных членов.

3. Находим решение системы с помощью функции lsolve.

Рисунок 15

Рисунок 16

Задания для самостоятельного выполнения:

N – номер варианта.

1. Найти 2AB-3C T E, если , , , Е – единичная мат­рица соответствующей размерности.

2. Найти обратную матрицу для матрицы

а) с помощью алгоритма нахождения обратной матрицы.

б) с помощью операции нахождения обратной матрицы.

3. Решить систему линейных уравнений а) методом Гаусса,

б) методом Крамера,

в) матрич­ным методом

.

4. Исследовать систему на совместность. Если система совместна, то найти её общее решение. Для однородной системы найти фундаментальную систему решений.

а)

б)

в)

|следующая лекция ==>
Введение|Изучить возможности построения кривых и поверхностей второго порядка в пакете Mathcad.

Не нашли то, что искали? Google вам в помощь!

MathCAD — это просто! Часть 4. Системы линейных алгебраических уравнений

Итак, мы с вами продолжаем изучать MathCAD — самую дружелюбную к пользователю математическую среду из существующих в настоящее время. Пока мы занимались тем, что изучали способы решения уравнений — трансцендентных и алгебраических, и теперь вы знаете, как их решать с помощью MathCAD’а в общем виде или численно. Как вы могли убедиться из материала третьей части, численное решение уравнений — не такая простая задача, как может показаться с первого взгляда, однако и не такая сложная, если построить график уравнения. Но просто уравнения — это, согласитесь, довольно скучно, потому что в жизни, как правило, уравнения по одиночке не встречаются. Поэтому сегодня мы перейдем к более сложной, а значит, и более интересной, теме — попробуем решать системы уравнений. Я сказал «попробуем»? Простите, пожалуйста — я, наверное, оговорился. Конечно, не попробуем, а научимся — потому что благодаря MathCAD’у можно быть уверенным в том, что подобные попытки увенчаются успехом. Готовы? Ну что же, тогда вперед.

Решение систем с помощью функции lsolve

Системы уравнений многие просто-таки ненавидят еще со школы — прямо как русскую литературу. Что ж, школа может привить отвращение ко многим вещам, которые без нее могли бы оказаться гораздо более интересными. Как и любая обязаловка, она убивает романтику изучения чего-то нового. Но теперь, когда вас никто не заставляет изучать решение систем уравнений, вы можете взглянуть на них с совершенно новой для себя стороны. И поможет в этом, конечно же, MathCAD.

Для обозначения систем линейных алгебраических уравнений у математиков есть своя аббревиатура — СЛАУ. Ее используют намного чаще, чем полное название, что, в общем-то, вполне естественно — эта аббревиатура и произносима легко, и не перекрывается с другими математическими аббревиатурами. Так что и мы с вами тоже будем ее применять. СЛАУ называется система уравнений следующего вида:
k11x1 + k12x2 + … + k1nxn + l1 = 0
k12x1 + k22x2 + … + k2nxn + l2 = 0

kn1x1 + kn2x2 + … + knnxn + ln = 0

Здесь kij и li — какие-то числовые константы, называемые, соответственно, коэффициентами и свободными членами уравнений, а xj — переменные. Такие уравнения обычно записывают также с помощью матриц:
KX + L = 0

Здесь K — матрица (kij), составленная из коэффициентов при переменных величинах, где i — номер строки матрицы, а j — номер столбца. X и L — это, соответственно, векторы, составленные из переменных и свободных членов. Собственно, при решении СЛАУ с помощью MathCAD мы будем записывать СЛАУ именно в таком виде, потому что решение СЛАУ в MathCAD реализовано именно с помощью матричных методов. Возможно, вы что-нибудь слышали о методах решения СЛАУ Гаусса и Крамера, но даже если и нет, ничего страшного в этом нет — MathCAD тем и удобен, что с его помощью можно решать уравнения, не задумываясь над тем, каким именно алгоритмом пользуется математическая система при их решении.

Итак, для начала давайте посмотрим, каким именно образом в MathCAD’е нужно задавать матрицы. Для этого на панели инструментов Matrix нажмите кнопку Matrix or Vector, а в появившемся окне задайте количество столбцов и строк в матрице. Мы с вами попробуем решать для начала СЛАУ из четырех уравнений, и, соответственно, нам нужна будет матрица размером четыре на четыре элемента. Только, поскольку мы будем присваивать значение, записанное в этой матрице, переменной, обозначающей матрицу коэффициентов, то сначала лучше записать «K_:=», а потом уже вставлять матрицу. Обратите внимание на то, что мы будем обозначать матрицу не просто буквой К, а еще добавлять подчеркивание. Делается это специально для того, чтобы не переобозначать встроенные переменные среды MathCAD. Аналогичным образом теперь нужно задать вектор свободных членов — только его размер уже будет не 4х4, а 1х4. Для решения СЛАУ после того, как мы ввели коэффициенты (вы можете ввести их произвольно, а можете
воспользоваться теми, которые приведены на скриншоте — с ними цифры в ответе получаются довольно ровными и красивыми), нужно для решения СЛАУ использовать функцию lsolve. У нее есть два параметра: первый — это матрица коэффициентов уравнений, а второй — вектор свободных членов. То есть для получения результата нам нужно написать:
lsolve(K_, L_) =

Ну, а после знака равенства MathCAD нам уже нарисует результат.

С помощью функции lsolve можно получать и аналитические решения СЛАУ. Давайте попробуем заменить одно из чисел в матрице коэффициентов на букву — например, «а». Функция lsolve сразу выдаст ошибку, но не нужно этого пугаться — нужно просто заменить знак равенства на стрелку (ее можно найти на панели инструментов Symbolic или же записать комбинацией клавиш Ctrl + .). Дело в том, что знак «равно» в MathCAD’е используется для численных вычислений, а стрелка — для символьных, то есть при решении систем уравнений в общем виде нужно применять именно стрелку.

Решение с помощью solve

В общем-то, решать такую систему можно было бы и используя уже знакомый нам с вами оператор solve. Для этого достаточно записать уравнения в виде матрицы, а затем применить к ней оператор solve точно так же, как если бы мы с вами решали не целую систему, а всего лишь одно- единственное уравнение. «Записать уравнения в виде матрицы» в данном случае означает не запись матричного уравнения KX + L = 0, а просто запись в каждой строке одностолбцовой матрицы (т.е. вектор-столбца) одного уравнения из системы. Напомню на всякий случай, что оператор solve находится на панели Symbolic, а для записи знака равенства нужно использовать не просто клавишу «=», а ее комбинацию с клавишей Ctrl. Еще хочу добавить, что в данном случае, как, впрочем, и во многих других, которые мы с вами уже обговорили, это может вполне успешно использоваться для получения не только символьных, но и для численных решений.

Решение СЛАУ с помощью solve поначалу кажется не таким уж привлекательным, однако, по сути, оно ничем не отличается от использования функции lsolve. Например, если вы замените какой-нибудь из числовых коэффициентов в одном из уравнений на букву, чтобы получить аналитическое решение, solve справится с этим точно так же быстро и хорошо, как и функция lsolve. Так что, в общем-то, выбор при решении СЛАУ в пользу функции lsolve или в пользу оператора solve — дело скорее вкуса, причем вкуса в плане записи самой системы уравнений, а не оператора или функции, у которых, в общем-то, даже названия очень и очень похожи. Пожалуй, один из немногих случаев, когда все же предпочтительнее использовать именно оператор solve — это когда уравнений у нас больше, чем неизвестных, содержащихся в них. В этом случае матрица системы будет выглядеть не так, как хотелось бы, а вот с solve все будет нормально. Даже если решение найти не удастся, solve любезно об этом сообщит. Аналогичным образом можно попытаться решить СЛАУ и в том случае, когда соотношение между уравнениями и неизвестными, напротив, не в пользу уравнений (правда, как говорится, не с разгромным счетом, а то решение заведомо найти не удастся). Но даже в случае, когда мы пытаемся решить систему с тремя уравнениями и четырьмя неизвестными, оставив после solve только две из них, у нас это далеко не всегда может получиться — в этом вы можете убедиться воочию.

Численное решение СЛАУ

Что ж, давайте теперь посмотрим, как решать СЛАУ с использованием численных методов их решения. Это тоже вовсе не так сложно, как может с самого начала показаться, поскольку MathCAD имеет в своем арсенале ряд средств и на этот случай. Как и в случае с одиночными уравнениями, сначала нужно задать начальное приближение (на то оно и начальное, чтобы задавать его сначала). Только, поскольку переменная у нас теперь не одна, а их несколько, то и начальное приближение необходимо будет задать для каждой из них. В тех случаях, когда переменных в СЛАУ много, это будет совсем не просто. После того, как вы задали начальные приближения для каждой из нужных переменных, запишите сами уравнения — только сделайте это так, чтобы их и начальные приближения разделяло специальное слово «Given» (оно, конечно же, в рабочей области MathCAD’а должно быть записано безо всяких кавычек). После того, как вы записали начальные приближения, слово «Given» и сами уравнения, можно смело воспользоваться функцией find, которая найдет точные значения решений системы. Поскольку в СЛАУ каждая из переменных в итоге будет иметь только одно значение, над подбором максимально точного начального приближения можно особо и не страдать — в конечном итоге в случае СЛАУ оно скорее просто формальность, нежели реальная необходимость, и, как вы сами имели возможность убедиться, есть методы, которые прекрасно решают СЛАУ и без него.

Теперь, когда вы знаете уже столько разных способов решения СЛАУ, вполне логично было бы задаться вопросом: а какой из них лучше при прочих равных условиях? В литературе, как правило, рекомендуется использовать функции lsolve или find, дающие точность до 15 знаков после запятой — однако на самом деле, учитывая тот факт, что такая точность бывает нужна не так уж часто, данным советом можно пренебречь, потому что точность решения системы намного больше зависит от нее самой, нежели от используемого метода ее решения в MathCAD’е. Так что используйте пока что смело тот, который показался вам наиболее удобным, а о погрешностях при решении СЛАУ мы с вами еще поговорим, но только, пожалуй, немного попозже.

Компьютерная газета. Статья была опубликована в номере 16 за 2008 год в рубрике soft


источники:

http://life-prog.ru/2_60551_izuchit-vozmozhnosti-resheniya-sistem-lineynih-uravneniy-v-pakete-Mathcad.html

http://nestor.minsk.by/kg/2008/16/kg81602.html