Перейти к содержимому

Как решить систему уравнений в маткаде

  • автор:

Примеры постановки и решения задач в Mathcad и Excel «Решение систем линейных алгебраических уравнений (слау)»

Система линейных алгебраических уравнений, записанная в нормальной форме имеет вид:

A*X = b. (1)

где A – неособая квадратная матрица,b – заданный числовой вектор,X – искомый вектор.

Вектор решения Xможно получить следующими способами: 1) с помощью обратной матрицы:X=A -1 *B; 2) применением встроенной функцииMathСadlsolve,, а также Find иMinner; 3) по формулам Крамера; 4) сведением к задаче линейного программирования, когда минимизируется невязка левой и правой части водном из уравнений, а остальные уравнения являются ограничениями. При этом используется функцияMathсadFind Minimized, либо программа «Поиск решения» вExcel.

Решение систем уравнений в Mathсad:

1) Решение систем линейных уравнений матричным методом

Рассмотрим систему 4 линейных алгебраических уравнения относительно 4 неизвестных х1, х2, …, х4:

или матричном виде:

Ах=b, гдеA:=;b:=.

Если det A 0, то система и эквивалентное ей матричное уравнение имеет единственное решениех:=А -1 b.

2) Решение систем уравнений с помощью функции lsolve

Системы линейных уравнений удобно решать с помощью функции lsolve. Функцияlsolve(А,b) — возвращает вектор решенияxтакой, чтоАх = b.

x := lsolve(A, b)

x= .

3) Решение систем уравнений с помощью функций Find и Minner

Для решения системы уравнений с помощью функции Findнеобходимо выполнить следующее:

1. Задать начальное приближение для всех неизвестных, входящих в систему уравнений, т.к. Mathсadрешает эту систему с помощью итерационных методов;

2. Напечатать ключевое слово Given. Оно указываетMathсad, что далее следует система уравнений;

3. Введите уравнения и неравенства в любом порядке. Используйте[Ctrl]+=(т.е. одновременное нажатие двух клавишCtrl и =)для печати символа =. Между левыми и правыми частями неравенств может стоять любой из символов<, >, и панелилогика;

4. Введите любое выражение, которое включает функцию Find, например:х:= Find(х,у).

Ключевое слово Given, уравнения и неравенства, которые следуют за ним, и какое — либо выражение, содержащее функциюFind,называютблоком решения уравнений.

Пример.Решение системы уравнений с помощью функцииFind

Начальные приближения : x1 := 0 x2 := 0 x3 := 0 x4 := 0

Find(x1, x2, x3,x4) =

Функция Minerr очень похожа на функциюFind (использует тот же алгоритм). Если в результате поиска не может быть получено дальнейшее уточнение текущего приближения к решению,Minrer возвращает это приближение. ФункцияFind в этом случае возвращает сообщение об ошибке. Правила использования функцииMinerr точно такие же, как и для функцииFind.

Функция Minerr(x1, x2, . . .) — возвращает приближенное решение системы уравнений. Число аргументов должно быть равно числу неизвестных.

как в маткаде ввести систему уравнений? если такой функции нету то есть ли програма которая решает такие системы ?

MathCAD дает возможность решать системы уравнений. Максимальное число уравнений и переменных равно 50.
Результатом решения системы будет численное значение искомого корня.
Для решения системы уравнений необходимо выполнить следующее:
•Задать начальное приближение для всех неизвестных, входящих в систему уравнений. Mathcad решает систему с помощью итерационных методов.
•Напечатать ключевое слово Given. Оно указывает Mathcad, что далее следует система уравнений.
•Введите уравнения и неравенства в любом порядке. Используйте [Ctrl]= для печати символа =.
•Введите любое выражение, которое включает функцию Find, например: а: = Find(х, у) .

Задаешь переменные которые нужно найти и которые заданы
a:=4
b:=2
y1:=1
y2:=1

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_: (max-width: 440px) 100vw, 545px» src=kg81602b.jpg>

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

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

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

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

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

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

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

SF, spaceflyer@tut.by

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

Научная электронная библиотека

Решение систем уравнений MathCAD осуществляет численными методами. При этом должно быть задано некоторое начальное приближение для тех переменных, значение которых необходимо найти. Основываясь на этих начальных данных, MathCAD будет последовательно уточнять решение до тех пор, пока не подберет наиболее точные значения. Проблемы возникают, когда нелинейная система имеет несколько решений. За один раз MathCAD находит только одно решение, которое обычно более близко к заданному начальному приближению. Поэтому в таких случаях необходимо решать систему несколько раз с различными начальными приближениями.

Решающий блок состоит из нескольких компонент, следующих на листе в строго определенном порядке:

1.2.1. Начальное приближение (присваивание начальных значений переменным).

1.2.2. Директива Given, которую необходимо набрать с клавиатуры.

1.2.3. Уравнения, которые необходимо решить. Уравнения вводятся в обычной математической форме, но вместо простого знака равенства «=» используется оператор логического равенства (вводится путем нажатия Ctrl- =).

1.2.4. Обращение к функции Find. Аргументами функции являются имена переменных, относительно которых решается система. Функция возвращает вектор значений, где первый элемент соответствует первой переменной в списке аргументов, второй элемент – второй переменной и так далее.

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

Данная система имеет два решения. Найдем одно из них (рис. 11) с начальным приближением x = 0; y = 0.

Последняя запись – вектор (–1; –2) есть значение, которое вернула функция Find, то есть одно из решений системы. Найти второе решение можно, если взять другое начальное приближение x = 2; y = 2. Тогда функция Find вернет вектор (2; 4).

Начиная с MathCAD 2000 существует возможность одновременно найти несколько решений. Для этого система уравнений и начальные приближения должны быть переписаны в векторной форме (рис. 12). Каждая переменная будет вектором, содержащим столько компонент, сколько решений находится. В системе изменения коснутся преимущественно членов с перемножением переменных. Допустим, что в уравнении присутствует выражение x*x. Если x = (x1; x2) – вектор, то x∙x = x1∙x1 + x2∙x2. Нам же необходим результат поэлементного перемножения (x1∙x1; x2∙x2). Для этого существует специальная операция, записываемая как .

Рис. 11. Решение системы в MathCAD

Рис. 12. Пример одновременного поиска нескольких решений

Изменения коснулись и части получения результата. В данном случае функция Find вернет вектор из двух элементов, которые мы обозначили как X и Y. Каждый из этих элементов есть вектор значений x или y для решений. Соответственно первое решение – (–1; –2); второе решение – (2; 4).

Аналитическое решение линейных и нелинейных систем уравнений

Данное решение используется для получения решений в общем виде. Обычно при этом система уравнений записывается только с использованием буквенных обозначений переменных, без конкретных чисел. Для получения аналитического решения (рис. 13, 14) используется оператор аналитического вычисления «→» вместо оператора числового вычисления «=».

Рис. 13. Пример аналитического решения нелинейной системы

Рис. 14. Пример аналитического решения линейной системы

Следует обратить внимание, что здесь при решении системы нелинейных уравнений в блоке Given-Find уже нет необходимости указывать начальные приближения, поскольку решение идет не численными, а символьными методами (используется ядро математической системы Maple).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *