Раздел: Документация
0 ... 77 78 79 80 81 82 83 ... 177 (х- 1)(х-2)-(х-3)(х-4).(х-5)= 1 solve,х Уравнение пятой степени: (1.0459203853766219542 1.8490158267250284186 3.2758341933170920482 3.7907343035445203650 V 5.0384952910367372140 ) В Mathcad имеется функция polyroots (о ней мы поговорим ниже), которая служит для нахождения корней полинома. В основе нее лежит численный метод, поэтому она позволяет находить корни полиномов любой степени. В общем, в случае полиномов степени 5 и выше между использованием polyroots и оператора solve нет столь уж ощутимых различий. Единственное, при применении solve решение находится более точно -вплоть до 20-го знака мантиссы. Точность же работы polyroots ограничена 15-ю знаками. Кроме того, polyroots не может оперировать с очень большими или очень малыми (по абсолютной величине) значениями. Без особых трудностей справляется Mathcad и с алгебраическими уравнениями более сложного вида, содержащими разного рода корни. Главная проблема, которая при этом может возникнуть, это чрезвычайно большие выражения ответа, которые могут занимать несколько страниц и не поддаваться оптимизации посредством оператора simplify. Если вы столкнетесь с такой сложностью, то пересчитайте ответ в число с плавающей точкой с нужным уровнем точности. Служит для этого оператор float (или аналогичная команда меню Symbolics), принимающий в качестве параметра количество знаков мантиссы, которые должны быть вычислены (предел точности — 4000 знаков мантиссы). Пример 8.3. Решение алгебраических уравнений сложного вида * ti 9 - л/х+ 1 + 1 + I и4 solve,х-»0 Ответ в следующем уравнении получается слишком громоздким, поэтому пересчитываем его а десятичную дробь с точностью до 40 знаков -]--- \f~x~2 + 1 х+ -/х+2 solve ,х „-* -.68232780382801932736948373971104825689 float, 40 В некоторых случаях ответ может получаться столь большим, что его отображение станет невозможным. При этом будет выдано сообщение об ошибке: Discarding huge result (Выбраковка огромного результата), а сам результат будет помещен в текстовой форме в буфер обмена. Однако как-то воспользоваться им будет практически невозможно. Поэтому, если подобная ситуация возникнет, для решения уравнетш лучше применить один из численных алгоритмов (или пересчитать ответ в число с плавающей точкой с помощью оператора float). Для решения уравнений оператором solve проводятся аналитические преобразования, по причине чего зачастую корни можно найти в общем виде (то есть выразить их через буквенные коэффициенты). Аналогично solve справится с несложными уравнениями с параметрами. Эта его возможность особенно полезна при решении физических и технических задач, так гак в соответствующие уравнения обычно входят многочисленные константы. Пример 8.4. Решение уравнения с параметрам 4 3 2 ах - х + а х- а (-а) 1 I 1 -I , .3 1 .,2 , у-(-a) + 1 Весьма неплохи, хотя и заметна хуже по сравнению с алгебраическими уравнениями, справляется символьный процессор с показательными и логарифмическими уравнениями. Для решения логарифмических уравнений i ужно запомнить, что натуральный логарифм задастся функцией In, десятичный функцией Log. Для задания логарифма по основанию х также служит функция log. Однако в этом случае она принимает два параметра: первый соответствует величине, от которой нужно найти логарифм, второй предназначен для указания основания. Решая логарифмическое илн показательное уравнение, ответ оператор solve обычно выдает в виде сложного выражения из чисел и логарифмов от чисел. Чтобы привести сто к более простому виду, следует использовать оператор simplify. Пример 8.5. Решение логарифмических и показательных уравнений solve,х 1ов(9-2\2) = 10,ов(3-х) simplify Ответ для нижележащего уравнения определяется в неявной форме, однако с легкостью можно подсчитать его приблизительное значение: 2х + 10 К ,х-2 solve, х -5-ln(2) + W(2048In(2)) Ы2) 3.0000000000000000 -5-ln(2) + W(20481n(2)) ln(2)" Mt В последнем уравнении примера получен весьма странный результат. Что такое «W*, откуда оно взялось и как из него можно получить более приемлемое для анализа выражен не - ответы на эти вопросы совсем неочевидны. Поэтому для их выяснения обратимся к справочной системе Mathcad. В специальной строке раздела поиска вводим «W». В результате система находит целый список разделов, где упоминается данная функция. Однако, исходя из темы данного раздела, более всего нам подойдет статья Special functions and syntax used in symbolic results (Специальные функции и синтаксис, используемые в символьных результатах). Данная статья содержит список всех специальных функций и констант, которые могут встречаться в ответах при проведении операций символьных преобразований. Таких функций и констант довольно много — 22. В данном списке имеется и упоминание про функцию W. Оказывается, данная функция есть нечто иное, как функция Ламберта. Чтобы получить про нее более детальную информацию, открываем шпаргалку Special symbolic functions, ссылка на которую имеется внизу статьи. В этой шпаргалке описываются все неинтегральные символьные функции. Из нее мы узнаем, что функция Ламберта — это функция, обратная функции пх)-х-еЛ. Чтобы найти значение W, можно использовать функцию root (корень). Эта функция реализует, в зависимости от формы записи, два численных алгоритма решения уравнений, и о ней мы поговорим весьма подробно ниже. Однако применение mat — это не лучший из возможных подходов. Гораздо техничнее использовать оператор float, так как это проще, а также при этом точность найденного значения может быть сколь угодно высокой. Специальные функции могут быть получены в ответах не только при аналитическом решении уравнений, но при проведении интегрирования, интегральных преобразованиях. В любом случае для приведения ответа к числовой форме используется оператор float. Хуже всего символьный процессор Maihcad решает тригонометрические уравнения. 1<ак известно, большицетво таких уравнений имеет бесконечное множество корней и описываются они с помощью специальных выражений, содержащих некоторый целочисленный параметр. Например, решение уравнения sin(x)-0 запишется как x-nN, Ne R (где R — множество целых чисел). Mathcad же находит корни только на промежутке одного периода соответствующей уравнению тригонометрической функции. Естественно, удовлетворительным такое решение считать вряд ли возможно. Но в некоторых случаях им все же можно воспользоваться. Пример 8.6. Решение тригонометрических уравнений sin(x)-Osolve,x-* 0 со*(х)-0 »огув,х-* -. я —I л яш(а-х) + cos(b-x) = 0 solve,X -»---2 a-b Главная проблема, связанная с решением тригонометрических уравнений в Mathcad, заключается отнюдь не в том, что система находит лишь один корень нз бесконечного множества. Она связана даже не с тем, что ответ зачастую выдается в виде огромного выражения или содержит специальные функции. Все гораздо хуже: решая тригонометрические уравнения, Mathcad нередко ошибается. Особенно вероятна ошибка при наличии параметров и разнородных функций. Пример 8.7. Неверное аналитическое решение уравнения .91686838433 -.3 269 639712 + .6736886743 i 4-.3269639712-.6736886743.v 33 siu(x) + cos (ах) = 1 solve, х float, 10 0 ... 77 78 79 80 81 82 83 ... 177
|