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

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

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

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

Для символьных вычислений при помощи команд предназначено главное меню Symbolics (Символика), объединяющее математические операции, которые MathCAD умеет выполнять аналитически (рис. 5.1). Для реализации второго способа применяются все средства MathCAD, пригодные для численных вычислений (например, панели Calculator, Evaluation и т. д.), и специальная математическая панель инструментов, которую можно вызвать на экран нажатием кнопки Symbolic Keyword Toolbar (Панель символики) на панели Math (Математика). На панели Symbolic (Символика) находятся кнопки, соответствующие специфическим командам символьных преобразований. Например, таким как разложение выражения на множители, расчет преобразования Лапласа и другим операциям, которые в MathCAD нельзя проводить численно, и для которых, соответственно, не предусмотрены встроенные функции.

Рис. 5.1. Меню Symbolics

Рис. 5.2. Панель Symbolic
Рассмотрим оба типа символьных вычислений на простом примере разложения на сомножители выражения sin (2-х).
Первый способ (с помощью меню).
1. Введите выражение sin (2-х).
2. Выделите его целиком (см. рис. 5.1).
3. Выберите в главном меню пункты Symbolics / Expand (Символика / Разложить).
После этого результат разложения выражения появится чуть ниже в виде еще одной строки (рис. 5.3).

Рис. 5.3. Результат применения
команды меню Symbolics / Expand

Внимание
Символьные операции с помощью меню возможны лишь над каким-либо объектом (выражением, его частью или отдельной переменной). Для того чтобы правильно осуществить желаемое аналитическое преобразование, предварительно необходимо выделить тот объект, к которому оно будет относиться. В данном случае преобразование было применено ко всему выражению sin (2-х). Если же выделить часть формулы, как показано на рис. 5.4, то соответствующее преобразование будет отнесено к выделенной части (нижняя строка на этом рисунке).

Второй способ символьных преобразований (с помощью оператора ->).
1. Введите выражение sin (2-х).
2. Нажмите кнопку Expand (Разложить) на панели Symbolic (Символика).

Рис. 5.4. Символьное разложение части выражения и его результат

Рис. 5.5. Символьное разложение выражения
3. Введите в местозаполнитель после появившегося ключевого слова expand (рис. 5.5, сверху) имя. переменной х, либо нажмите клавишу , чтобы просто удалить местозаполнитель.
4. Введите оператор символьного вывода
5. Нажмите клавишу , либо просто щелкните мышью за пределами выражения.
Оператор символьного вывода, как вы помните, можно ввести в редакторе MathCAD несколькими способами: нажатием кнопки -> на любой из панелей Evaluation (Выражения) или Symbolic (Символика) либо сочетания клавиш + . Результат символьного разложения выражения показан на рис 5.5, снизу.

Внимание
Если символьные вычисления осуществляются вторым способом, символьный процессор учитывает все формулы, предварительно введенные в документе (рис. 5.6, снизу). Но если те же преобразования выполняются при помощи меню, символьный процессор «не видит» ничего, кроме одной формулы и воспринимает все ее переменные аналитически, даже если им предварительно были присвоены какие-то значения (рис. 5.6, сверху). По этой причине, например, символьным преобразованиям через меню недоступны предварительные определения функций пользователя.

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

Не всякое выражение поддается аналитическим преобразованиям. Если это так (либо в силу того, что задача вовсе не имеет аналитического решения, либо она оказывается слишком сложной для символьного процессора MathCAD), то в качестве результата выводится само выражение (листинг 5.1, внизу).
Листинг 5.1. Символьные преобразования

Рис. 5.6. Различие в символьных вычислениях при помощи меню (сверху) и оператора -> (снизу)

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

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

Рис. 5.10. Вычисление коэффициентов полинома

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

Примечание
Символьный поиск предела функции описан в разд. «Вычислительные операторы» гл. 3).

Рис. 5.14. Интегрирование по переменной

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

