Решение полиномиальных уравнений в mathcad

Решение полиномиальных уравнений в mathcad

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

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:

23. Тема 6. Решение уравнений и систем. Краткие теоретические сведения

Для алгебраических уравнений вида F(x)=0 решение в MathCad находится с помощью функции Root.

Общий вид функции следующий:

F(х) – функция, описывающая левую часть выражения вида F(x)=0,

Х – имя переменной, относительно которой решается уравнение.

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

Если после многих итераций Mathcad не находит подходящего приближения, то появится сообщение «отсутствует сходимость».

Эта ошибка может быть вызвана следующими причинами:

· уравнение не имеет корней;

· корни уравнения расположены далеко от начального приближения;

· выражение F(x) имеет разрывы между начальным приближением и корнем;

· выражение имеет комплексный корень, но начальное приближение было вещественным и наоборот.

Для изменения точности, с которой функция Root ищет корень, нужно изменить значение системной переменной TOL. Например, просле задания в документе оператора TOL:=0.00001 точность вычисления корня станет равной 0.00001.

Для нахождения корней полиномиального уравнения вида

В отличие от функции Root, Polyroots не требует начального приближения и вычисляет сразу все корни, как вещественные, так и комплексные.

Где V – вектор коэффициентов полинома длины N+1, n – степень полинома. Вектор V формируется следующим образом: в первый его элемент заносится значение коэффициента полинома при х0, т. е. V0, во второй элемент — значение коэффициента полинома при х1, т. е. V1 и т. д. Таким образом, вектор заполняется коэффициентами перед степенями полинома справа налево.

Функция вычисляет вектор длины N, состоящий из корней полинома.

На рисунке 2.6.1 приведены примеры вычисления корней уравнений с помощью функций Root и Polyroots.

Рисунок 2.6.1 – Примеры решения уравнений

MathCAD дает возможность решать системы уравнений и неравенств.

Наиболее распространенным методом решения уравнений в Mathcad является блочный метод. Для решения системы этим методом необходимо выполнить следующее:

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

Б) задать ключевое слово Given, которое указывает, что далее следует система уравнений;

В) ввести уравнения и неравенства в любом порядке (использовать кнопку логического равенства на панели знаков логических операций Для набора знака «=» в уравнении);

Г) ввести любое выражение, которое включает функцию Find.

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

После набора решающего блока Mathcad возвращает точное решение уравнения или системы уравнений.

Обратиться к функции Find можно несколькими способами:

X := Find(x1, x2,…) – формируется переменная или вектор, содержащий вычисленные значения корней.

Сообщение об ошибке «Решение не найдено» появляется тогда, когда система не имеет решения или для уравнения, которое не имеет вещественных корней, в качестве начального приближения взято вещественное число и наоборот.

Приближенное решение уравнения или системы можно получить с помощью функции Minerr.

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

Примеры решения систем уравнений с помощью решающего блока приведены на рисунке 2.6.2.

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

Матричный метод решения системы линейных уравнений реализован в функции Lsolve. Общий вид функции:

Где А – матрица коэффициентов перед неизвестными, B – вектор свободных членов.

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

Рисунок 2.6.2 – Примеры решения систем уравнений

Из рисунка 6.2 видно, что при решении системы уравнений блочным методом можно получить численные значения корней системы уравнений, без присваивания и с присваиванием их в переменные x1 и x2. При решении системы уравнений матричным методом продемонстрированы два варианта: с использованием стандартной функции Lsolve и обратной матрицы.

Решение уравнений в MathCad

Для решения уравнений в Mathcad можно воспользоваться двумя способами:

Использование метода Given — Find:

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

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

Рис. 1. Ввод данных в поле mathcad

Далее вводится уравнение. Его можно записать в явном или неявном виде. Само уравнение набирается с клавиатуры вручную с использованием панели Calculator. Из этой панели можно взять основные математические операции: дроби, тригонометрию, факториалы и прочее. Уравнение нужно записывать с использованием логического символа «ровно». На панели Boolean он выделен жирным шрифтом (см. рис. 2)

Рис. 2. Панели Boolean и Calculator

После уравнения вводится функция Find(x) (где х — переменная). Это функция, которая возвращает результат. Значение функции Find(x) можно присвоить какой-либо переменной с помощью символа «:=» и использовать ее далее в расчетах

Для получения результата, после Find(x) следует поставить символ «» либо «=» из панели Evaluation (см. рис. 3). Причем, если вы используете символ ««, то mathcad определит все корни уравнения и сформирует матрицу результатов. Но если вы используете символ «=«, то mathcad выведет единственный корень, который был наиболее близок к начальному приближению. Так что, если вы не знаете сколько корней имеет уравнение, то лучше использовать стрелочку

Рис. 3. Панель «Evaluation»

В зависимости от сложности уравнения через определенное время MathCad выведет результат. На рис.4 можно рассмотреть синтаксис и различие результатов выводимых mathcad. Обратите внимание, что выводимые результаты одного и того же уравнения различны

Рис. 4. Результат численного решения уравнения

Mathcad позволяет решать уравния в символьном виде. Например, если мы заменим все числовые константы на неизвестные параметры и решим уравнение относительно x, то результат выведется в символьном виде (см. рис. 5). Причем, обратите внимание, что в данном случае нам не нужно вводить начальное приближение и мы должны использовать символ «» для вывода результата

Рис. 5. Результат символьного решения уравнения

Использование метода Solve:

Этот метод отличается от выше рассмотренного синтаксисом. На свободном поле вводим уравнение с использованием логического символа «ровно» из панели Boolean. После ввода уравнения, не смещая курсор ввода, на панели Symbolic нажимаем кнопку solve (см. рис. 6)

Рис. 6. Панель Symbolic

Затем ставим запятую и вводим переменную, относительно которой нужно решить уравнение (в нашем случае это x). Нажимаем Enter на клавиатуре и смотрим результат (см. рис. 7)

Рис. 7. Результат решения уравнения методом Solve

Обратите внимание, что метод подходит как для численного так и для символьного представления результатов

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

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.

Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.


источники:

http://matica.org.ua/metodichki-i-knigi-po-matematike/reshenie-zadach-v-srede-mathcad/23-tema-6-reshenie-uravnenii-i-sistem-kratkie-teoreticheskie-svedeniia

http://student-engineer.pro/mathcadold/equat/