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

Корпорация "Центр"

Линейные уравнения в MathCad

Данный урок посвящается использованию векторных и матричных элементов, которые так важны для решения систем линейных уравнений.

Рассмотрим на примере. Создадим систему из трех линейных уравнений, в которых было бы три неизвестных:

20.1

Стандартная методика решения указанных систем состоит в поочередном исключении переменных. Так, можно добавить 1 к 3 и 3 к 2.

20.2

20.3

После этого пользуемся 4

20.4

20.5

Вот что мы получили:

20.6

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

20.7

Следите за тем, чтобы матрица А была соотнесена с коэффициентом системы уравнения. Теперь переводим правую сторону в векторное решение.

20.8

Система уравнений будет выглядеть так.

20.9

Соответственно, мы сможем найти решение уравнения:

20.10

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

Расчет цепи постоянного тока

Цепи постоянного тока собираются пор помощи резисторов и ЗДС источников. Поэтому популярной задачей является определение тока в каждом ответвлении цепи.

20.11

Учитываем полученные значения:

20.12

Записываем индивидуальные уравнения для I, II и III. Ориентируемся на правило Кирхгофа.

20.13

Смотрим на узлы а, b, c. Составляем для них новые уравнения.

20.14

Разработаем матрицу А. В ней имеются коэффициенты при токах. В вектор b пишем правую часть уравнения.

20.15

Решение уравнений будет выглядеть так:

20.16

Х можно найти и другим способом. Для этого вбиваем команду lsolve(A,B):

20.17

Линейные уравнения

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

20.18

Упростим данный пример:

20.19

Решение оказывается очевидным

20.20

Этот случай можно счесть стандартным. Куда интереснее находить определители матриц коэффициентов.

20.21

Он не может быть равным нулю. Изменяем второе уравнение и стараемся отыскать для него решение.

20.22

Собственно, количество решений неограниченно.

20.23

Определитель матрицы коэффициентов выглядит так:

20.24

Он равняется нулю. Пытаясь определить решение, программа подаёт информацию о том, что такая матрица относится к сингулярному типу. В данном случае оба уравнения одинаковые. Поэтому оно получило название "линейно зависимого уравнения".

Теперь перестановка константы второго уравнения.

20.25

Решить пример невозможно, обе прямые параллельны:

20.26

Определитель снова сравнен с нулем.

20.27

Собственно, когда уравнитель равняется нулю, появляется сложно определяемая проблема. Особенно много ошибок допускают при работе с большой системой уравнений.

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

Знак системы в маткаде

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

Для решения системы уравнений выполните следующее:

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

Функция Find возвращает найденное решение следующим образом:

  • Если функция Find имеет только один аргумент, то она возвращает решение уравнения, расположенного между ключевым словом Given и функцией Find.
  • Если функция Find имеет более одного аргумента, то она возвращает ответ в виде вектора. Например, Find(z1, z2) возвращает вектор, содержащий значения z1 и z2 , являющиеся решением системы уравнений.

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

На Рисунке 5 показан рабочий документ, который использует блок решения уравнений для решения одного уравнения с одним неизвестным. Так как имеется только одно уравнение, то только одно уравнение появляется между ключевым словом Given и формулой, включающей функцию Find. Так как уравнение имеет одно неизвестное, то функция Find имеет только один аргумент. Для решения одного уравнения с одним неизвестным можно также использовать функцию root, как показано ниже:

Рисунок 5: Блок решения уравнений для одного уравнения с одним неизвестным.

Между ключевым словом Given и функцией Find в блоке решения уравнений могут появляться выражения строго определенного типа. Ниже приведен список всех выражений, которые могут быть использованы в блоке решения уравнений. Использование других выражений не допускается. Эти выражения часто называются ограничениями. В таблице, приведенной ниже, через x и y обозначены вещественнозначные скалярные выражения, а через z и w обозначены любые скалярные выражения.

Условие Как ввести Описание
w = z [Ctrl] = Булево равенство возвращает 1, если операнды равны; иначе 0
x > y > Больше чем.
x

Следующие выражения недопустимы внутри блока решения уравнений:

  • Ограничения со знаком .
  • Дискретный аргумент или выражения, содержащие дискретный аргумент в любой форме.
  • Неравенства вида a −15 .