Рис. 5.15. Подготовка выражения для разложения в ряд по переменной х
4. В появившемся диалоговом окне (рис. 5.16) введите желаемый порядок аппроксимации (Order of Approximation) и нажмите кнопку ОК.
Результат разложения появится под выражением (рис. 5.17).
Не забывайте, что разложение строится только в точке х=0. Чтобы получить разложение в другой точке х=а, можно, к примеру, подставить вместо переменной х значение х-а (см. разд. 5.2.8).

Рис. 5.16. Разложение в ряд Тейлора

Рис. 5.17. Результат разложения в ряд Тейлора
Для разложения в ряд альтернативным способом, с помощью оператора символьного вывода, используйте ключевое слово series, вставляя его одноименной кнопкой панели Symbolic (Символика). После ключевого слова series, через запятую, указывается имя переменной, по которой производится разложение, и порядок аппроксимации (листинги 5.13 и 5.14). Сравнение функции и ее разложений в ряды с разными порядками аппроксимации (для k=b=i) иллюстрируется рис. 5.18. Видно, что разложение в ряд хорошо работает в окрестности точки х=о, а по мере удаления от нее все сильнее и сильнее отличается от функции.
Листинг 5.13. Разложение выражения в ряд с разным порядком
аппроксимации

Пистинг 5.14. Разложение выражения в ряд по разным переменным

Примечание
Подробная информация о символьном решении алгебраических уравнений изложена в части III (см. гл. 8). В частности, там рассказано о возможности решения систем уравнений и задании уравнений в привычной для нас форме логического равенства.

Рис. 5.20. Расчет Фурье-преобразования при помощи меню
Аналитический расчет преобразования Фурье при помощи меню показан на рис. 5.20. В листинге 5.15 приведены два примера вычисления прямого преобразования Фурье с применением ключевого слова fourier и оператора символьного вывода Листингом 5.16 иллюстрируется обратное преобразование Фурье одной из функций предыдущего листинга.

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

Совет
Используйте меню Symbolics (Символика), если требуется «сиюминутно» провести некоторые аналитические действия с выражением и получить ответ в общем виде, не учитывающем текущие значения переменных, входящих в выражение.

Рис. 5.21. Вычисление выражения с плавающей точкой
Еще один пункт меню Symbolics / Evaluate / Complex (Символика / Вычислить / Комплексно) позволяет представить выражение в виде а+b*i
Аналогичные по действию ключевые слова float и complex можно использовать в документах, вводя их с панели Symbolic (Символика). Ключевое слово float применяется вместе со значением точности вывода результата с плавающей точкой (листинг 5.21). С помощью слова complex можно преобразовывать выражения как в символьном виде, так и с учетом численных значений, если они были ранее присвоены переменным (несколько примеров)
Листинг 5.21. Вычисление выражения с плавающей точкой

Листинг 5.22. Комплексные преобразования выражений

5.5.3. Последовательности символьных команд
Символьные вычисления допускается проводить с применением цепочек из ключевых слов. Для этого ключевые слова, соответствующие последовательным символьным операциям, должны быть введены по очереди с панели Symbolic (Символика). Принцип организации цепочек символьных вычислений очень похож на применение встроенного языка программирования MathCAD (см. следующую главу). Несколько примеров использования последовательности символьных операторов приводится в листингах 5.23 и 5.24.

Примечание
Последовательности символьных команд допускают введение дополнительных условий в расчеты, например, таких как ограничение на действительную или комплексную форму результата. Это делается с помощью ключевого слова assume. Более подробную информацию читатель найдет в справочной системе MathCAD.

Листинг 5.23. Фурье-преобразование, разложение в ряд и расчет

Листинг 5.24. Z-преобразование и разложение на простые дроби

АНАЛИТИЧЕСКОЕ РЕШЕНИЕ УРАВНЕНИЙ И ИХ СИСТЕМ В ПАКЕТАХ СИМВОЛЬНОЙ МАТЕМАТИКИ

Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М.Е. ЕВСЕВЬЕВА»

Кафедра информатики и вычислительной техники

