Решить трансцендентное уравнение в маткаде

Решение нелинейных уравнений и систем уравнений в пакете MathCAD

Решение нелинейных уравнений

Вычисление корней численными методами включает два основных этапа:

· уточнение корней до заданной точности.

Рассмотрим эти два этапа подробно.

Отделение корней нелинейного уравнения

Учитывая легкость построения графиков функций в MathCAD , в дальнейшем будет использоваться графический метод отделения корней.

Пример. Дано алгебраическое уравнение

.

Определить интервалы локализации корней этого уравнения.

Пример. Дано алгебраическое уравнение

.

Определить интервалы локализации корней этого уравнения.

На рисунке приведен график функции , построенный в MathCAD . Видно, что в качестве интервала изоляции можно принять интервал . Однако уравнение имеет три корня. Следовательно, можно сделать вывод о наличии еще двух комплексных корней. ¨

Уточнение корней нелинейного уравнения

Для уточнения корня используются специальные вычислительные методы такие, как метод деления отрезка пополам, метод хорд, метод касательных (метод Ньютона) и многие другие.

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

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

Заметим, что для вычисления всех трех корней использовался прием понижения порядка алгебраического уравнения, рассмотренный в п. 8.1.1. ¨

Функция root с двумя аргументами требует задания (до обращения к функции) переменной начального значения корня из интервала локализации.

Пример 8.1.5. Используя функцию root , вычислить изменения корня нелинейного уравнения при изменении коэффициента а от 1 до 10 с шагом 1.

Функция polyroots . Для вычисления всех корней алгебраического уравнения порядка (не выше 5) рекомендуется использовать функцию polyroots . Обращение к этой функции имеет вид polyroots (v) , где v – вектор, состоящий из n +1 проекций, равных коэффициентам алгебраического уравнения, т.е. . Эта функция не требует проведения процедуры локализации корней.

Пример. Используя функцию polyroots , найти все три корня уравнения , включая и два комплексных

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

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

Ограничения содержат равенства или неравенства, которым должен удовлетворять искомый корень.

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

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

Аналогично можно задать алгоритм решения и для функции Minerr ( x ).

Использование численных методов в функциях Find ( x ), Minerr ( x ) требует перед блоком Given задать начальные значения переменным, по которым осуществляется поиск корней уравнения.

Пример. Используя блок Given , вычислите корень уравнения в интервале отделения .

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

В зависимости от того, какие функции входят в систему уравнений, можно выделить два класса систем:

· алгебраические системы уравнений;

· трансцендентные системы уравнений.

Среди алгебраических систем уравнений особое место занимают системы линейных алгебраических уравнений (СЛАУ).

Системы линейных алгебраических уравнений

Системой линейных алгебраических уравнений (СЛАУ) называется система вида:

В матричном виде систему можно записать как

,

где – матрица размерности , – вектор с проекциями.

Для вычисления решения СЛАУ следует использовать функцию lsolve , обращение к которой имеет вид: lsolve (А, b ), где А – матрица системы, – вектор правой части.

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

MathCAD дает возможность находить решение системы уравнений численными методами, при этом максимальное число уравнений в MathCAD 2001 i доведено до 200.

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

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

Пример. Дана система уравнений:

Определить начальные приближения для решений этой системы.

Видно, что система имеет два решения: для первого решения в качестве начального приближения может быть принята точка (-2, 2), а для второго решения – точка (5, 20). ¨

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

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

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

· ограничения со знаком ¹ ;

· дискретная переменная или выражения, содержащие дискретную переменную в любой форме;

· блоки решения уравнений не могут быть вложены друг в друга, каждый блок может иметь только одно ключевое слово Given и имя функции Find (или Minerr ).

Пример. Используя блок Given , вычислить все решения системы предыдущего примера. Выполнить проверку найденных решений.

Пример. Используя функцию , вычислите решение системы уравнений

Решение систем трансцендентных уравнений

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

Последовательность действий при численном решении сводится к следующему:

Задаются начальные значения для искомых переменных.

Формируется блок решения, а именно: между ключевыми словами Given и find(список искомых переменных) записывается система уравнений. Напомним, что знак «=» при написании уравнений выделен цветом. Это – булевский знак! Его следует брать с панели Boolean.

После конструкции find записывается знак «=».

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

Пример 15. Требуется найти точки экстремума функции .