Причиной появления этого сообщения об ошибке может быть следующее:

  • Поставленная задача может не иметь решения.
  • Для уравнения, которое не имеет вещественных решений, в качестве начального приближения взято вещественное число. Если решение задачи комплексное, то оно не будет найдено, если только в качестве начального приближения не взято также комплексное число. На Рисунке 11 приведен соответствующий пример.
  • В процессе поиска решения последовательность приближений попала в точку локального минимума невязки. Метод поиска решения, который используется в Mathcad, не позволяет в этом случае построить следующее приближение, которое бы уменьшало невязку. Для поиска искомого решения пробуйте использовать различные начальные приближения или добавьте ограничения на переменные в виде неравенств, чтобы обойти точку локального минимума.
  • В процессе поиска решения получена точка, которая не является точкой локального минимума, но из которой метод минимизации не может определить дальнейшее направление движения. Метод преодоления этой проблемы — такой же, как для точки локального минимума: измените начальное приближение или добавьте ограничения в виде неравенств, чтобы миновать нежелательную точку остановки.
  • Возможно, поставленная задача не может быть решена с заданной точностью. Если значение встроенной переменной TOL слишком мало, то Mathcad может достигнуть точки, находящейся достаточно близко к решению задачи, но уравнения и ограничения при этом не будут выполнены с точностью, задаваемой переменной TOL. Попробуйте увеличить значение TOL где-нибудь выше блока решения уравнений.

Что делать, когда имеется слишком мало ограничений

Если количество ограничений меньше, чем количество переменных, Mathcad вообще не может выполнить блок решения уравнений. Mathcad помечает в этом случае функцию Find сообщением об ошибке "слишком мало ограничений".

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

При использовании блока решения уравнений в Mathcad необходимо задать количество уравнений по крайней мере не меньшее, чем число искомых неизвестных. Если зафиксировать значения некоторых переменных, удастся решить уравнения относительно оставшихся переменных. На Рисунке 13 показано, как, зафиксировав часть переменных, решить недоопределенную задачу из Рисунка 12. Поскольку функция Find содержит только два аргумента, z и w, Mathcad определяет переменные x, y и v как имеющие фиксированные значения 10, 50 и 0 соответственно. Блок решения уравнений становится в этом случае корректно определенным, потому что теперь имеются только две неизвестных, z и w, и два уравнения.

Рисунок 12: Функция Find имеет пять аргументов, поэтому Mathcad определяет, что требуется решить два уравнения с пятью неизвестными.

Рисунок 13: Проблема может быть решена, если уменьшить количество аргументов функции Find.

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

Математическая программа MathCAD применяется при сложных алгебраических расчетах в то время, когда они затруднены или невозможны вручную. Данный ресурс значительно облегчает жизнь многим техническим, экономическим специальностям и студентам. Очень просто смоделировать какую-то задачу в математическом виде и получить желаемый ответ. Однако интерфейс может быть непонятен для новичков, и им тяжело адекватно воспринимать эту вычислительную среду. Одним из камней преткновения становится то, как решать систему уравнений в «Маткаде». Это очень важная функция, которую нужно изучить всем, кто желает продолжать работать в этой программе.

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

На самом деле это не является простейшей задачей, но на рассмотренных примерах можно научиться их решать. Очень часто пользователи сталкиваются с системами уравнений и понятием «параметр». В математической рабочей среде параметр и то, как решать систему уравнений в «Маткаде», находится с помощью вспомогательной функции root. Помимо того, что нам придется привлекать эту функцию в решение, нам также понадобится значение начального приближения. Вообще, видов систем уравнений несколько, поэтому рассматривать будем конкретно на разных типах. Обсудим, с какими проблемами может столкнутся пользователь при применении функции root.

  • Уравнение в изначальном виде не имеет корней.
  • Корни уравнения находятся на достаточно далеком расстоянии от начального приближения.
  • Уравнение претерпевает разрыв между начальным приближением и корнями.
  • Уравнение имеет максимум и минимум между начальным приближением и корнями.
  • Уравнение имеет комплексный корень при условии, что начальное приближение было вещественным.

Сложная функция и ее график

