Как в маткаде выразить переменную из формулы
Решение уравнений на бумаге — это задача, с которой каждый знаком еще со школьной скамьи. Сначала мы учились решать простые линейные уравнения, деля а на 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
В принципе, вместо начального приближения можно задать интервал, в пределах которого должно лежать решение, отыскиваемое нами с помощью функции root. Для этого после имени переменной в списке параметров функции нужно (через запятую, конечно же) указать начало и конец интервала, на котором должно располагаться решение. У этого способа есть только одно существенное но: числа, определяющие начало и конец этого интервала, должны иметь разные знаки. При этом, если уравнение не имеет действительных корней, то и интервал нужно задавать в комплексной форме. Мнимая единица при этом записывается как i или как j.
Как видите, для численного нахождения уравнений с помощью функции root необходимо довольно точно представлять, где именно должны располагаться корни уравнения — сделать это можно, например, с помощью графика функции, на котором с помощью трассировки можно определить нули функции. Но о том, как строить графики и как ими потом пользоваться, как-нибудь в другой раз.
SF, spaceflyer@tut.by
Компьютерная газета. Статья была опубликована в номере 14 за 2008 год в рубрике soft
Функции и переменные в MathСad
Mathcad раскрывается в полной мере при использовании переменных и функций.
Два знака равенства
В математических вычислениях мы используем множество различных констант, переменных, операторов и знаков равенства. Обычно в жизни мы используем знак равенства для многих разных операций, но Mathcad отличает их. Наиболее важными операциями являются:
- определение (присвоение значения) — используется двоеточие;
- вычисление — используется знак равенства.
Важность оператора определения не меньше, чем важность оператора вычисления. В приведенном ниже примере значение y можно вычислить лишь после присвоения ему определенного значения. х и у здесь являются переменными.

Два знака равенства, которые изображены выше, имеют совершенно разные значения, поэтому нужно очень внимательно относится к ним.
Поставьте курсор перед числом 4 в примере выше.

Удалите число 4 клавишей [Delete], и введите 5. Нажмите на пустой области, чтобы выйти из области вычисления и увидите, что результат вычислений поменялся на 25:

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


Использование переменных
Введите такие выражения в область вычисления

Проведите операции замены значения х на такие: 100, 0.5, -4 и 0.



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

Дальше мы поговорим о том, какие имена можно использовать для переменных, а какие нельзя. Существуют такие правила: имя переменной не может начинаться с цифры и в ней нельзя использовать пробелы или знаки операторов. Имена могут начинаться:
- с любой буквы как большой, так и маленькой;
- с других символов, которые не являются операторами;
- с символов из вкладки Математика -> Операторы и символы -> Символы;
- с символов из таблицы символов ОС Windows.

Использование переменных доступно, только если вы определите их заранее. Термин «заранее» обозначает, что присвоение значения переменной должно производиться выше или левее выражения, где эта переменная используется. Если вы не объявили переменную заранее, то появится сообщение об ошибке:

Подстрочные индексы
Mathcad существует два типа подстрочных индексов:
- Описательный подстрочный индекс.
- Индекс массива (матрицы).
Для ввода описательного индекса сначала введите желаемое имя переменной, а потом нажмите комбинацию [Ctrl+-], далее вводите подстрочный индекс.

