No Image

Решение кубических уравнений в маткаде

27 просмотров
05 мая 2020

Многие уравнения и системы из них не имеют аналитического решения. Однако они могут решаться численными методами с заданной погрешностью (не более значения, заданного системной переменной TOL). Для простых уравнений вида решение находится с помощью функции:root(Выражение Имя переменной). Функция реализует вычисления итерационным методом, причем можно задать начальное значение переменой, это полезно, если возможны несколько решений и тогда выбор решения определяется выбором начального значения переменой. На рисунке 40 приведен пример применения функции root для вычисления корня уравнения.

Рис. 40.Пример решения уравнения с использованием функцииroot

Применяя функцию root надо помнить, что корень функции – это не то значение аргумента, при котором выражение равно нулю, а то значение аргумента, при котором значение выражения не превышает значения системной переменой TOL. Чтобы функция сработал правильно, необходимо переменной TOL присвоить новое значение, например 10 -7 , заменив им предопределенное значение (10 -3 ).

Для поиска корней полинома степени MathCAD содержит функцию: polyroots(V). Она возвращает вектор корней многочлена (полинома) степени n, коэффициенты которого находятся в векторе V, имеющим длину, равную n+1. Вектор коэффициентов заполняется в обратном порядке. Включая все коэффициенты многочлена, даже если они равны нулю.

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

Между функциями find и miner существует принципиальное различие. Функция find используется, когда решение реально существует (хотя и не является аналитическим), а функция miner пытается найти максимально приближение даже к несуществующему решению путем минимизации среднеквадратической погрешности решения.

Рассмотрим пример решения системы нелинейных уравнений с помощью функции find.

Первое решение найдем, приняв ограничение x 0 (рис. 41 б). Следует отметить, что для решения системы уравнений указали начальные значения x и y (т.е. x:=-1 y:=1 )

Рис. 41.Пример решения системы нелинейных уравнений:а – первая часть решения при условии x>0; б – вторая часть решения при условии x

Рис. 42.Пример построения графика:а – задание функции, ее аргументов и вызов шаблона для построения графика, б – иллюстрация результата

На одном графике можно построить до 16 зависимостей. Для этого через запятую в место заполнения для наименования оси ординат (ось у) вносят наименования функций (рис. 43).

Рис. 43.Пример построения нескольких зависимостей на одном рисунке

5.2.1. Системы уравнений: функция Find

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

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

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

Вычислительный блок Given /Find

Для численного решения систем уравнений применяется тот же самый вычислительный блок, что и для символьных вычислений (см. разд. 5.1.1). Повторимся, что он состоит из ключевого слова Given , самой системы уравнений, записанной при помощи логических операторов панели Boolean (Булевы операторы), а также встроенной функции Find. Find(x1, . ,хM) — встроенная функция для решения системы алгебраических уравнений и неравенств относительно переменных x1. xM . Значение функции Find представляет собой вектор, составленный из решений по каждой переменной.

Читайте также:  Самый дешевый монитор 240 герц

Встроенная функция Find использует в качестве численного алгоритма один из градиентных методов (см. разд. 5.3). Этот факт налагает некоторые ограничения на уравнения системы, которые должны быть достаточно гладкими функциями своих аргументов.

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

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

  • вместо оператора символьного вывода после функции Find следует использовать оператор численного вывода (знак равенства);
  • перед вычислительным блоком Given/Find должны быть заданы начальные значения ( guess value ) для всех неизвестных, т. е. всем переменным x1, . ,хM , относительно которых решается уравнение, следует предварительно присвоить некоторые численные значения, с которых и будет начинаться поиск корня. Таким образом, присвоение начального значения требует априорной информации о примерном местонахождении корня и связано с проблемой локализации корней, упомянутой в начале разд. 5.2.

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

Одно уравнение с одним неизвестным

Рассмотрим в качестве примера (листинг 5.8) одно уравнение с одним неизвестным, которое уже решалось нами аналитически (см. листинги 5.1 и 5.2). Уравнение имеет три корня, как видно из графика, приведенного на рис. 5.4. Обратите внимание, что перед ключевым словом Given переменной х присваивается некоторое значение х=1 . В остальном применение функции Find для решения уравнения не отличается от символьных расчетов.