Начнем с самого простой и слегка отдаленной темы, чтобы постепенно ввести в курс дела начинающих пользователей. Это необходимо для того, чтобы символьно решить системы уравнений «Маткад», но сначала попробуем построить график для сложной функции. Пользователю нужно привести формулировку в математический вид, чтобы график функции построился корректно — так как мы имеем три участка, есть смысл воспользоваться программной конструкцией. Чтобы осуществить правильную запись уравнения, воспользуемся блоком if-otherwise.

Чтобы решить систему линейных уравнений в «Маткаде», можно использовать некоторые другие варианты. Первый способ заключается в том, что мы пишем нашу систему уравнений через оператор if. Во втором методе необходимо прибегнуть к методу логических множителей.

Строим быстрый график, нажав на сочетание клавиш Shift + 2. В появившемся окне графика вписываем функцию в средний вертикальный блок и в нижний вертикальный блок — аргумент «х».

Система нелинейных уравнений

Для нелинейных уравнение порядок нахождения корней мало чем отличается от другого типа. Допустим, имеем функцию f(x) = (e^x/(2(x-1)^2) −10 в интервале от −10 до 10 включительно. Перед тем, как решить систему нелинейных уравнений в «Маткаде», нужно построить график, чтобы оценить нули и воспользоваться табуляцией.

  1. Задаем данную функцию в математическом виде, который сможет обработать вычислительная среда.
  2. Строим график функции клавишами Shift + 2, обозначив функцию в вертикальном среднем окошке. В горизонтальном устанавливаем границы, как и на интервале: от −10 до 10, — и вписываем аргумент «х» в среднюю ячейку.
  3. Теперь нам необходимо визуально обозначить нули на графике. Сделать это можно, добавив функцию 0 (вводится в среднюю вертикальную ячейку с помощью символа «,»). Стало визуально понятнее, где находятся нули функции.
  4. Время провести табуляцию на график, но при этом нужно задать диапазон значений. В рассматриваемом случае будем иметь x:=-1, 0.5 . 7 (знак двоеточия ставится при помощи клавиши «;». Теперь отследим смену знака, оценив значения f(x).

Поиск корней при помощи функции root

Перед тем, как решать систему уравнений в «Маткаде», необходимо провести операцию root. Предварительно необходимо было построить функцию и протабулировать ее. После всех операций можно приступать к поиску корней с заданным интервалом. Итак, будем на примере нелинейного уравнения отвечать на вопрос, как в «Маткаде» решать систему уравнений:

  1. Необходимо отыскать первый корень функции «root». Присваиваем «х» следующую команду: x1:=root(f(x),x, −10,10). Затем выводим значение аргумента «х» и функции f(x1).
  2. Отыскиваем второй корень с помощью той же функции. Единственным отличием станет то, что поиск корня будет проходить через задание начального приближения. Возьмем начальное приближение «х:=0», чтобы применить root без интервала. Задаем функцию: x2=root(f(x),x), а следом отыскиваем значение аргумента и ее функции так же, как и в предыдущем примере.

Поиск корней функцией find

В отличие от предыдущей функции, здесь не используется задание интервала или начального приближения. Данная команда работает от того, что присваивается начальное условие — около корня. Разберем работу этой функции на том же примере:

8.3. Системы уравнений

Рассмотрим решение системы N нелинейных уравнений с M неизвестными

Здесь f1(x1, . ,хм) , . fn(x1, . ,хм) — некоторые скалярные функции от скалярных переменных хцх2/ . /хм и, возможно, от еще каких-либо переменных. Уравнений может быть как больше, так и меньше числа переменных. Заметим, что систему (1) можно формально переписать в виде

где х — вектор, составленный из переменных x1,х2, . ,хм, a f (х) — соответствующая векторная функция.

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

  • Given — ключевое слово;
  • система, записанная логическими операторами в виде равенств и, возможно, неравенств;
  • Find(x1. ,хм) — встроенная функция для решения системы относительно переменных хх. хм.

Вставлять логические операторы следует, пользуясь панелью инструментов Boolean (Булевы операторы). Если Вы предпочитаете ввод с клавиатуры, помните, что логический знак равенства вводится сочетанием клавиш + . Блок Given/Find использует для поиска решения итерационные методы, поэтому, как и для функции root, требуется задать начальные значения для всех х1, . ,xм. Сделать это необходимо до ключевого слова Given. Значение функции Find есть вектор, составленный из решения пс каждой переменной. Таким образом, число элементов вектора равно число аргументов Find.

В листинге 8.6. приведен пример решения системы двух уравнений.

Листинг 8.6. Решение системы уравнений

В первых двух строках листинга вводятся функции, которые определяют систему уравнений. Затем переменным х и у, относительно которых она будет решаться, присваиваются начальные значения. После этого следует ключевое слово Given и два логических оператора, выражающих рассматриваемую систему уравнений. Завершает вычислительный блок функция Find, значение которой присваивается вектору v. Следующая строка показывает содержание вектора v, т. е. решение системы. Первый элемент вектора есть первый аргумент функции Find, второй элемент — ее второй аргумент. В последних двух строках осуществлена проверка правильности решения уравнений.

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

Отметим, что уравнения можно определить непосредственно внутри вычислительного блока. Таким образом, можно не определять заранее функции f (x,y) и д(х,у), как это сделано в первых двух строках листинга 8.6, а сразу написать:

Такая форма представляет уравнения в более привычной и наглядной форме, особенно подходящей для документирования работы.

Корпорация "Центр"

Графическая интерпретация рассмотренной системы представлена на рис. 8.3. Каждое из уравнений показано на плоскости XY графиком. Первое — сплошной кривой, второе — пунктиром. Поскольку второе уравнение линейное, то оно определяет на плоскости XY прямую. Две точки пересечения кривых соответствуют одновременному выполнению обоих уравнений, т. е. искомым действительным корням системы. Как нетрудно убедиться, в листинге найдено только одно из двух решений — находящееся в правой нижней части графика Чтобы отыскать и второе решение, следует повторить вычисления, изменив начальные значения так, чтобы они лежали ближе к другой точке пересечения графиков, например x=-1, y=-1.

Рис. 8.3. Графическое решение системы двух уравнений

Пока мы рассмотрели пример системы из двух уравнений и таким же числом неизвестных, что встречается наиболее часто. Но число уравнений и неизвестных может и не совпадать. Более того, в вычислительный блок можно добавить дополнительные условия в виде неравенств. Например, введение ограничения на поиск только отрицательных значений х в рассмотренный выше листинг 8.6 приведет к нахождению другого решения, как это показано в листинге 8.7.

Листинг 8.7. Решение системы уравнений и неравенств

Обратите внимание, что, несмотря на те же начальные значения, что и в листинге 8.6, мы получили в листинге 8.7 другой корень. Это произошло именно благодаря введению дополнительного неравенства, которое определено в блоке Given в предпоследней строке листинга 8.7.

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

Вычислительный блок использует константу CTOL в качестве погрешности выполнения уравнений, введенных после ключевого слова Given. Например, если CTOL=0.001, то уравнение х=10 будет считаться выполненным и при х=10.001, и при х=9.999. Другая константа TOL определяет условие прекращения итераций численным алгоритмом (см. разд. 8.4). Значение стоъ может быть задано пользователем так же как и TOL, например, CTOL:=0.01. По умолчанию принято, что CTOL=TOL=0.001, но Вы по желанию можете переопределить их.

Особенную осторожность следует соблюдать при решении систем с числом неизвестных большим, чем число уравнений. Например, можно удалить одно из двух уравнений из рассмотренного нами листинга 8.6, попытавшись решить единственное уравнение g(х,у)=о с двумя неизвестными х и у. В такой постановке задача имеет бесконечное множество корней: для любого х и, соответственно, у=-х/2 условие, определяющее единственное уравнение, выполнено. Однако, даже если корней бесконечно много, численный метод будет производить расчеты только до тех пор, пока логические выражения в вычислительном блоке не будут выполнены (в пределах погрешности). После этого итерации будут остановлены и выдано решение. В результате будет найдена всего одна пара значений (х,у), обнаруженная первой.

О том, как найти все решения рассматриваемой задачи, рассказывается в разд. 8.7.

Вычислительным блоком с функцией Find можно найти и корень уравнения с одним неизвестным. Действие Find в этом случае совершенно аналогично уже рассмотренным в данном разделе примерам. Задача поиска корня рассматривается как решение системы, состоящей из одного уравнения. Единственным отличием будет скалярный, а не векторный тип числа, возвращаемого функцией Find. Пример решения уравнения из предыдущего раздела приведен в листинге 8.8.

Листинг 8.8. Поиск корня уравнения с одним неизвестным с помощью функции Find

В чем же отличие приведенного решения от листинга 8.1 с функцией root? Оно состоит в том, что одна и та же задача решена различными численными методами. В данном случае выбор метода не влияет на окончательный результат, но бывают ситуации, когда применение того или иного метода имеет решающее значение.

Маткад как сделать систему

Математическая программа MathCAD применяется при сложных алгебраических расчетах в то время, когда они затруднены или невозможны вручную. Данный ресурс значительно облегчает жизнь многим техническим, экономическим специальностям и студентам. Очень просто смоделировать какую-то задачу в математическом виде и получить желаемый ответ. Однако интерфейс может быть непонятен для новичков, и им тяжело адекватно воспринимать эту вычислительную среду. Одним из камней преткновения становится то, как решать систему уравнений в "Маткаде". Это очень важная функция, которую нужно изучить всем, кто желает продолжать работать в этой программе.

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

На самом деле это не является простейшей задачей, но на рассмотренных примерах можно научиться их решать. Очень часто пользователи сталкиваются с системами уравнений и понятием "параметр". В математической рабочей среде параметр и то, как решать систему уравнений в "Маткаде", находится с помощью вспомогательной функции root. Помимо того, что нам придется привлекать эту функцию в решение, нам также понадобится значение начального приближения. Вообще, видов систем уравнений несколько, поэтому рассматривать будем конкретно на разных типах. Обсудим, с какими проблемами может столкнутся пользователь при применении функции root.

  • Уравнение в изначальном виде не имеет корней.
  • Корни уравнения находятся на достаточно далеком расстоянии от начального приближения.
  • Уравнение претерпевает разрыв между начальным приближением и корнями.
  • Уравнение имеет максимум и минимум между начальным приближением и корнями.
  • Уравнение имеет комплексный корень при условии, что начальное приближение было вещественным.

Сложная функция и ее график

Начнем с самого простой и слегка отдаленной темы, чтобы постепенно ввести в курс дела начинающих пользователей. Это необходимо для того, чтобы символьно решить системы уравнений "Маткад", но сначала попробуем построить график для сложной функции. Пользователю нужно привести формулировку в математический вид, чтобы график функции построился корректно – так как мы имеем три участка, есть смысл воспользоваться программной конструкцией. Чтобы осуществить правильную запись уравнения, воспользуемся блоком if-otherwise.

Чтобы решить систему линейных уравнений в "Маткаде", можно использовать некоторые другие варианты. Первый способ заключается в том, что мы пишем нашу систему уравнений через оператор if. Во втором методе необходимо прибегнуть к методу логических множителей.

Строим быстрый график, нажав на сочетание клавиш Shift + 2. В появившемся окне графика вписываем функцию в средний вертикальный блок и в нижний вертикальный блок – аргумент "х".

Система нелинейных уравнений

Для нелинейных уравнение порядок нахождения корней мало чем отличается от другого типа. Допустим, имеем функцию f(x) = (e^x/(2(x-1)^2)-10 в интервале от -10 до 10 включительно. Перед тем, как решить систему нелинейных уравнений в "Маткаде", нужно построить график, чтобы оценить нули и воспользоваться табуляцией.

  1. Задаем данную функцию в математическом виде, который сможет обработать вычислительная среда.
  2. Строим график функции клавишами Shift + 2, обозначив функцию в вертикальном среднем окошке. В горизонтальном устанавливаем границы, как и на интервале: от -10 до 10, – и вписываем аргумент "х" в среднюю ячейку.
  3. Теперь нам необходимо визуально обозначить нули на графике. Сделать это можно, добавив функцию 0 (вводится в среднюю вертикальную ячейку с помощью символа ","). Стало визуально понятнее, где находятся нули функции.
  4. Время провести табуляцию на график, но при этом нужно задать диапазон значений. В рассматриваемом случае будем иметь x:=-1, 0.5 .. 7 (знак двоеточия ставится при помощи клавиши ";". Теперь отследим смену знака, оценив значения f(x).

Поиск корней при помощи функции root

Перед тем, как решать систему уравнений в "Маткаде", необходимо провести операцию root. Предварительно необходимо было построить функцию и протабулировать ее. После всех операций можно приступать к поиску корней с заданным интервалом. Итак, будем на примере нелинейного уравнения отвечать на вопрос, как в "Маткаде" решать систему уравнений:

  1. Необходимо отыскать первый корень функции "root". Присваиваем "х" следующую команду: x1:=root(f(x),x,-10,10). Затем выводим значение аргумента "х" и функции f(x1).
  2. Отыскиваем второй корень с помощью той же функции. Единственным отличием станет то, что поиск корня будет проходить через задание начального приближения. Возьмем начальное приближение "х:=0", чтобы применить root без интервала. Задаем функцию: x2=root(f(x),x), а следом отыскиваем значение аргумента и ее функции так же, как и в предыдущем примере.

Поиск корней функцией find

В отличие от предыдущей функции, здесь не используется задание интервала или начального приближения. Данная команда работает от того, что присваивается начальное условие – около корня. Разберем работу этой функции на том же примере:

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

Для решения системы уравнений выполните следующее:

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

Функция Find возвращает найденное решение следующим образом:

  • Если функция Find имеет только один аргумент, то она возвращает решение уравнения, расположенного между ключевым словом Given и функцией Find.
  • Если функция Find имеет более одного аргумента, то она возвращает ответ в виде вектора. Например, Find(z1, z2) возвращает вектор, содержащий значения z1 и z2 , являющиеся решением системы уравнений.

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

На Рисунке 5 показан рабочий документ, который использует блок решения уравнений для решения одного уравнения с одним неизвестным. Так как имеется только одно уравнение, то только одно уравнение появляется между ключевым словом Given и формулой, включающей функцию Find. Так как уравнение имеет одно неизвестное, то функция Find имеет только один аргумент. Для решения одного уравнения с одним неизвестным можно также использовать функцию root, как показано ниже:

Рисунок 5: Блок решения уравнений для одного уравнения с одним неизвестным.

Между ключевым словом Given и функцией Find в блоке решения уравнений могут появляться выражения строго определенного типа. Ниже приведен список всех выражений, которые могут быть использованы в блоке решения уравнений. Использование других выражений не допускается. Эти выражения часто называются ограничениями. В таблице, приведенной ниже, через x и y обозначены вещественнозначные скалярные выражения, а через z и w обозначены любые скалярные выражения.

Условие Как ввести Описание
w = z [Ctrl] = Булево равенство возвращает 1, если операнды равны; иначе 0
x > y > Больше чем.
x

Следующие выражения недопустимы внутри блока решения уравнений:

  • Ограничения со знаком .
  • Дискретный аргумент или выражения, содержащие дискретный аргумент в любой форме.
  • Неравенства вида a -15 .

Причиной появления этого сообщения об ошибке может быть следующее:

  • Поставленная задача может не иметь решения.
  • Для уравнения, которое не имеет вещественных решений, в качестве начального приближения взято вещественное число. Если решение задачи комплексное, то оно не будет найдено, если только в качестве начального приближения не взято также комплексное число. На Рисунке 11 приведен соответствующий пример.
  • В процессе поиска решения последовательность приближений попала в точку локального минимума невязки. Метод поиска решения, который используется в Mathcad, не позволяет в этом случае построить следующее приближение, которое бы уменьшало невязку. Для поиска искомого решения пробуйте использовать различные начальные приближения или добавьте ограничения на переменные в виде неравенств, чтобы обойти точку локального минимума.
  • В процессе поиска решения получена точка, которая не является точкой локального минимума, но из которой метод минимизации не может определить дальнейшее направление движения. Метод преодоления этой проблемы — такой же, как для точки локального минимума: измените начальное приближение или добавьте ограничения в виде неравенств, чтобы миновать нежелательную точку остановки.
  • Возможно, поставленная задача не может быть решена с заданной точностью. Если значение встроенной переменной TOL слишком мало, то Mathcad может достигнуть точки, находящейся достаточно близко к решению задачи, но уравнения и ограничения при этом не будут выполнены с точностью, задаваемой переменной TOL. Попробуйте увеличить значение TOL где-нибудь выше блока решения уравнений.

Что делать, когда имеется слишком мало ограничений

Если количество ограничений меньше, чем количество переменных, Mathcad вообще не может выполнить блок решения уравнений. Mathcad помечает в этом случае функцию Find сообщением об ошибке “слишком мало ограничений”.

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

При использовании блока решения уравнений в Mathcad необходимо задать количество уравнений по крайней мере не меньшее, чем число искомых неизвестных. Если зафиксировать значения некоторых переменных, удастся решить уравнения относительно оставшихся переменных. На Рисунке 13 показано, как, зафиксировав часть переменных, решить недоопределенную задачу из Рисунка 12. Поскольку функция Find содержит только два аргумента, z и w, Mathcad определяет переменные x, y и v как имеющие фиксированные значения 10, 50 и 0 соответственно. Блок решения уравнений становится в этом случае корректно определенным, потому что теперь имеются только две неизвестных, z и w, и два уравнения.

Рисунок 12: Функция Find имеет пять аргументов, поэтому Mathcad определяет, что требуется решить два уравнения с пятью неизвестными.

Рисунок 13: Проблема может быть решена, если уменьшить количество аргументов функции Find.

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ УРАВНЕНИЙ

4 Решение уравнений и систем средствами Mathcad

Система Mathcad обладает широкими возможностями численного решения уравнений и систем уравнений.

Функция root, блоки Given…Find, Given…Minerr

В ходе численного решения обычно выделяют два этапа:

  • отделение корней – определение интервала нахождения каждого корня или определение приблизительного значения корня. В системе Mathcad наиболее наглядным будет отделение корней уравнения графическим способом;
  • уточнение корней – нахождение численного значения корня с указанной точностью.

Точность нахождения корня устанавливается с помощью системной переменной TOL (Convergence Tolerance – Допуск сходимости), которая по умолчанию равна 10 -3 . Чем меньше значение TOL, тем точнее, вообще говоря, находится корень уравнения. Однако оптимальным является TOL = 10 -5 . Переопределить значение TOL можно в окне математических свойств документа Math Options на вкладке Build-In Variables (Встроенные переменные) или присваиванием, например, TOL:=0.0001.

Для решения одного уравнения с одной неизвестной предназначена встроенная функция root, которая в общем виде задается

root(f(x), x, [a, b])

и возвращает значение переменной x, при котором функция f(x) обращается в ноль. Аргументы функции root:

  • f(x) – функция левой части уравнения f(x) = 0;
  • x – переменная, относительно которой требуется решить уравнение;
  • a, b (необязательные) – действительные числа, такие что a -1 слева: A -1 Ax=A -1 b. Учитывая, что A -1 A, вектор-столбец решений системы можно искать в виде

Этот прием используется в Mathcad так:

  1. задается матрица коэффициентов при неизвестных системы A;
  2. задается столбец свободных членов b;
  3. вводится формула для нахождения решения системы X:=A -1 b;
  4. выводится вектор решений системы X=.

Кроме того, пакет Mathcad имеет встроенную функцию

lsolve(A, b),

возвращающую вектор-столбец решений системы линейных алгебраических уравнений. Аргументами функции lsolve являются матрица коэффициентов при неизвестных системы и столбец свободных членов. Порядок решения аналогичен рассмотренному, но вместо формулы X:=A -1 b используется X:=lsolve(A, b).

Реализовать широко известный метод Гаусса решения систем линейных уравнений позволяет встроенная функция rref(M), возвращающая ступенчатый вид матрицы M. Если в качестве аргумента взять расширенную матрицу системы, то в результате применения rref получится матрица, на диагонали которой – единицы, а последний столбец представляет собой столбец решений системы.

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

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

  1. Загрузить Mathcad Start / All Programs / Mathsoft Apps / Mathcad (Пуск / Все программы / Mathsoft Apps / Mathcad).
  2. Сохранить в личной папке на диске z: новый документ с именем ФИО1, лучше использовать латинские буквы. Производить сохранение регулярно в процессе работы (Ctrl + S).
  3. Вставить текстовую область Insert / Text Region (Вставка / Область текста) и ввести в поле документа текст:

Лабораторная работа № 4
Решение уравнений и систем в Mathcad.

  1. В новой текстовой области ввести фамилию, имя, отчество, учебный шифр и номер варианта.
  2. Выполнить задание 1.

Задание 1. Решить уравнение .

Решение.

Решение данного уравнения будем проводить в два этапа: отделение корней уравнения графически, уточнение корней уравнения.

Определим функцию f(x), равную левой части данного уравнения, когда правая равна нулю:

Зададим ранжированную переменную x на некотором диапазоне с мелким шагом, например:

Вставим в документ графическую область. Для этого выберем дважды пиктограмму с изображением графика сначала на панели Math (Математика), затем на палитре графиков Graph или выполним из главного меню последовательность команд Insert / Graph / X-Y Plot (Вставка / График / X-Y Зависимость).

Снизу по оси абсцисс наберем x, а сбоку по оси ординат введем f(x).

Для появления графика щелкнем левой клавишей мыши вне графической области.

Отформатируем график функции f(x). Для этого щелкнем правой клавишей мыши в области графика и выберем в контекстном меню команду Format (Формат). Установим пересечение осей графика (CrossedТолько оси), добавим вспомогательные линии по координатным осям (Grid LinesВспомогательные линии). Отменим при этом автосетку (AutogridАвтосетка) и установим количество линий сетки, равное 10.

Для подтверждения внесенных изменений нажмем последовательно кнопки Apply (Применить) и ОК.

После указанных преобразований график функции f(x) будет выглядеть следующим образом:

Из графика функции f(x) видно, что уравнение имеет три корня, которые приблизительно равны: x1 ≈ -1; x2 ≈ 1; x3 ≈ 2,5.

Этап отделения корней завершен.

Уточним теперь корни уравнения с помощью функции root.

Присвоим начальное приближение переменной x и укажем точность поиска корня:

Уточним заданное приближение к значению корня с помощью функции root:

Выполним проверку, подтверждающую, что первый корень найден с заявленной точностью:

Начальное приближение можно не задавать при использовании в качестве аргументов root границ отрезка нахождения корня, например, второй корень можно уточнить:

Задание 2. Решить уравнение .

Решение.

Напечатаем левую часть уравнения, не приравнивая выражение к 0, и выделим синим курсором переменную x:

Выберем из главного меню Symbolics / Polynomial Coefficients (Символика / Коэффициенты полинома). Появившийся вектор коэффициентов полинома выделим целиком синим курсором и вырежем в буфер обмена, используя кнопку Вырезать на панели инструментов Formatting (Форматирование) или комбинацию клавиш Ctrl + X.

Напечатаем v := и вставим вектор из буфера обмена, используя кнопку Вставить на панели инструментов или комбинацию клавиш Ctrl + V.

Для получения результата напечатаем polyroots(v) =:

Задание 3. Решить систему линейных уравнений Сделать проверку.

Решение.

1-й способ. Использование блока Given … Find.

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

Напечатаем слово Given. Установим визир ниже и наберем уравнения системы, каждое в своем блоке. Используем при этом логический знак равенства (Ctrl + =).

После ввода уравнений системы напечатаем X := Find(x, y, z) и получим решение системы в виде вектора, состоящего из трех элементов:

Сделаем проверку, подставив полученные значения неизвестных в уравнения системы, например, следующим образом

После набора знака «=» в каждой строке должен быть получен результат, равный или приблизительно равный правой части системы. В данном примере системная переменная ORIGIN = 1.

2-й способ. Использование блока Given…Minerr.

Порядок решения системы этим способом аналогичен порядку использования блока Given … Find и представлен ниже вместе с проверкой:

3-й способ. Решение системы линейных уравнений матричным способом.

Создадим матрицу А, состоящую из коэффициентов при неизвестных системы. Для этого напечатаем A := , вызовем окно создания массивов (Ctrl + M). Число строк (Rows) и столбцов (Columns) матрицы данной системы равно 3. Заполним пустые места шаблона матрицы коэффициентами при неизвестных системы, как показано ниже:

Зададим вектор b свободных членов системы. Сначала напечатаем b :=, затем вставим шаблон матрицы(Ctrl + M), где количество строк (Rows) равно 3, а количество столбцов (Columns) равно 1. Заполним его:

Решим систему матричным способом по формуле

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

Для проверки правильности решения системы, полученного матричным способом, достаточно вычислить произведение A·X, которое должно совпасть с вектором-столбцом свободных членов b:

Корпорация "Центр"

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

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