Решение. Известно, что необходимым условием для существования экстремума – равенство нулю частных производных первого порядка. Поэтому на начальном этапе необходимо получить частные производные по переменной x и по переменной y и приравнять их нулю. Для вычисления производной можно воспользоваться соответствующей командой панели Calculus(Вычислить). После чего процесс решения задачи можно свести к процессу решения системы уравнений. На рис. 6.17 представлены фрагменты документа MathCAD, содержащие поиск экстремумов функции.

a) b)

Рис. 6.17. Решение системы нелинейных уравнений в
задаче поиска экстремума

На рис. 6.17 представлены два варианта записи решения. На фрагменте, представленном на рис. 6.17, а, системы записаны в развернутом виде, а на рис. 6.17, b частные производные оформлены в виде функций и результаты решения заносятся в векторные значения.

Пример 16. Требуется найти точки пересечения параболы, заданной уравнением и прямой, заданной в виде: .

Решение. Предоставим два варианта решения задачи:

решение с использованием блока решения;

решение в графическом виде.

Вариант а

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

Рис. 6.18. Решение системы нелинейных уравнений в
задаче поиска экстремума

Поскольку используется символьный блок решения, для представления результатов в числовом виде используется команда float. Анализ полученных результатов показывает, что заданные линии пересекаются в двух точках с координатами (r, t) – (17.8, 3.49) и (10.0, –1.15).

Вариант b

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

Изменение независимой переменной на начальном этапе будет взято «по умолчанию». Для уточнения координат точек пересечения выполняются следующие действия:

переустанавливаются на графике диапазоны для изменения x и y;

включается режим трассировки, путем щелчка правой кнопкой мыши на графике, выбор команды Trace… (Трассировка . );

активизирует окно с координатами трассировки – щелчок левой кнопкой мыши на графике;

появившиеся координатные оси можно перемещать по графику от одной точки пересечения до другой.

На рис. 6.19 приведен фрагмент документа с графическим решением задачи – получение точек пересечения двух линий в декартовой системе координат.

Рис. 6.19. Решение системы нелинейных уравнений в
задаче поиска экстремума

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

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

Пример 17. Требуется построить график функции, заданной в параметрическом виде: .

Решение. Для построения графика функции, заданной в параметрическом виде, сначала нужно выбрать шаблон двумерного графика
X-Y Plot, в середине горизонтальных и вертикальных осей ввести функции Переменная может быть задана, как индексированная переменная. На рис. 6.20 представлены результаты построения требуемой функции.

Рис. 6.20. График сложной функции, заданной парметрически

Глава 7
ОПЕРАЦИИ С ВЕКТОРАМИ И МАТРИЦАМИ, МАТРИЧНЫЕ ФУНКЦИИ
В МАТЕМАТИЧЕСКОМ ПАКЕТЕ MATHCAD

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

Понятие «вектор» обычно не отделяют от понятия «матриц». Векторы могут рассматриваться как матрицы, состоящие из одного столбца (или строки).

Матричные вычисления в MathCAD можно условно разделить на три основных типа.

К первому относятся такие элементарные действия над матрицами, как создание, извлечение из них данных, их умножение, сложение или скалярное произведение (в случае векторов). Для их реализации служат специальные операторы трех панелей семейства Math (Математические): Calculator (Калькулятор), Matrix (Матричные) и Symbolics (Символьные).

Ко второму типу можно отнести те матричные преобразования, которые требуют использования специальных функций и встроенных алгоритмов матричной алгебры, таких как, например, функции вычисления определителя, матричных норм или сортировки элементов векторов по возрастанию. Функции этой группы можно найти в категории Vector and Matrix (Векторные и матричные) у мастера функций.

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

В языках программирования начальные индексы массивов обычно равняются 0. По умолчанию в MathCAD индексы строк и столбцов также отсчитываются с 0. В том случае, если такая система вам неудобна или непривычна, можно изменить точку отсчета индексов на 1, задав системную переменную ORIGIN: ORIGIN:= 1.

Доступ к элементам вектора или матрицы осуществляется с помощью индексированных переменных. Например, чтобы использовать пятый элемент вектора с именем А, нужно записать этот элемент в виде: . А для того, чтобы взять элемент матрицы В, расположенный на пересечении 3-ей строчки и 4-го столбца нужно записать: .