Листинг 5.8. Численное решение кубического уравнения с начальным значением x=1

Рис. 5.4. Графическая иллюстрация решения кубического уравнения

Как уже отмечалось выше, результатом численного решения алгебраического уравнения является один его корень. Для того чтобы отыскать остальные корни, необходимо повторно решить уравнение, взяв для переменной х другие начальные значения. Например, если присвоить ей в начале листинга значение х=-1 , то численным процессором будет выдан в качестве результата другой корень х=0 (листинг 5.9). Такая работа программы Mathcad связана с особенностями применяемых численных алгоритмов (см. разд. 5.3). Для численного определения всех корней уравнения следует применять специальные приемы, например, сканирование по неизвестным (см. разд. 5.2.4).

Листинг 5.9. Численное решение кубического уравнения с начальным значением x=-1 сходится к другому корню x=0

Приведем еще один пример численного решения алгебраических уравнений, обратившись на этот раз к системе двух уравнений, которая также уже исследовалась нами при помощи символьного процессора. Система имеет два решения, показанные графически на рис. 5.2 и найденные аналитически в листинге 5.7 (см. разд 5.1.3). Листинг 5.10, демонстрирующий численное решение рассматриваемой системы, начинается с присвоения неизвестным начальных значений х=10,у=10 . После этого следует ключевое слово Given и два логических оператора, выражающих рассматриваемую систему уравнений. В результате (последняя строка листинга) Mathcad находит один из корней х=1,у=0, причем первый элемент вектора решения есть первый аргумент функции Find , а второй элемент — ее второй аргумент. Поскольку решение производится численным методом, оно выдается с некоторой погрешностью, не превышающей встроенной константы CTOL . Если задать в первой строке листинга другие начальные значения, расположенные ближе к другому корню, например, х=0,у=0 , то найден в итоге будет другой корень х=-0.5,у=-0.75.

Читайте также:  Полезные инструменты на алиэкспресс

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

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

Листинг 5.10. Численное решение системы алгебраических уравнений

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

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

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

Читайте также:  Допустимое количество знаков в инстаграм

Листинг 5.11. Численное решение уравнения, имеющего бесконечное множество корней, приводит к одному из них

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

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

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

Листинг 5.12. Численное решение системы алгебраических уравнений и неравенств

Уравнение и системы уравнений в математическом пакете Mathcad в символьном виде решаются с использованием специального оператора символьного решения solve в сочетании со знаком символьного равенства, который может быть также введен с рабочей панели “Символика”. Например:

Аналогичные действия при решении уравнений в Mathcad можно выполнить, используя меню “Символика”. Для этого необходимо записать вычисляемое выражение. Затем выделить переменную, относительно которой решается уравнение, войти в меню Символика, Переменная, Разрешить. Например:

В случае, если необходимо упростить полученный результат, используется знак равенства [=]. Например:

При решении некоторых уравнений, результат включает большое количество символов. Mathcad сохраняет его в буфере, а на дисплей выводитcя сообщение: “This array has more elements than can be displayed at one time. Try using the “submatrix” function” – “Этот массив содержит больше элементов, чем может быть отображено одновременно. Попытайтесь использовать функцию “submatrix””. В этом случае рекомендуется использовать численное решение. Или, в случае необходимости, символьное решение может быть выведено и отображено на дисплее.

Символьное решение может быть получено с использованием блока given … find. В этом случае при записи уравнения для связи его левой и правой части использует символ логического равенства “=” с панели инструментов Boolean, например:

Аналогичным способом решаются системы уравнений в символьном виде. Ниже приводятся примеры решения систем уравнений в символьном виде различными способами. При использовании оператора символьного решения solve в сочетании со знаком символьного равенства система уравнений должна быть задана в виде вектора, который вводится вместо левого маркера оператора solve, а перечень переменных, относительно которых решается система, вместо правого маркера. Например:

Пример использования блока given…find для решения системы уравнений:

Комментировать
27 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock
detector