Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 56
Текст из файла (страница 56)
Как и collect simplify способен вынести общий множитель за скобку. Кроме того,simplify «умеет» приводить подобные слагаемые и производить арифметические расчеты. Главное же достоинство рассматриваемого оператора — он способен совмещать всеэти операции так, чтобы упрощение было максимальным.7.6. Комплексное упрощение выражений* 243Пример 7.13. Упрощение выражений33х -У22х -У22х -2ах + а- simplify2х - ( а + 3)-х+ 3-аsimpli fyх- ах-3-2 + х-у + 2Xух+ уJх-у2.х У2simplify —>х+уОчень часто глубина упрощения выражения и результат этой операции зависят от того,какие значения могут принимать входящие в выражения величины. По умолчаниюMathcad рассматривает все неизвестные как комплексные числа.
По этой причине довольно интересный результат будет получен при попытке извлечь корень из квадратапеременной:simplify-»csgn(x)-xФункция csgn — это функция знака комплексного числа. Она равна 0 — если х=0; 1 —если действительная часть числа больше 0 (или если действительная часть равна О,а мнимая положительна); -1 — если действительная часть отрицательна (или если действительная часть равна 0, а мнимая отрицательна). Хотя полученный ответ вполнекорректен при предположении, что х — это комплексное число, в подавляющем большинстве случаев он неприемлем.
Необходимо как-то указать аналитическому процессору, что х следует рассматривать как действительное число. Сделать это позволяетсимвольный оператор assume (Принимает).Оператор assume имеет два маркера. В левый вводится оператор, результат работы которого должен быть получен исходя из некоторого условия (в нашем случае это будетоператор simplify). В правом маркере определяется само условие.Условие может быть ограничивающим либо область определения переменной, либо еетип. Ввести ограничения на область можно с помощью логических операторов панелиBoolean (Булевы). Для того же, чтобы задать тип переменной или параметра, нужнообратиться к панели специальных ключевых слов Modifier (Модификация) панелиSymbolic (Символьные).Панель Modifier содержит четыре ключевых слова.
Вводить их можно и просто наборомс клавиатуры.• assume (Принимает). Слово-заготовка для создания оператора модификации.real (Действительное). При использовании этого служебного слова система будетвоспринимать переменную как действительную.• RealRange(a,b) (Действительная область).
С помощью этого оператора вы можетеограничить область изменения переменной или константы отрезком между действительными числами а и Ъ. Обратите внимание на то, что при вызове данного оператора с панели Modifier его название начинается со строчной буквы. ПосколькуMathcad чувствителен к регистру, следует вручную заменить строчные буквы «г»в названии оператора на прописные «R» так, чтобы его вид соответствовал изображенному на панели Modifier. Легче же всего просто ввести данный оператор с клавиатуры.•2 4 4 • Глава 7. Упрощение выражений и алгебраические преобразования• trig (Тригонометрические).
Параметр или переменная рассматривается как тригонометрическая величина. На практике используется редко, так как реально практически ни на что не влияет.Итак, попробуем найти корень из квадрата переменной, указав, что она принимаеттолько действительные значения:assume , x = realsimplifysignum(x)-xФункция signum является функцией знака действительного числа.
Она возвращает -1 —если число отрицательно, 1 — если оно положительно — и 0 — если оно равно 0. Нетрудно заметить, что signum(x)-x есть не что иное, как модуль х.Если известно, что неременная может быть только положительной или только отрицательной, можно придти к еще более простому результату. Для этого область изменения х должна быть указана в правом маркере оператора assume с помощью соответствующих неравенств:assume , х > 0simplify-> хassume , x < 0simplify-> - хЕсли переменная изменяется в какой-то ограниченной области, то наиболее эффективно использовать модификатор RealRange:assume, x = RealRange (3,5)simplify-> хНе забывайте использовать оператор assume в тех случаях, в которых результат упрощения зависит от значения переменной (это прежде всего выражения с корнем, а также некоторые логарифмические выражения и выражения с модулем). Помимо оператора simplify, оператор assume часто применяется с операторами взятия определенногои неопределенного интегралов.Пожалуй, по логической нагруженное™ оператор simplify занимает первое место среди остальных символьных операторов.
Действительно, ведь зачастую очень трудно четко определить, какое из двух выражений более простое, а следовательно, и задатьсяверным направлением в упрощении. Например, какое выражение проще: sin(2-x) или2-sin(^)-cos(x)? Очевидно, что ответ зависит только от особенностей решаемой задачи.Но Mathcad эти особенности не известны! И это, увы, не может не сказываться на качестве работы оператора simplify: упростить в Mathcad можно лишь наиболее простые,как правило, алгебраические или логарифмические, выражения.
Так, из 10 первых примеров по данной теме из известного задачника Сканави оператором simplify правильноне был упрощен ни один! А ведь это совсем несложные задачи, которые решают школьники в 8 классе. И если алгебраические выражения хотя бы в наиболее простых случаях могут быть успешно упрощены оператором simplify, то тригонометрическое выражение не будет правильно преобразовано почти наверняка (в лучшем случае системаограничится приведением подобных и упрощением, исходя из основного тригонометрического равенства sin 2 (.r)+cos 2 (x)=l). Эффективность упрощения алгебраическихвыражений очень сильно зависит от того, есть ли в них корни и каким образом они заданы.
Выражения, содержащие корни, упрощаются очень плохо, даже если и имеютпростой вид.'7.6. Комплексное упрощение выражений*245Пример 7.14. Неэффективное упрощение выражений\/хх +х- 11Неверно. Правильный ответ — гsin(2x)2-cos(x). . . .simplify —>simplifyx2+lх- 1^ sin(2x)2 cos (x)Неверно. Правильный ответ — sin(x).Глядя на приведенные примеры, трудно не согласиться с утверждением, что операция символьного упрощения выражений — это одно из самых слабых мест системыMathcad. Впрочем, для этого есть вполне объективные и пока трудноразрешимые причины (увы, но компьютеры не умеют мыслить — они лишь очень быстро считают).Поэтому не стоит требовать от программы невозможное, и если вам понадобится решить пример из того же задачника Сканави, пока вам придется сделать это самостоятельно.
Вернее, самостоятельно вам придется продумать стратегию упрощения. Mathcad же выполнит за вас вычислительную работу. Продемонстрируем данный подходна примере.Пример 7.15. Упрощение сложного алгебраического выраженияПусть нам необходимо упростить громоздкое алгебраическое выражение вида24/-Лn~ V/2-(m-n)1(П- Ъ-\]тпm -^nОперировать столь большим выражением довольно непросто. Поэтому разделим его на три части и будем проводить упрощение поэтапно. Очевидно, что в первую очередь нужно раскрытьквадраты в числителе первой части выражения:1/4.4г-1 /4/— 4г-Ч2\ym + \JnJ +\\jm- \lnj expand —> 2-m + 2-nРаскрыв квадраты в числителе, обнаруживаем, что полученная дробь может быть довольно легко упрощена.
Однако оператор simplify «не ладит» с корнями и дробными степенями. Поэтому,чтобы от них избавиться, выполним замену т=х 2 , п=у2. Чтобы в ответе «не всплыли» функции csgn и signum, указываем, что х и у могут быть только положительными (это соответствуетистине, так как в исходном выражении имеются корни четвертой степени из m и п).22-m2-n2(т - п)2substitute,m=x , п = уassume,х> 0,у £ Оsimplifyх-у246 •Глава 7. Упрощение выражений и алгебраические преобразованияЗаменяем т и п на х и у во второй части исходного выражения, а затем упрощаем его совместнос преобразованной первой частью:1ГзN/ГП1Пйии а 111UIC,11- >/п1assume, х > 0 у >0111х ч2, _ч2х- у-5simplify22• х + х-у + уGtf-G'JВыполнив замену, подставляем в выражение третью часть и проводим упрощение:222х + х-у + у -m-nsubstitute, m = х , n = уassume,x> 0,у > О22 .2x - 2-x-y + уsimplifyРазлагаем полученное выражение на множители и возвращаемся к исходным переменным:22 „х - 2-х-у + уfactorsubstitute, x=\fm, у = \fnВыражения, содержащие функции (логарифмы, тригонометрические), обычно упрощаются довольно плохо.
Однако очень часто эффективность упрощения можно резкоувеличить, сведя посредством замен выражение к чисто алгебраическому виду. Максимально упростив его алгебраическими приемами, уже будет проще действовать, оп ираясь на специфические свойства входящих в него функций. Для примера покажем,как можно с помощью Mathcad упростить логарифмическое выражение.При упрощении логарифмических выражений имеется две сложности. Во-первых, длязадания логарифма от х по основанию а в Mathcad служит функция log(a,x).