Для заданияиндексов на панели Matrix предусмотрена специальная кнопка Subscript (Индекс). Перейти к записи индекса можно также с помощью клавиши «[» ( левая квадратная скобка). Нажав ее, вы увидите, что на месте будущего индекса, чуть ниже текста имени матрицы, появится черный маркер. В него через запятую следует ввести значения индексов. На первом месте при этом должен стоять номер строки, а на втором – столбца.

Дата добавления: 2015-01-10 ; просмотров: 1013 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

MathCAD — это просто! Часть 2. Уравнения

Решение уравнений на бумаге — это задача, с которой каждый знаком еще со школьной скамьи. Сначала мы учились решать простые линейные уравнения, деля а на b и получая x, потом — системы уравнений, затем переходили к квадратным уравнениям. Находим дискриминант, извлекаем корень, делим, складываем… Все это вам знакомо, не так ли? Знакомы, наверное, и трансцендентные уравнения: тригонометрические, логарифмические (они же показательные), смешанные…

Системы трансцендентных уравнений — это вообще песня, причем песня из серии «этот стон у нас песней зовется». Люди давно уже пришли к выводу, что решать уравнения с помощью компьютера — отнюдь не роскошь, а вполне разумный подход к делу. Только раньше каждый, кто желал решить уравнение, должен был уметь программировать и владеть при этом какими-нибудь численными методами — например, методом Гаусса для решения систем линейных уравнений или методом Зейделя для решения трансцендентных. Сейчас эти все методы, конечно, тоже используются, но большая часть пользователей могут забыть их как страшный сон — все эти вычисления возможны в MathCAD’е, и именно о том, как их выполнять в этом замечательном математическом пакете, я сейчас и расскажу.

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

Довольно значительное число уравнений поддаются аналитическому решению — т.е. решению в обобщенном виде, когда корни уравнения представляются в виде какой-то формулы, выражающей их зависимость от входящих в уравнение функций и различных коэффициентов перед ними. При этом, однако, надо заметить, что такой подход применим отнюдь не ко всем уравнениям — большая часть трансцендентных уравнений не может быть решена аналитически. Поэтому мы сейчас будем говорить преимущественно о полиномиальных уравнениях, известных также под названием алгебраических. Алгебраическим называется уравнение, которое можно преобразовать так, что в левой части будет многочлен от одной или нескольких неизвестных, а в правой — нуль. Степень многочлена называется степенью уравнения. Простейшие алгебраические уравнения: линейное уравнение — уравнение 1-й степени с одним неизвестным ax + b = 0, имеющее один действительный корень; квадратное уравнение — уравнение 2-й степени ax2 + bx + c = 0, которое в зависимости от значения коэффициентов может иметь либо два различных, либо два совпадающих действительных корня либо не иметь действительных корней. Вообще алгебраическое уравнение степени n не может иметь более n корней, что доказывается в рамках основной теоремы алгебры, которую в ВУЗах проходят в курсе математического анализа.

Что ж, давайте, пожалуй, перейдем к практике. То есть запустим MathCAD, включим панель символьных вычислений (Symbolic) — о том, как это сделать, уже было рассказано ранее в первой статье про MathCAD. На этой панели нам с вами понадобится оператор solve — именно он отвечает за аналитическое решение уравнений. Общий вид этого оператора такой: уравнение solve, переменная > решение. Здесь уравнение — это именно то уравнение, решение которого мы хотим найти в общем виде, а переменная — это символ, обозначающий в нашем уравнении переменную величину. Его нужно указывать для того, чтобы MathCAD (не такой уж он умный, как иногда кажется!) мог отличить переменную от коэффициентов. Давайте попробуем найти решение обычного квадратного уравнения ax2 + bx + c = 0. Для этого нажмите на кнопку Solve на панели инструментов символьных вычислений и на то место, где должно быть записано уравнение, введите наше квадратное уравнение. Здесь есть два тонких момента. Во-первых, чтобы записать «x2», нужно после x нажать Shift + 6 — тогда вы перейдете от записи переменных к записи показателя степени. Чтобы затем переключиться в режим записи других слагаемых в уравнении, достаточно нажать на клавиатуре стрелку вправо. Вообще навигация по записям в MathCAD при помощи стрелок вполне прозрачная — вы передвигаетесь стабильно в том направлении, куда указывает стрелка, и перескакиваете в показатели степени и индексы автоматически. Во-вторых, при записи уравнения в операторе solve «равно» нужно не обычное, а логическое — оно записывается с клавиатуры комбинацией Ctrl + =. При этом, если правая часть вашего уравнения равна нулю, то и ноль, и знак равенства можно опускать — MathCAD посчитает, что уравнение записано в стандартном виде, и успешно (если это, конечно, возможно) решит его. Итак, давайте посмотрим, что получилось от «скармливания» оператору solve нашего с вами квадратного уравнения.

Как видите, ничего неожиданного не произошло: MathCAD честно воспользовался известными всем еще из школьного курса алгебры формулами Виета, а решения уравнения записал в виде вектора-столбца. Несложно самостоятельно убедиться в том, что MathCAD знает и формулы Кордано для решения кубических уравнений — их он также может решать с произвольными коэффициентами. Правда, конечно, решения получаются несравненно более громоздкими, а потому я их здесь не буду приводить. Это же справедливо и для уравнений четвертой степени, для которых также существуют аналитические решения. Решение других видов уравнений (например, показательных) в аналитическом виде также вполне возможно. Например, если мы запишем уравнение eax + b = 0, то MathCAD совершенно справедливо сообщит, что решением этого уравнения будет выражение ln(-b)/a. Точно так же можно решать простые тригонометрические уравнения.

Численное решение уравнений с помощью функции solve

Но, конечно, такие красивые результаты в максимально обобщенной форме мы сможем получать далеко не всегда. Уже на уравнениях пятой степени MathCAD спотыкается, и произвольные коэффициенты приходится заменять постоянными. Впрочем, в этом ничего страшного нет — даже уравнения третьей степени со всеми произвольными коэффициентами решать вряд ли имеет смысл, поскольку гораздо проще подставить коэффициенты и получить нормальные числа в решении — в конце концов, общие формулы для решения алгебраических выражений используются именно из-за того, что живому человеку гораздо проще подставить числа в готовую формулу, чем подбирать каждый раз корни уравнения. С компьютерами дело обстоит в большинстве случаев с точностью до наоборот — получить численное решение уравнения зачастую гораздо проще, чем аналитическое. Оператор solve умеет находить и численные решения уравнений. Если аналитическое решение получить не удается, он автоматически подключает систему нахождения численных решений уравнений. Так что, если мы запишем совершенно невообразимое для нормального человека уравнение x25 + sin(x) + ln(x) + ex + 1/x = 0, то MathCAD, и глазом не моргнув, выдаст нам результат вычислений.

Но численное решение уравнений с помощью функции solve — честно говоря, не лучшая идея. Некоторые виды уравнений она решает из рук вон плохо — в первую очередь, конечно же, это относится к уравнениям тригонометрическим. Начнем с того, что эта функция выдает решение только для одного периода в то время, как большая часть решений тригонометрических уравнений описывается с помощью специального целочисленного параметра, выражающего номер периода. Но это, в общем-то, не самое худшее, поскольку иногда использование solve приводит к получению совершенно неверного результата, который при подстановке его в уравнение дает совершенно неверное значение. Конечно, это является минусом MathCAD’а, но положение дел совсем не фатально. Если использовать специальные методы решения трансцендентных уравнений, то численные результаты будут совершенно адекватными. Можно также пойти по другому пути, например, преобразуя выражения с помощью символьного процессора MathCAD (о том, как это делается, я еще расскажу в дальнейшем), а затем уже решая с помощью solve более простые уравнения, получившиеся в результате этих преобразований. Численное решение уравнений требует от пользователя понимания того, что он ожидает в результате этого решения получить. Поэтому прежде, чем приступать к рассказу о самом процессе численного решения, я расскажу об одной полезной функции, которая пригодится для численного решения простых трансцендентных уравнений.

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

Эта очень хорошая и полезная во всех смыслах функция имеет лишь одно ограничение — она может найти всего один корень. К сожалению, несущественным это ограничение назвать, честно говоря, сложно. Впрочем, вы увидите, что и его запросто можно обойти — разработчики MathCAD, по крайней мере, предусмотрели такую возможность, и ею вполне можно воспользоваться, если, конечно, в этом есть необходимость. Функция root имеет следующий вид: root(функция, переменная). Функция — это фактически левая часть уравнения в стандартном виде, т.е. уравнения, в котором левая часть равна нулю. Переменная — это, конечно же, тот символ, который обозначает в функции переменную величину. Для использования функции root нужно задать начальное приближение — то есть число, отталкиваясь от которого, функция root будет искать корни нашего уравнения. От начального приближения может весьма существенно зависеть и сам результат работы функции root, особенно если искомые корни уравнения находятся сравнительно близко. Начальное приближение задается очень просто: набираем имя нашей переменной до функции root, ставим двоеточие (MathCAD самостоятельно преобразует его в знак присвоения «:=»), пишем число, соответствующее нашему начальному приближению.

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

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

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


источники:

http://helpiks.org/2-4979.html

http://nestor.minsk.by/kg/2008/14/kg81401.html