Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 58
Текст из файла (страница 58)
В таких случаях решение ищут по графику, используя специальные инструменты панели Graph (Графические). Данный способ довольно трудоемок, однако он способен обеспечить точность, мало уступающую точности численных методов.8.1.1. Аналитическое решение уравненийДля аналитического решения уравнений в системе Mathcad существует специальныйоператор solve (Решить). Чтобы найти с его использованием корни уравнения, выполните следующую последовательность действий.1. Введите оператор solve (Решить) с помощью одноименной команды панели Symbolic(Символьные).2.
В левом маркере задайте вид решаемого уравнения. В качестве знака равенства следует использовать логическое равенство (Bold Equal — вводится сочетанием Ctrl+=).Если уравнение приведено к стандартному виду, то достаточно будет определитьлишь его левую часть. При этом выражение будет приравнено к нулю автоматически.
Также в левый маркер можно внести и имя функции — в этом случае будут найдены выражения, определяющие ее нули. Форма записи уравнения через функциюудобна в том случае, если оно имеет большую длину.3. В правый маркер внесите переменную, относительно которой должно быть решеноуравнение.Ответ оператор solve возвращает в виде выражения (численного или буквенного), которое вполне можно использовать в дальнейших вычислениях. Если решений имеетсянесколько, то возвращается содержащий их вектор.При символьном решении уравнений нет особой разницы, сколько переменных содержит уравнение. Ответ ищется в виде выражения, и поэтому для системы неважно, будет ли оно содержать буквенные или численные элементы.
Исходя Из этого вы можетенайти корни как уравнения нескольких переменных, так и уравнения с параметрамиили буквенными коэффициентами.Рассмотрим особенности решения каждого из типов уравнений, встречающихся на практике.252 •Глава 8. Решение уравнений и систем уравненийЛучше всего Mathcad справляется с поиском корней алгебраических полиномов.Причем находятся все корни — как действительные, так и мнимые. Общее их количество, исходя из знаменитой теоремы алгебры (теорема Гаусса), равно п, где п — степень полинома.
Например, в случае полинома третьей степени мы получим три решения.Пример 8 . 1 . Поиск всех решений уравнения, являющегосяалгебраическим полиномом-1(х+ 1)-(х + 2) + (х+ 2)-(х2 + l) = 2 solve,х± + I,На практике обычно бывает необходимо найти только действительные корни полинома.Увы, но указать Mathcad, что поиск решений должен быть осуществлен только в пределах действительной области, невозможно. Бессмысленно для этого пытаться использовать оператор assume (подробно о нем читайте в гл.
7), присвоив переменной константу real или задав область поиска от -со до со посредством модификатора RealRango.Дело в том, что операторы assume и solve не сочетаются — при попытке их совместитьsolve прекратит работу. Это одна из самых известных недоработок системы Mathcad —и обойти ее невозможно. Так что, если комплексные корни вас не интересуют, простоне обращайте на них внимания.В алгебре доказано, что аналитические выражения существуют лишь для корней полиномов до пятой степени. Однако это не означает, что оператор solve не сможет найтирешения полиномиального уравнения более высокой степени. Mathcad может решатьуравнения любой степени — но приблизительно. Если символьный процессор обнаружит, что старший член в полиноме возведен в степень, превышающую четыре, им будет задействован численный метод. В результате корни будут найдены, но не в формевыражений, а в форме чисел с плавающей точкой.
Чтобы понять разницу, изучите пример 8.2.Пример 8.2. Решение полиномиального уравнения низкой и высокойстепенейУравнение второй степени:1(х+ 2) - ( х + 13) = 1 solve,х ->-151222 '489521-15V21 .21•489522J8.1. Решение уравнений* 253Уравнение пятой степени:1.0459203853766219542^11.8490158267250284186( х - 1 ) - ( х - 2 ) - ( х - 3 ) - ( х - 4 ) - ( х - 5 ) = 1 solve,х ->3.27583419331709204823.7907343035445203650ч5.038495 2910367372140,В Mathcad имеется функция polyroots (о ней мы поговорим ниже), которая служит длянахождения корней полинома.
В основе нее лежит численный метод, поэтому она позволяет находить корни полиномов любой степени. В общем, в случае полиномов степени 5 и выше между использованием polyroots и оператора solve нет столь уж ощутимых различий. Единственное, при применении solve решение находится более точно —вплоть до 20-го знака мантиссы. Точность же работы polyroots ограничена 15-ю знаками. Кроме того, polyroots не может оперировать с очень большими или очень малыми(по абсолютной величине) значениями.Без особых трудностей справляется Mathcad и с алгебраическими уравнениями болеесложного вида, содержащими разного рода корни.
Главная проблема, которая при этомможет возникнуть, это чрезвычайно большие выражения ответа, которые могут занимать несколько страниц и не поддаваться оптимизации посредством оператора simplify.Если вы столкнетесь с такой сложностью, то пересчитайте ответ в число с плавающейточкой с нужным уровнем точности. Служит для этого оператор float (или аналогичная команда меню Symbolics), принимающий в качестве параметра количество знаковмантиссы, которые должны быть вычислены (предел точности — 4000 знаков мантиссы).Пример 8.3. Решение алгебраических уравнений сложного видаОтвет в следующем уравнении получается слишком громоздким, поэтому пересчитываем егов десятичную дробь с точностью до 40 знаков1х+solve ,x-> -.68232780382801932736948373971104825689float, 40В некоторых случаях ответ может получаться столь большим, что его отображение станет невозможным.
При этом будет выдано сообщение об ошибке: Discarding huge result(Выбраковка огромного результата), а сам результат будет помещен в текстовой форме в буфер обмена. Однако как-то воспользоваться им будет практически невозможно.Поэтому, если подобная ситуация возникнет, для решения уравнения лучше применить один из численных алгоритмов (или пересчитать ответ в число с плавающей точкой с помощью оператора float).Для решения уравнений оператором solve проводятся аналитические преобразования,по причине чего зачастую корни можно найти в общем виде (то есть выразить их черезбуквенные коэффициенты). Аналогично solve справится с несложными уравнениямис параметрами.
Эта его возможность особенно полезна при решении физических и технических задач, так как в соответствующие уравнения обычно входят многочисленныеконстанты.2 5 4 •:• Глава 8. Решение уравнений и систем уравненийПример 8.4. Решение уравнения с параметром(-а)432.а-х - х + а -х- a solve,x —>Весьма неплохо, хотя и заметно хуже по сравнению с алгебраическими уравнениями,справляется символьный процессор с показательными и логарифмическими уравнениями.
Для решения логарифмических уравнений нужно запомнить, что натуральныйлогарифм задается функцией In, десятичный — функцией log. Для задания логарифмапо основанию х также служит функция log. Однако в этом случае она принимает двапараметра: первый соответствует величине, от которой нужно найти логарифм, второйпредназначен для указания основания.Решая логарифмическое или показательное уравнение, ответ оператор solve обычновыдает в виде сложного выражения из чисел и логарифмов от чисел. Чтобы привестиего к более простому виду, следует использовать оператор simplify.Пример 8.5.
Решение логарифмических и показательных уравненийsolve, хsimplifyX -61-,=о-> Оsolve,xsimplifyОтвет для нижележащего уравнения определяется в неявной форме, однако с легкостью можноподсчитать его приблизительное значение:2-х+ 108,х-2solve, х-5-ln(2) + W(2048-ln(2))ln(2)-5-ln(2) + W(2048-ln(2))ln(2)float3.0000000000000000В последнем уравнении примера получен весьма странный результат.
Что такое «W»,откуда оно взялось и как из него можно получить более приемлемое для анализа выражение — ответы на эти вопросы совсем не очевидны. Поэтому для их выяснения обратимся к справочной системе Mathcad.8.1. Решение уравнений* 255В специальной строке раздела поиска вводим «W». В результате система находит целый список разделов, где упоминается данная функция. Однако, исходя из темы данного раздела, более всего нам подойдет статья Special functions and syntax used in symbolicresults (Специальные функции и синтаксис, используемые в символьных результатах).Данная статья содержит список всех специальных функций и констант, которые могутвстречаться в ответах при проведении операций символьных преобразований. Такихфункций и констант довольно много — 22. В данном списке имеется и упоминание профункцию W. Оказывается, данная функция есть не что иное, как функция Ламберта.Чтобы получить про нее более детальную информацию, открываем шпаргалку Specialsymbolic functions, ссылка на которую имеется внизу статьи.
В этой шпаргалке описываются все неиитегральные символьные функции. Из нее мы узнаем, что функцияЛамберта — это функция, обратная функции f(x)=x-e\ Чтобы найти значение W, можно использовать функцию root (корень). Эта функция реализует, в зависимости от формы записи, два численных алгоритма решения уравнений, и о ней мы поговорим весьма подробно ниже. Однако применение root — это не лучший из возможных подходов.Гораздо техничнее использовать оператор float, так как это проще, а также при этомточность найденного значения может быть сколь угодно высокой!Специальные функции могут быть получены в ответах не только при аналитическомрешении уравнений, но при проведении интегрирования, интегральных преобразованиях. В любом случае для приведения ответа к числовой форме используется оператор float.Хуже всего символьный процессор Mathcad решает тригонометрические уравнения.Как известно, большинство таких уравнений имеет бесконечное множество корней и описываются они с помощью специальных выражений, содержащих некоторый целочисленный параметр.
Например, решение уравнения sin(x)=0 запишется как х=я-Ы, Ne R(где R — множество целых чисел). Mathcad же находит корни только на промежуткеодного периода соответствующей уравнению тригонометрической функции. Естественно, удовлетворительным такое решение считать вряд ли возможно. Но в некоторых случаях им все же можно воспользоваться.Пример 8.6. Решение тригонометрических уравненийsin(x)=Osolve,x-» Оcos(x)=0 solve,x-»--n2-1я+ cos(b-x) = 0 solve,х2 a-bГлавная проблема, связанная с решением тригонометрических уравнений в Mathcad,заключается отнюдь не в том, что система находит лишь один корень из бесконечногомножества.