Переменная, которая имеет описательный индекс — это простая переменная, которой присвоено имя. Индекс массива сильно отличается от него. Такой индекс можно присвоить, если ввести квадратную скобку [ после имени переменной. Переменная может иметь один или два индекса массива:

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

Более четко разницу видно, если нажать мышкой на выражение


Любая переменная может иметь оба индекса одновременно: описательный и индекс массива. Сначала всегда будет прописан описательный.

Функции
Использование переменных возможно только при определении их заранее. Но есть исключение из этого правила — определение функции. Можно произвести определение своей функции. Пример ниже.

Переменная а имеет для функции локальное значение. Она не несет определения за пределами этой функции.

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

Вы не будете сталкиваться с такой проблемой, если будете задавать переменной и функции различные имена. Об обозначениях мы поговорим в уроке 10.
Функции могут иметь более одной переменной.

Значения переменных х и у не изменяются и в этой функции.
Встроенные функции
Mathcad имеет очень много встроенных функций. Перейдите во вкладку Функции.

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


Математика в тексте
В текстовую область можно поместить область вычислений. Так вы сможете использовать в тексте подстрочные и надстрочные символы. Чтобы сделать это, при редактировании текстовой области нужно нажать на кнопку Математика во вкладке Математика -> Области.


Резюме
1. Mathcad использует два знака равенства отдельно для определения := и для вычисления =.
2. Имя переменной нельзя начинать с цифры. Можно использовать для этого только буквы или символы, отличные от символов операторов. Символы можно вводить с панели Математика -> Операторы и символы -> Символы, а также брать из панели символов Windows.
3. Для определения значения переменной нужно:
- щелкнуть на пустую область;
- ввести имя переменной;
- ввести оператор определения [:=];
- ввести значение переменной.
4. Для присвоения переменной подстрочного описательного индекса нужно:
- нажать мышкой в конце имени переменной;
- нажать [Ctrl+-];
- ввести подстрочный индекс.
5. Для присвоения переменной индекса массива:
- нажмите мышкой в конце имени переменной;
- нажмите на клавиатуре на открывающуюся квадратную скобку [;
- ввести нужный подстрочный индекс.
6. Определять переменную нужно только выше или левее места использования ее в вычислениях.
7. Имя функции вводится с теме же правилами, что и имя переменной, с той лишь разницей, что заканчивать имя функции нужно вводом открывающейся скобки [(]. В них будут размещаться аргументы функции.
8. Переменные в функциях имеют определение только в рамках этой функции.
9. В тексте можно размещать математическую область. Это можно применять при интеграции в текст надстрочных или подстрочных символов.
Как выразить переменную из уравнения в mathcad

Выразить переменную из функции
выразить переменную из функции, не могу разобраться в этом.

Сообщение было отмечено VSI как решение
| b_NEW.rar (9.9 Кб, 29 просмотров) |
Урок 20. Преобразование выражений в Mathcad



![]()
![]()
- “simplify”, “expand”, “factor” и “parfrac” – для преобразования самого выражения;
- “float” – для преобразования результата вычисления;
- “assume” (с модификаторами) – ограничивает диапазон возможных значений переменных.
















Лекція №8 — Использование пакета MathCad при исследовании математических функций одной переменной
Найти точки, подозрительные на экстремум из решения уравнений
и
.
Уравнение в первоначальном понимании – это равенство двух функций
, рассматриваемых в общей области их определения. При желании это равенство можно записать в виде
, где
.

Для численного решения нелинейного уравнения можно использовать встроенную функциюroot и блок решенияGiven – find…. Остановимся на функции root, которая имеет вид, представленный на рис. 6.1.
где
– левая часть уравнения;х – имя переменной, относительно которой решается уравнение; a, b – левый и правый концы отрезка, на котором находится корень уравнения (наличие квадратных скобок в описании указывает на то, что эти параметры являются необязательными). Поиск корня уравнения осуществляется итерационным методом с заданной точностью (точность по умолчанию равна
). Переустановить значение точности можно с помощью задания нового значения системной переменнойTOL, которая отвечает за точность. Перед использованием встроенной функции rootнужно задать начальное значение переменной – искомого корня. Если уравнение имеет несколько корней, то целесообразно начальное значение выбирать исходя из отрезка, определяющего местоположение корня.

Пример 1. Найти корень уравнения вида
в численном виде при начальном значении
и заданной точности
.









Пример 2. Требуется найти корни уравнения вида в символьном виде. Следует иметь в виду, что при решении тригонометрических уравнений система находит только частное решение приn=0.


.


Пример 3. Требуется найти корни уравнения вида в символьном виде.


В предоставленном решении используется ссылка на функцию с именем W – функцию Ламберта. Функция Ламберта. Это функция обратная функции . Чтобы найти значениеW и использовать найденное значение в предоставленном решении, можно также воспользоваться оператором float, как это показано на рис. 6.7.


;

в символьном виде. Здесь
– логарифм по основанию 2, а
– логарифм по основанию 10.





Пример 5. Требуется решить неравенство вида: в символьном виде.


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

Если область замкнута и ее границам соответствуют значения аргумента а и b, то она будет описана элементарным неравенством вида . В стандартном виде эта запись будет выглядеть как />.

Области в векторе ответа будут расположены строго в направлении числовой оси. Поэтому преобразовывать в стандартную форму его можно чисто механически, сохраняя исходный порядок областей. Для объединения обозначений областей в одно выражение используется символ «».

Пример 6. Требуется найти область определения функции .
На начальном этапе можно решить неравенство
. А затем из полученной области исключить точки –1 и 2. Решение неравенства: 

Что соответствует области: . В исключении точек –1 и 2 нет необходимости, так как они не входят в означенную область.

Пример 7. Требуется найти область определения функции. Если имеются точки разрыва, то установить тип разрыва.
Решение. Поскольку аналитическое выражение функции представлено в виде дроби, а знаменатель дроби не может быть равен 0, из области определения функции следует исключить точку
, т.е.
. Т.е. точка
является точкой разрыва. Чтобы найти тип разрыва следует найти односторонние пределы (команды следует взять с панелиCalculus (Вычислить)):


Вывод. Так как односторонние пределы равны , то имеет место неустранимый разрыв 2-го рода, а точка является точкой бесконечного скачка функции.

Пример 8. Требуется найти все асимптоты графиков функции. Найти подтверждение правильности решения на графике функции.
Решение. Известно, если точка
является точкой бесконечного разрыва функции, то прямая
есть вертикальная асимптота графика функции. В предыдущем примере было установлено, что точка
является такой точкой бесконечного разрыва. Следовательно, прямая
является вертикальной асимптотой графика заданной функции. Для получения наклонных асимптот нужно вычислить пределы:
. Если эти пределы существуют, то прямая
есть наклонная асимптота графика функции. Вычисление пределов и уравнение наклонной асимптоты представлены на рис. 6.11.


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


Пример 9. Требуется на графике функциинайти точки, подозрительные на экстремум (критические точки).
Решение. Воспользуемся необходимым условием существования экстремума: если функция непрерывна в точке х0 и ее окрестности и принимает в этой точке экстремальное значение, то первая производная f’(х0) либо равна нулю или бесконечности, либо не существует. Следовательно, для того, чтобы найти точки, подозрительные на экстремум, следует найти решение уравнений:
и
. Решение представлено на рис. 2.13.


.

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


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










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




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


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

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


Пример 17. Требуется построить график функции, заданной в параметрическом виде: .
Похожие публикации:
- Как ввести список в питоне
- Как вернуть касперский после переустановки системы
- Как вернуть службы по умолчанию windows 10
- Как взаимодействуют два параллельных друг другу проводника если электрический ток в них идет в одном
Введение
Система Mathcad изначально была задумана как система для численных вычислений. Но версия Mathcad 2001 стала настолько «интеллектуальной», что блестяще справляется со множеством аналитических (символьных) вычислений. — это многофункциональная интерактивная вычислительная система, позволяющая, благодаря встроенным алгоритмам, решать аналитически и численно большое количество математических задач. Рабочий документ Mathcad — электронная книга с живыми формулами, вычисления в которой производятся автоматически в том порядке, в котором записаны выражения. Отличается простым и удобным интерфейсом, написанием выражений стандартными математическими символами, хорошей двух — и трехмерной графикой, возможностью подключения к распространенным офисным и конструкторским программам, а также к Internet.
Программирование занимает особое место в Mathcad. Для начального обучения изучать его совершенно не обязательно. Возможности Mathcad позволяют решить подавляющее количество задач без всякого программирования, да к тому же, как правило, несколькими способами. Однако есть класс задач, при решении которых без программирования не обойтись. Это задачи, в которых часть документа из нескольких или многих операторов надо выполнить многократно. В таких случаях документ должен состоять из отдельных подпрограмм, объединенных в единую «головную» программу. И в этом случае программирования можно было бы избежать, если бы создатели Mathcad предусмотрели оператор перехода к метке, который есть (был) во многих языках программирования, в частности в FORTRAN. позволяет вводить программы любой сложности. Образцом достаточно сложной программы является программа решения плоской упругопластической задачи методом конечных элементов.
Программирование в Mathcad чрезвычайно наглядно и понятно, так как программа представляет собой последовательность формул. Основные операторы программирования расположены на панели Programming (Программирование), вызываемой щелчком на кнопке Programming Toolbar (Панель программирования) математической панели. Далее программами будем называть не все документы Mathcad, а только те из них, которые написаны с использованием панели программирования.
К важным достоинствам Mathcad относятся настройка под любой маломальски известный тип печатающих устройств, богатый набор шрифтов, возможность использования всех инструментов Windows, прекрасная графика и современный многооконный интерфейс.
Многие задачи, решаемые с помощью математических пакетов, сводятся к решению уравнений — алгебраических, степенных, тригонометрических, к поиску значений неизвестных, превращающих эти уравнения в тождества строго или приближенно. Успех в решении подобных задач зависит не только от мощности соответствующих инструментов, встроенных в Mathcad , но и от знания пользователем их особенностей, нюансов, сильных и слабых сторон.
1 Решение уравнений с одной переменной
Уравнения можно решать различными методами, такими как: метод половинного деления, метод простой итерации, метод хорд, метод касательных. В этой главе рассмотрим подробнее вышеперечисленные методы.
1.1 Постановка задачи
Наиболее общий вид нелинейного уравнения:
где функция определена и непрерывна на конечном или бесконечном интервале .
Определение 1.1. Всякое число обращающее функцию F ( x ) в нуль, называется корнем уравнения (1.1).
Определение 1.2. Число , называется корнем — ой кратности, если при вместе с функцией равны нулю ее производные до -го порядка включительно:
Определение 1.3. Однократный корень называется простым.
Определение 1.4. Уравнения и называются равносильными (эквивалентными), если множества решений данных уравнений совпадают.
Нелинейные уравнения с одной переменной подразделяются на алгебраические и трансцендентные.
Определение 1.5. Уравнение (1.1) называется алгебраическим, если функция является алгебраической.
Путем алгебраических преобразований из всякого алгебраического уравнения можно получить уравнение в канонической форме:
где — действительные коэффициенты уравнения; — неизвестное.
Из алгебры известно, что всякое алгебраическое уравнение имеет, по крайней мере, один вещественный или два комплексно сопряженных корня.
Определение 1.6. Уравнение (1.1) называется трансцендентным, если функция не является алгебраической.
Определение 1.7. Решить уравнение (1.1) означает следующее:
установить имеет ли уравнение корни;
определить число корней уравнения;
найти значения корней уравнения с заданной точностью.
1.2 Отделение корней
Определение 1.8. Отделение корней — процедура нахождения отрезков, на которых уравнение (1.1) имеет только одно решение.
В большинстве случаев отделение корней можно провести графически. Для этого достаточно построить график функции и определить отрезки, на которых функция имеет только одну точку пересечения с осью абсцисс.
В сомнительных случаях графическое отделение корней необходимо подкреплять вычислениями. При этом можно использовать следующие очевидные положения: если непрерывная функция принимает на концах отрезка значения разных знаков (т. е. ), то уравнение (1.1) имеет на этом отрезке по меньшей мере один корень;
если функция к тому же и строго монотонна, то корень на отрезке единственный.
1.3 Метод половинного деления
Пусть уравнение (1.1) имеет на отрезке единственный корень, причем функция на данном отрезке непрерывна (рисунок 1.1).
Разделим отрезок пополам точкой . Если ,то возможны два случая:
— функция меняет знак на отрезке ;
функция меняет знак на отрезке .
Выбирая в каждом случае тот отрезок, на котором функция меняет знак, и, продолжая процесс половинного деления дальше, можно дойти до сколь угодно малого отрезка, содержащего корень уравнения.
Решение в пакете Mathcad методом половинного деления уравнения
1. Задание функции:
2. Построение графика функции (Рисунок 1.2).
Рисунок 1.2 – График функции
3. Задание функции, реализующей метод половинного деления (Рисунок 1.3). Здесь аргументы функции: — имя функции, — левая и правая координаты концов отрезка; — точность вычисления корня.
4. Вычисление значения корня уравнения:
5. Проверка найденного значения корня:
Для рассмотрения процесса нахождения корня уравнения в динамке необходимо сохранить значение корня на каждом шаге вычислительной процедуры и построить зависимость значения корня от номера шага. Функция, возвращающая значение корня на каждом шаге метода половинного деления, представлена на рисунке 1.4. Аргументы функции: — имя функции, — левая и правая координаты концов отрезка, -точность вычисления корня.
Рисунок 1.3 – Функция, реализующая метод половинного деления
Рисунок 1.4 – Функция, реализующая метод половинного деления и возвращающая значение корня уравнения на каждом шаге процесса вычислений
После создания функции необходимо дополнить описанный выше документ следующей последовательностью команд.
1. Вычисление матрицы, первый столбец которой содержит номер итерации, второй — значение корня:
2. Визуализация зависимости значения корня от номера шага вычислительной процедуры (рисунок 1.5).
Рисунок 1.5 — Зависимость значения корня от номера шага вычислительной процедуры
1.4 Метод простой итерации
Заменим уравнение (1.1) равносильным уравнением
Пусть — корень уравнения (1.4), а , полученное каким-либо способом нулевое приближение к корню . Подставляя в правую часть уравнения (1.4),получим некоторое число . Повторим данную процедуру с и получим . Повторяя описанную процедуру, получим последовательность называемую итерационной последовательностью.
Итерационная последовательность, вообще говоря, может быть как сходящейся, так и расходящейся, что определяется видом функции .
Теорема 1.1. Если функция непрерывна, а последовательность (1.5) сходится, то предел последовательности (1.5) является корнем уравнения (1.4).
Действительно, пусть . Перейдем к пределу в равенстве
Условие сходимости итерационного процесса определяется теоремой о достаточном условии сходимости итерационного процесса.
Геометрическая интерпретация данного алгоритма представлена на рисунке 1
Теорема 1.2. Пусть уравнение имеет единственный корень на отрезке и выполнены условия:
. определена и дифференцируема на .
3. Существует такое вещественное , что для всех .
Тогда итерационная последовательность сходится при любом начальном приближении
Доказательство . Построим итерационную последовательность вида (1.5) с любым начальным значением . В силу условия 2 теоремы 1.2 все члены последовательности находятся в отрезке .
Рассмотрим два последовательных приближения и .
По теореме Лагранжа о конечных приращениях имеем
Переходя к модулям и принимая во внимание условие 3 теоремы 1.2, получим
MathCAD — это просто! Часть 23. Внутренняя кухня решения дифференциальных уравнений. Дифференциальные уравнения в частных производных

Хотя мы с вами говорим о решении дифференциальных уравнений в среде MathCAD уже, в общем-то, довольно-таки давно, тем не менее, тема эта по- прежнему остается не до конца раскрытой. Почему? Потому, что дифференциальным уравнениям и их решению в мире посвящено гигантское количество различных научных работ и книг — пожалуй, столько их не посвящалось больше ни одному вопросу прикладного применения математики.
Дифференциальные уравнения сегодня — это, прежде всего, основа для всех физических и химических расчетов, применяемых в промышленности и науке. И потому без дифференциальных уравнений не может обойтись в рамках своей профессиональной деятельности ни один специалист технического или естественнонаучного профиля. И чем лучше мы с вами научимся решать дифференциальные уравнения с помощью MathCAD, тем легче вам будет разбираться с ними в тот момент, когда они понадобятся вам для выполнения какой-либо порученной вам работы. Разговор о дифференциальных уравнениях в MathCAD просто не может быть полным без двух вещей. Первая из них — это краткий, слишком краткий для того, чтобы быть действительно полезным, рассказ о внутренних механизмах решения дифференциальных уравнений в этой мощной математической среде, то есть об используемых MathCAD’ом алгоритмах их численного интегрирования. Увы, объем газетной статьи ограничен, и рассказывать подробно настолько, насколько хотелось бы, у меня нет возможности. Вторая же такая вещь — рассказ о решении дифференциальных уравнений в частных производных, к которым относятся практически все уравнения математической и теоретической физики. Конечно, вещи это довольно сложные, но я постараюсь сделать их понятными для каждого из читателей серии «MathCAD — это просто». Ну, а судить, насколько хорошо у меня это выйдет, уже дело ваше.
Численное интегрирование обыкновенных дифференциальных уравнений методом Рунге-Кутта четвертого порядка
Для того, чтобы понять, как именно работают алгоритмы численного решения дифференциальных уравнений, нужно вспомнить, что именно мы делаем, решая дифференциальное уравнение в MathCAD’е. Вспомнили? Правильно, мы интегрируем. Значит, мы находим первообразную некоторой функции, которую в простейшем случае можем записать как f(x,y), где y и будет решением нашего дифференциального уравнения. Для того, чтобы объяснять дальше, нужно напомнить, что же такое производная — ведь именно ею является наша функция f(x, y) по отношению к своей искомой первообразной. Производная — это предел приращения функции к пределу приращения своего аргумента (или своих аргументов, если таковых имеется больше, чем один). Однако пределы — это всего лишь математическая абстракция, какой бы хорошей и удобной она ни была. То есть мы не можем в реальном мире оперировать бесконечно малым приращением ни функции, ни ее аргументов, если хотим с их помощью вычислить саму производную. Выход из этой ситуации напрашивается самый простой и логичный — перейти от бесконечно малого приращению к малому, но все же конечному. Говорят, что дифференциальное уравнение при этом заменяется на разностное, и для его решения применяются специальные разностные методы.
Самым распространенным методом решения дифференциальных уравнений в численном виде является метод Рунге-Кутта четвертого порядка, который из-за его повсеместной распространенности обычно называют просто методом Рунге-Кутта. Этот метод разработан еще в начале XX века немецкими математиками Карлом Рунге и Мартином Вильгельмом Куттом и с тех пор, как появились первые вычислительные машины, используется для численного решения дифференциальных уравнений самым что ни на есть активным образом. В MathCAD’е метод Рунге-Кутта в его классическом виде реализован в функции rkfixed. Ограничения, накладываемые ею на решаемые с ее помощью уравнения, — это те самые ограничения, которые на них накладывает метод Рунге-Кутта. Алгоритм Рунге-Кутта итерационный, то есть для вычисления значения функции с заданной точностью нужно выполнить вычисления несколько раз, и для каждого следующего вычисления используются результаты предыдущего. Записать это в виде формул можно следующим образом:
Самая нижняя из всех формул — это исходное уравнение, которое мы решаем указанным методом, а коэффициенты k называются прогоночными коэффициентами. Как видите, для того, чтобы вычислить по этим формулам хоть одно значение y, нужно воспользоваться начальным (нулевым) значением y. То есть этот метод очень хорошо подходит для решения задачи Коши, а вот если встретится краевая задача, то здесь уже надо искать другой метод. Как можно понять из формул, h — это величина шага интегрирования. Об этой величине я рассказывал тогда, когда приоткрывал завесу тайны над «кухней» численного интегрирования в MathCAD’е, а потому останавливаться на ней повторно и рисовать графики, иллюстрирующие ее геометрическую интерпретацию, я не буду. Почему рассмотренный нами алгоритм называется алгоритмом четвертого порядка? Дело в том, что суммарная погрешность при вычислении функции по записанным выше формулам составляет величину порядка h4. При достаточно малых h это очень хорошая точность, и именно поэтому метод Рунге-Кутта получил такое широкое распространение. Конечно, рассмотренный нами метод численного решения дифференциальных уравнений не настолько универсален, насколько нам того хотелось бы, но разработчики MathCAD существенно упростили нам задачу, реализовав удобную и мощную функцию Odesolve, комбинирующую в себе возможности нескольких разных алгоритмов численного решения обыкновенных дифференциальных уравнений. Если вдруг вы решите проникнуть глубже в тайны методов численного решения дифференциальных уравнений, то делать это лучше всего с помощью соответствующих учебников, которых в библиотеках и в интернете можно найти великое множество.
Решение дифференциальных уравнений в частных производных
Что ж, давайте уже перейдем к завершающему наш разговор о дифференциальных уравнениях в MathCAD’е вопросу — решению дифференциальных уравнений в частных производных. Дифференциальным уравнением в частных производных называется уравнение относительно функции нескольких переменных (обязательно более чем одной), содержащее саму эту функцию (что, впрочем, необязательно) и ее частные производные по различным аргументам (вот это уже необходимо). Классическими уравнениями в частных производных являются уравнения математической физики — например, такие, как уравнение колебаний мембраны или даже струны; уравнение теплопроводности, описывающее перенос тепловой энергии в веществах; уравнение Шредингера, на котором построена вся квантовая механика. Решать уравнения в частных производных обычно еще сложнее, чем обыкновенные дифференциальные уравнения, однако, как вы сами сможете убедиться, это утверждение можно не считать справедливым в тех случаях, когда вам на помощь приходит такая мощная математическая среда, как MathCAD. Давайте попробуем решить с помощью MathCAD’а уже упоминавшееся буквально пару строчек назад уравнение теплопроводности, которое можно записать в следующем виде:
Решать его будем с помощью уже частично знакомого вам блока Given…Pdesolve. Он весьма схож с блоком Given. Odesolve, который мы использовали для обыкновенных дифференциальных уравнений, но имеются некоторые отличия. Так, например, производные для этого блока нужно задавать в индексной форме записи. То есть первая производная от y по x будет записана как yx. В MathCAD’е для записи производных в нижнем регистре нажмите кнопку «.» («ю» на русской клавиатуре). Вот таким образом будет выглядеть наше решение дифференциального уравнения в частных производных:
То, что стоит сразу непосредственно после Given, думаю, в каких-либо подробных прояснениях не нуждается, потому что это, собственно говоря, и есть то самое дифференциальное уравнение, которое мы с вами усиленно решаем. Сразу же следом за ним идут начальные условия по времени и граничные условия по координате — такие условия называются условиями Дирихле. Но самое важное, в общем-то, не они, а та функция, с помощью которых наш набор условий превращается в решенное дифференциальное уравнение — это функция Pdesolve. Первый ее параметр — это название функции или вектор функций, которые заданы в блоке Given. Второй и третий параметры — это один из аргументов функции и вектор из его начального и конечного значений. Здесь нужно внимательно следить за тем, чтобы эти значения в блоке Given обязательно совпадали с параметрами самой Pdesolve — в случае их взаимного несоответствия система MathCAD выдаст ошибку. Следующие два (или четыре, или шесть — все зависит от исходной функции и решаемого уравнения) параметра также обозначают аргумент и его граничные значения. Ну, а завершают список параметров функции Pdesolve количество шагов по каждой из переменных. Совсем не обязательно делать их равными для всех переменных — надо смотреть на особенности самого уравнения, а также начальных и граничных условий. Чтобы визуализировать результаты решения, можно воспользоваться нашими знаниями о построении графиков в MathCAD’е и построить трехмерный график (см. соответствующий рисунок). Вопрос на засыпку: какая из осей изображает время? Вот и проверим, насколько вы разобрались в свое время с графиками.
Конечно, для таких уравнений, где одна из переменных является временем, лучше строить не трехмерные графики, а двумерные, но анимированные. Как они делаются, я вам уже имел удовольствие рассказывать, а потому вы, безо всяких сомнений, успешно справитесь с их созданием.
Что ж, как видите, и в глубинах MathCAD’а, в которых идет решение дифференциальных уравнений численными методами, все оказалось вовсе не так уж и сложно. Конечно, мы с вами разобрали только самый простой случай, но ведь перед нами, согласитесь, и не стоит задачи написать собственную математическую среду наподобие MathCAD, а потому мы можем позволить себе не разбираться в тонкостях реализации разных методов, а просто предоставить MathCAD’у самому разбираться с подсунутыми нами уравнениями. С дифференциальными уравнениями в частных производных тоже все оказалось не так уж сложно, потому что разработчики MathCAD постарались максимально унифицировать процесс их решения с процессом решения обыкновенных дифференциальных уравнений. Так что не нужно бояться дифференциальных уравнений, если под рукой есть MathCAD. Рано или поздно, так или иначе, но они падут под натиском этого грозного математического «оружия».
SF, spaceflyer@tut.by
Компьютерная газета. Статья была опубликована в номере 37 за 2008 год в рубрике soft
Как решать тригонометрические уравнения в маткаде
Для решения уравнений в Mathcad можно воспользоваться двумя способами:
Использование метода Given — Find:
Это наиболее распространенный способ решения обычных алгебраических уравнений. Он достаточно прост. В рабочем поле записываем слово Given. Это служебное слово. Оно подключает определенные программные модули mathcad для обработки исходных данных, необходимых для решения уравнения численными методами.
Затем указывается начальное приближение для искомой переменной. Это нужно для увеличения скорости и точности решения уравнения. Если начальное приближение не задать, то mathcad по умолчанию примет его равным нулю
Рис. 1. Ввод данных в поле mathcad
Далее вводится уравнение. Его можно записать в явном или неявном виде. Само уравнение набирается с клавиатуры вручную с использованием панели Calculator. Из этой панели можно взять основные математические операции: дроби, тригонометрию, факториалы и прочее. Уравнение нужно записывать с использованием логического символа «ровно». На панели Boolean он выделен жирным шрифтом (см. рис. 2)
Рис. 2. Панели Boolean и Calculator
После уравнения вводится функция Find(x) (где х — переменная). Это функция, которая возвращает результат. Значение функции Find(x) можно присвоить какой-либо переменной с помощью символа «:=» и использовать ее далее в расчетах
Для получения результата, после Find(x) следует поставить символ «→» либо «=» из панели Evaluation (см. рис. 3). Причем, если вы используете символ «→«, то mathcad определит все корни уравнения и сформирует матрицу результатов. Но если вы используете символ «=«, то mathcad выведет единственный корень, который был наиболее близок к начальному приближению. Так что, если вы не знаете сколько корней имеет уравнение, то лучше использовать стрелочку
Рис. 3. Панель «Evaluation»
В зависимости от сложности уравнения через определенное время MathCad выведет результат. На рис.4 можно рассмотреть синтаксис и различие результатов выводимых mathcad. Обратите внимание, что выводимые результаты одного и того же уравнения различны
Рис. 4. Результат численного решения уравнения
Mathcad позволяет решать уравния в символьном виде. Например, если мы заменим все числовые константы на неизвестные параметры и решим уравнение относительно x, то результат выведется в символьном виде (см. рис. 5). Причем, обратите внимание, что в данном случае нам не нужно вводить начальное приближение и мы должны использовать символ «→» для вывода результата
Рис. 5. Результат символьного решения уравнения
Использование метода Solve:
Этот метод отличается от выше рассмотренного синтаксисом. На свободном поле вводим уравнение с использованием логического символа «ровно» из панели Boolean. После ввода уравнения, не смещая курсор ввода, на панели Symbolic нажимаем кнопку solve (см. рис. 6)
Рис. 6. Панель Symbolic
Затем ставим запятую и вводим переменную, относительно которой нужно решить уравнение (в нашем случае это x). Нажимаем Enter на клавиатуре и смотрим результат (см. рис. 7)
Рис. 7. Результат решения уравнения методом Solve
Обратите внимание, что метод подходит как для численного так и для символьного представления результатов
Как показывает моя личная инженерная практика, иногда не удается решить уравнения с помощью Given — Find, но получается в Solve. При этом, к сожалению, метод Solve не очень удобен для далнейшего использования результатов решения уравнения
Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.
Как решать тригонометрические уравнения в маткаде
Электронный курс по MathCAD
Экспоненциальные и логарифмические уравнения.
Определение: Уравнение, в котором независимая переменная входит в аргумент хотя бы одной экспоненциальной (логарифмической) функции, называется экспоненциальным (логарифмическим) уравнением.
Способ решения с помощью Mathcad такой же, как и для других типов уравнений.
Экспоненциальные уравнения во множестве действительных чисел не создают дополнительных сложностей в том смысле, что их область определения совпадает со множеством действительных чисел, а логарифмирование представляет собой инъективное отображение.
Если при решении экспоненциального уравнения возникают проблемы,их,как правило,можно устранить посредством вспомогательного логарифмирования. В крайнем случае можно обратиться к численным методам (См. Решение нелинейных уравнений и систем).
Значительно больше сложностей возникает при решении логарифмических уравнений. Область определения этих уравнений, если рассматривать их во множестве действительных чисел, как правило, не совпадает с действительной числовой прямой. MathCAD рассматривает логарифмические уравнения в комплексной области, т.е. не учитывая область определения.
В данном примере показано, что MathCAD иногда находит решения (и даже действительные) там, где их быть не может (проблемы с комплексным логарифмом). Но нахождение области определения позволяет придти к верному решению.
Насколько полезным может быть предварительное нахождение области определения, показывает следующий пример. Область определения пустое множество, следовательно,множество решений L=<>.
Тригонометрические уравнения.
Сложность решения уравнений, содержащих тригонометрические функции, состоит прежде всего в том, что функций, обратных к тригонометрическим, не существует, а существуют лишь бесконечно многозначные обратные отображения. Поэтому прихдится мириться с тем, что любое вычислительное средство сможет найти только главное значение обратного выражения. Чтобы получить множество решений, необходимо самостоятельно воссоздать побочные значения обратного отображения.
Для тангенса (и котангенса) этого главного значения достаточно посредством периодического продолжения atan(x)+k p , где k — целое представить все решения. При решении уравнений с тангенсами и котангенсами возникает также вполне разрешимая проблема, связанная с тем, что данные функции определены не во всех точках числовой прямой.
Данный пример показывает, что вышеуказанное ограничение не играет особой роли при решении уравнений с помощью MathCAD. Поскольку синус и косинус определены для всех значений аргумента, вопрос об области определения при решении уравнений, содержащих только эти тригонометрические функции, как правило, отпадает.
Поскольку остается неясным, какое именно из значений обратного отображения MathCAD рассматривает в качестве главного при решении уравнений, оказывается сложно получить еще одно значение, отстоящее от главного менее чем на период; тем самым задача была бы решена с точностью до периода. В подобных ситуациях на выручку приходит построение графиков.
Данный пример демонстрирует пределы возможности MathCAD. Решение в лоб не дает никаких результатов.
Неравенства.
MathCAD обладает достаточно мощными возможностями для решения неравенств. Эти возможности уже использовались нами ренее для нахождения области определения уравнений, содержащих функции, определенные не во всех точках числовой прямой.
Неравенства, как и уравнения, можно решать либо с использованием символьного знака равенства, либо, отметив переменную следм курсора, посредством выполнения команды Solve (Вычислить) подменю Variable (Переменные) меню Symbolics (Символы). В разных неравенствах могут быть использованы различные знаки неравенств.
Знаки «больше» и «меньше» могут вводиться непосредственно с клавиатуры. Все остальные знаки можно вводить при помощи панели Evaluation (Вычисления), либо сочетанием клавиш.
Линейные неравенства и неравенства с дробно-рациональными функциями не составляют сложности для MathCAD.
Неравенства с параметрами удобно анализировать с использованием знака символьного равенства, если значения параметра ограничены некоторыми условиями.
При решении неравенств, содержащих трансцендентные функции,возможности MathCAD ограничены.
В данном примере MathCAD не может решить неравенство при использовании символьного процессора. На помощь приходят графики и функция численного решения уравнений root. Для работы этой функции необходимо задать начальное приближение для искомого решения.
Системы линейных уравнений.
Для численного решения линейных систем уравнений в MathCAD имеется специальная функция:
lsolv(A,B) Она решает систему линейных алгебраических уравнений вида А x X =B, выдавая решение — вектор X.
А — матрица коэффициентов размерности nxn;
В — вектор свободных членов размерности n ;
X — вектор неизвестных пока решений.
Эквивалентной для MathCAD формой представления систем линейных уравнений является матричная форма. Представленные таким образом системы можно решать как символьно, так и численно.
Хорошей альтернативой решению систем в матричной форме является так называемый solve block (Блок решения). Он удобен тем, что при его использовании уравнения записываются не в матричной, а в обычной форме, а также тем, что позволяет решать нелинейные уравнения и вводить ограничительные условия для определяемого решения. Блок решения применяется как для нахождения численного решения, так и для отыскания решеня в символьном виде.
Синтаксис Блока решения:
Последовательность действий при численном решении:
- Задаем начальные (стартовые) значения для искомых переменных.
- Заключаем уравнения в блок решения, начинающийся ключевым словом Given и заканчивающийся ключевым словом Find(v1,v2. vn).
- Если после слова Find(v1,v2. vn) ввести знак равенства [=], MathACD выдаст численное решение.
При символьном решении не надо вводить начальные значения, а после ключевого слова Find(v1,v2. vn) вместо знака равенства следует ввести символьный знак равенства (при помощи комбинации [Ctrl+.] или соответствующей пиктограммы панели Evaluation).
Существует еще одно важное отличие между блоком решения и использованием матричных операций. Если определитель матрицы коэффициентов равен нулю, матричные методы оказываются непригодными. В таком случае система не имеет решений или разрешима неоднозначно. Если же применить блок решения, MathCAD распознает неоднозначность и выдает решение в параметрической форме.
Нелинейные уравнения и системы уравнений.
Многие уравнения, например трансцендентные, и системы из них не имеют аналитических решений. Однако они могут решаться численными методами с заданной погрешностью (не более значения, заданного системной переменной (TOL) . Для простейших уравнений вида F(x)=0 решение находится с помощью функции
Эта функция возвращает значение переменной с указанным уровнем точности, при котором выражение дает 0.
Функция реализует вычисления итерационным методом, причем можно задать начальное значение переменной. Это особенно полезно, если возможно несколько решений. Тогда выбор решения определяется выбором начального значения переменной. Пример ниже иллюстрирует технику применения функции root для вычисления корней кубического полинома.
Как известно, кубическое уравнение обязательно имеет хотя бы один кубический корень х1. Он найден вначале функцией root. Два других корня могут оказаться и комплексными. Функция root может отыскивать и такие корни. Для поиска второго корня, х2, первый исключается делением F(x) на (х-х1). Соответственно для поиска третьего корня, хЗ, F(X) делится еще и на (х-х2).
Эту процедуру можно распространить и на поиск корней полиномов более высокой степени, однако надо помнить, что найти корни полинома можно гораздо более изящным и простым способом — используя операцию символьных вычислений.
Функция поиска корней многочлена polyroots
Для поиска корней обычного полинома р(х) степени п MathCAD содержит очень удобную функцию:
Она возвращает вектор корней многочлена (полинома) степени п, коэффициенты которого находятся в векторе V, имеющем длину равную п+1.
Заметим, что корни полинома могут быть как вещественными, так и комплексными числами. Не рекомендуется пользоваться этой функцией, если степень полинома выше пятой-шестой, так как тогда трудно получить малую погрешность вычисления корней.
При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый служебным словом — директивой Given — и имеющий следующую структуру:
Given
Уравнения
Ограничительные условия
Выражения с функциями Find и Minerr
В блоке используется одна из следующих двух функций:
Find(vl, v2, . vn) — возвращает значение одной или ряда переменных для точного решения;
Minerr(vl, v2, . vn) — возвращает значение одной или ряда переменных для приближенного решения.
Между этими функциями существуют принципиальные различия. Первая функция используется, когда решение реально существует (хотя и не является аналитическим). Вторая функция пытается найти максимальное приближение даже к несуществующему решению путем минимизации среднеквадратичной погрешности решения.
При использовании функции Minerr для решения систем нелинейных уравнений надо проявлять известную осторожность и обязательно предусматривать проверку решений. Нередки случаи, когда решения могут оказаться ошибочными, чаще всего из-за того, что из нескольких корней система предлагает нереальный (или не представляющий интереса) корень. Полезно как можно точнее указывать начальные приближения к решению.
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 самостоятельно преобразует его в знак присвоения «: источники:»]