АНАЛИТИЧЕСКОЕ РЕШЕНИЕ УРАВНЕНИЙ И ИХ СИСТЕМ В ПАКЕТАХ СИМВОЛЬНОЙ МАТЕМАТИКИ

Автор работы _____________________________________И. Ю. Добрынькина

Направление подготовки 44.03.05 Педагогическое образование

Профиль Информатика. Математика

Руководитель работы_______________________________ Т. В. Кормилицына

Введение

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

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

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

В начале 90-х гг. на смену универсальным языкам программирования пришли специализированные системы компьютерной математики (СКМ). Среди них наибольшую известность получили системы Eureka, Mercury, Mathcad, Derive, Mathematica 2/3/4, Maple V R3/R4/R5 и Maple 6 и др.

Научное программное обеспечение и математические пакеты играют важную роль в современном естествознании и технике. Такие пакеты как Axiom, Derive, Maсsyma, Maple, MatLab, MathCAD, Mathematica широко распространились в университетах, исследовательских центрах и компаниях развитых стран. Владение одним или несколькими математическими пакетами и регулярное использование их в работе будь то исследовательская или преподавательская задача быстро становится нормой для специалиста.

1. Mathematica . Решение простейших дифференциальных уравнений

Для решения дифференциальных уравнений в аналитической форме в пакете Mathematica используется функция DSolve, дифференциальное уравнение 29 относительно функции y(x). Функция y и все ее производные должны быть записаны с аргументом, заключенным в квадратные скобки: y[x], y’[x]

Функция DSolve стремится найти общее решение ДУ в явном виде и выдает результат в виде списка правил замены, причем каждое решение заключается в фигурные скобки. Для ДУ порядка n общее решение содержит n произвольных констант, которые обозначаются C[1], C[2],…,C[n]. Для получения частного решения необходимо в качестве первого аргумента DSolve указать список, состоящий из самого уравнения и начальных или граничных условий:

Найденные с помощью DSolve решения можно подставить в любое выражение, содержащее y(x). Однако это решение не определяет правил замены производных y’(x), y’’(x) и так далее, например:

Чтобы получить решение, не имеющее этого недостатка, нужно в качестве второго аргумента функции DSolve записать только имя искомой функции, не указывая ее аргумент. В этом случае решение представляется в виде чистой функции («purefunction»-объекта), в котором роль аргумента x, в некоторых случаях, играет символ «#1», а признаком этого объекта является символ «&». Полученное решение можно подставить в любое выражение, содержащее как функцию y(x), так и ее производные:

Для решения систем уравнений в качестве первого аргумента функции указывается список уравнений, а в качестве второго аргумента – список искомых функций:

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

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

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

1.2 Примеры из математического анализа

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

В этих примерах функция D (как приятное исключение из правил, обозначенная одной буквой) вычисляет производную, функция Integrate — интеграл, функция Solve решает нелинейное уравнение (в данном случае квадратное), а функция Series разлагает выражение в ряд относительно заданной переменной и при заданных начальном значении переменной и максимальной степени ряда. В фигурных скобках задаются списки некоторых входных и выходных параметров (аргументов).

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

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

DSolve [Derivative [1] [у] [х] ==2*а*х^3, у[х], х]

DSolve [у» [х] — у’ [х] — 6 у [х] == 0, у [х] , х] <<У[х] ->| е-4хС[1] + С[2] -Cos[2x] -|sin[2x]>>

DSolve [у» [х] + 4 у'[х] == 10 Sin [2 х] , у [х] , х]

DSolve[y'[x] == Sin[Ex] , y[x] , x]

DSolvefz2 w»[z] +zw'[z] — (z2 + l)w[z] ==0, w[z], z]

<BesselI[l, z] C[l] +BesselK[l, z] C[2] >>

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

1. 3 Аналитическое решение дифференциальных уравнений

Общее решение дифференциальных уравнений.

Для нахождения аналитических решений дифференциальных уравнений в Maple применяется команда dsolve(eq,var,options),где eq – дифференциальное уравнение, var – неизвестные функции, options – параметры. Параметры могут указывать метод решения задачи, например, по умолчанию ищется аналитическое решение: type=exact. При составлении дифференциальных уравнений для обозначения производной применяется команда diff, например, дифференциальное уравнение +y=x записывается в виде: diff(y(x),x$2)+y(x)=x.

Общее решение дифференциального уравнения зависит от произвольных постоянных, число которых равно порядку дифференциального уравнения. В Maple такие постоянные, как правило, обозначаются как _С1, _С2, и т.д.

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

Команда dsolve выдает решение дифференциального уравнения в невычисляемом формате. Для того, чтобы с решением можно было бы работать далее (например, построить график решения) следует отделить правую часть полученного решения командой rhs(%).

eq:=<2*x-3*y+5*z+7*t=1, 4*x-6*y+2*z+3*t=2, 2*x-3*y-11*z-15*t=1>: > s:=solve(eq,); s:= < z=-11/8 t , y=y , x=3/2 y - 1/16 t+1/2 >Для нахождения частного решения следует выполнить подстановку конкретного значения одной из переменных при помощи команды subs: > subs(,s); < z=(-11)/8, x=31/16 , 1=1>«>

2. Аналитические вычисления в Mathcad

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

Команды для выполнения аналитических вычислений в основном сосредоточены в меню Символика (Symbolics) и продублированы на аналогичной панели инструментов.

Чтобы упростить выражение (или часть выражения), надо выбрать его при помощи уголкового курсора и дать команду Символика > Упростить (Symbolics > Simplify). При этом выполняются арифметические действия, сокращаются общие множители и приводятся подобные члены, применяются тригонометрические тождества, упрощаются выражения с радикалами, а также выражения, содержащие прямую и обратную функции. Некоторые действия по раскрытию скобок и упрощению сложных тригонометрических выражений требуют применения команды Символика > Раскрыть/Расширить (Symbolics > Expand).

В меню Символика (Symbolics) предусмотрен ряд операций, ориентированных на выделенную переменную, использованную в выражении. Например, команда Solve (Решить) ищет корни функции, заданной данным выражением. В примере в аналитической форме получены все корни полинома второй степени: сначала применена команда solve для решения, а затем simplify для упрощения результата:

Другие возможности использования этого меню включают:

аналитическое дифференцирование и интегрирование: Символика > Переменная > Дифференцировать (Symbolics > Variable > Differentiate) и Символика > Переменная > Интегрировать (Symbolics > Variable > Integrate);

замена переменной: Символика > Переменная > Подставить (Symbolics > Variable > Substitute) – вместо переменной подставляется содержимое буфера обмена;

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

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

Отметим, что функция Find пытается найти решение в аналитической форме. В том случае, если до блока Given задать численно значения всех параметров, входящих в уравнения, а также начальные приближения для корней, то получим решение в числовом виде.

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

Любое аналитическое вычисление можно применить с помощью ключевого слова. Cписок ключевых слов

3. Решение систем дифференциальных уравнений в символьном виде в системе MATLAB

Для решения дифференциальных уравнений в форме Коши MatLAB имеет функцию dsolve(‘eqn1’,’eqn2’, …), которая возвращает аналитическое решение системы дифференциальных уравнений с начальными условиями. Они задаются равенствами eqni(вначале задаются уравнения, затем начальные условия).

По умолчанию независимой переменной считается ‘t’ . Можно использовать и другую переменную, включив ее в конец списка параметров функции dsolve. Символ D обозначает производную по независимой переменной, то есть d/dt, при этом D2 означает d^2/dt^2 и т.д.

Начальные условия задаются в виде равенств ‘y(a) = b’ или ‘Dy(a) = b’, где y — независимая переменная, a и b – константы. Если число начальных условий меньше, чем число дифференциальных уравнений, то в решений будут присутствовать произвольные постоянные С1, С2 и т.д. Вывод осуществляется в виде массива записей.

Обратите внимание, что уравнение, которое требуется решить, задано как строка, то есть взято в одинарные кавычки. Ответ представляет собой точное (символьное) решение 1+корень(5). Для получения числовых решений введите double (ans) или vpa (ans), чтобы отобразить больше знаков. Ввод с командой solve может также быть символьным выражением, но в этом случае программа MATLAB потребует, чтобы правая часть выражения была заключена в скобки, и фактически синтаксис решения уравнения х 2 — Зх = -7 будет выглядеть так:

Ответ представляет собой точное (символьное) решение (3 + корень(19i))/2 (сложные числа, где буква i в ответе ставится для мнимой единицы V-1). Для получения числовых решений введите double (ans) или vpa (ans), чтобы отобразить больше знаков.

Заключение

В настоящее время научное программирование претерпевает серьезную трансформацию: развиваются интегрированные среды, основанные на алгоритмических языках, и растет применение универсальных математических систем (Maple, Mathematica, MATLAB, MatCad и др.). Эти системы имеют дружественный интерфейс, реализуют множество стандартных и специальных математических операций, снабжены мощными графическими средствами и обладают собственными языками программирования. Все это предоставляет широкие возможности для эффективной работы специалистов разных профилей, о чем говорит активное применение математических пакетов в научных исследованиях и в преподавании. С помощью этих пакетов проще готовить и выполнять задания, устраивать демонстрации и гораздо быстрее решать исследовательские и инженерные задачи.

Конечным продуктом исследования выступают публикации, подготовка, распространение и использование которых в настоящее время требует квалифицированного применения компьютера. Это касается редактирования текста, изготовления графических материалов, ведения библиографии, размещения электронных версий в Интернет, поиска статей и их просмотра. Де-факто сейчас стандартными системами подготовки научно-технических публикаций являются различные реализации пакета TeX и текстовый редактор Word. Кроме того, необходимы минимальные знания о стандартных форматах файлов, конверторах, программах и утилитах, используемых при подготовке публикаций.

Математические пакеты Maple и MATLAB — интеллектуальные лидеры в своих классах и образцы, определяющие развитие компьютерной математики. Компьютерная алгебра Maple вошла составной частью в ряд современных пакетов, численный анализ от MATLAB и наборы инструментов (Toolboxes) уникальны. Сами пакеты постоянно совершенствуются, развивая аппарат и пополняя ресурсы. Пакет Maple и вычислительная среда MATLAB — мощные и хорошо организованные системы, надежные и простые в работе. Освоение даже части их возможностей даст несомненный эффект, а по мере накопления опыта придет настоящая эффективность от взаимодействия с ними.

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

Список литературы

1. Дьяконов В.П. Справочник по применению системы PC MATLAB. — М.: «Физматлит» , 1993. — С. 112. — ISBN 5-02-015101-7

2. Дьяконов В.П. Компьютерная математика. Теория и практика. — СПб: «Питер» , 1999, 2001. — С. 1296. — ISBN 5-89251-065-4

3. Дьяконов В.П. MATLAB 5 — система символьной математики. — М.: «Нолидж» , 1999. — С. 640. — ISBN 5-89251-069-7

4. Дьяконов В.П., Абраменкова И.В. MATLAB. Обработка сигналов и изображений. Специальный справочник. — СПб.: «Питер» , 2002. — С. 608. — ISBN 5-318-00667-608

5. Дьяконов В.П., Круглов В.В. MATLAB. Анализ, идентификация и моделирование систем. Специальный справочник. — СПб.: «Питер» , 2002. — С. 448. — ISBN 5-318-00359-1

6. Дьяконов В. П. Simulink 4. Специальный справочник. — СПб.: «Питер» , 2002. — С. 528. — ISBN 5-318-00551-9

7. Дьяконов В . П . MATLAB 6/6.1/6.5 + Simulink 4/5. Основы применения. Полное руководство пользователя. — Москва.: «СОЛОН-Пресс» , 2002. — С. 768. — ISBN 5-98003-007-7

8. Дьяконов В.П. MATLAB 6/6.1/6.5 + Simulink 4/5 в математике и моделировании. Основы применения. Полное руководство пользователя. — Москва.: «СОЛОН-Пресс» , 2003. — С. 576. — ISBN 5-93455-177-9

9. Дьяконов В . П . MATLAB 6.0/6.1/6.5/6.5+SP1 + Simulink 4/5. Обработка сигналов и изображений. Полное руководство пользователя. — Москва.: «СОЛОН-Пресс» , 2005. — С. 592. — ISBN 5-93003-158-8

10. Дьяконов В . П . MATLAB 6.5/7.0 + Simulink 5/6. Основы применения. Библиотека профессионала. — Москва.: «СОЛОН-Пресс» , 2005. — С. 800. — ISBN 5-98003-181-2

11. Дьяконов В.П. MATLAB 6.5/7.0 + Simulink 5/6 в математике и моделировании. Библиотека профессионала. — Москва.: «СОЛОН-Пресс» , 2005. — С. 576. — ISBN 5-98003-209-6

12. Дьяконов В . П . MATLAB 6.5/7.0 + Simulink 5/6. Обработка сигналов и проектирование фильтров. Библиотека профессионала. — Москва.: «СОЛОН-Пресс» , 2005. — С. 576. — ISBN 5-98003-206-1

13. Дьяконов В . П . MATLAB 6.5/7.0/7 SP1 + Simulink 5/6. Работа с изображениями и видеопотоками. Библиотека профессионала. — Москва.: «СОЛОН-Пресс» , 2005. — С. 400. — ISBN 5-98003-205-3

14. Дьяконов В . П . MATLAB 6.5/7.0/7 SP1/7 SP2 + Simulink 5/6. Инструменты искусственного интеллекта и биоинформатики. Библиотека профессионала. — Москва.: «СОЛОН-Пресс» , 2005. — С. 456. — ISBN 5-98003-255-X

15. Дьяконов В . П . MATLAB R2006/2007/2008 + Simulink 5/6/7. Основы применения. Изд-е 2-е, переработанное и дополненное. Библиотека профессионала. — Москва.: «СОЛОН-Пресс» , 2008. — С. 800. — ISBN 978-5-91359-042-8

16. Дьяконов В.П. MATLAB 7.*/R2006/2007. Самоучитель. — Москва: «ДМК-Пресс» , 2008. — С. 768. — ISBN 978-5-94074-424-5

17. Дьяконов В.П. SIMULINK 5/6/7. Самоучитель. — Москва: «ДМК-Пресс» , 2008. — С. 784. — ISBN 978-5-94074-423-8

18. Дьяконов В.П. Вейвлеты. От теории к практике. Полное руководство пользователя. Изд-е 2-е переработанное и дополненное. — Москва: «СОЛОН-Пресс» , 2004. — С. 400. — ISBN 5-98003-171-5

19. Чарльз Генри Эдвардс, Дэвид Э. Пенни Дифференциальные уравнения и проблема собственных значений: моделирование и вычисление с помощью Mathematica, Maple и MATLAB = Differential Equations and Boundary Value Problems: Computing and Modeling. — 3- е изд . — М .: « Вильямс » , 2007. — ISBN 978-5-8459-1166-7

20. Алексеев Е.Р., Чеснокова О.В MATLAB 7. Самоучитель.. — Пресс , 2005. — С. 464.

21. Курбатова Екатерина Анатольевна MATLAB 7. Самоучитель. — М.: «Диалектика» , 2005. — С. 256. — ISBN 5-8459-0904-X

22. Джон Г. Мэтьюз, Куртис Д. Финк Численные методы. Использование MATLAB = Numerical Methods: Using MATLAB. — 3- е изд . — М .: « Вильямс » , 2001. — С . 720. — ISBN 0-13-270042-5 u


источники:

http://itmu.vsuet.ru/Posobija/MathCAD/gl05/index.htm

http://infourok.ru/analiticheskoe-reshenie-uravnenij-i-ih-sistem-v-paketah-simvolnoj-matematiki-4913344.html