Как в маткаде решить уравнение – Решение уравнений и систем уравнений в Mathcad

Решение уравнений и систем уравнений в Mathcad

Уравнение и системы уравнений в математическом пакете Mathcad  в символьном виде решаются с использованием специального оператора символьного решения solve в сочетании со знаком символьного равенства, который может быть также введен с рабочей панели “Символика”. Например:

Аналогичные действия при решении уравнений в Mathcad можно выполнить, используя меню “Символика”. Для этого необходимо записать вычисляемое выражение. Затем выделить переменную, относительно которой решается уравнение, войти в меню  Символика, Переменная, Разрешить. Например:

В случае, если необходимо упростить полученный результат, используется знак равенства [=]. Например:

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

This array has more elements than can be displayed at one time. Try using the “submatrix” function” – “Этот массив содержит больше элементов, чем может быть отображено одновременно. Попытайтесь использовать функцию “submatrix””. В этом случае рекомендуется использовать численное решение. Или, в случае необходимости, символьное решение может быть выведено и отображено на дисплее.

Символьное решение может быть получено с использованием блока given … find. В этом случае при записи уравнения для связи его левой и правой части использует символ логического равенства “=” с панели инструментов Boolean, например:

Аналогичным способом решаются системы уравнений в символьном виде. Ниже приводятся примеры решения систем уравнений в символьном виде различными способами. При использовании оператора символьного решения

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

Пример использования блока given…find для решения системы уравнений:

allmathcad.com

Уравнения с одним неизвестным в Mathcad

Простейший способ найти корень уравнения с одним неизвестным в Mathcad обеспечит функция root ( ). Аргументами функции root ( ) являются вид функции определяющей решаемое уравнение и имя переменой, относительно которой ищется решение — root (f(x),x) Если уравнение в Mathcad содержит несколько корней, то функция обеспечивает нахождение единственного корня, ближайшего к заданному начальному значению для искомой переменной. Точность вычислений может быть увеличена или уменьшена посредством задания значения переменной

TOL, равной по умолчанию 10-3 и определённой в меню Math, Options (Математика, Опции). Установленное значение TOL также оказывает влияние на точность вычислений.

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

Другим способом решения уравнений в Mathcad является применение специального вычислительного блока, начинающегося с ключевого слова given с использованием функций find( ) и minerr ( ).

Блок имеет следующую структуру:

Начальное значение искомой переменной

given

Решаемое уравнение

Выражение с использованием функции find( ) или minerr ( )

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

given…minerr ( ) найдено решение, значение, которое наиболее приближено к оси х, то есть обеспечивает минималь-ную невязку. Значение невязки (ошибки) показывает системная переменная ERR.

allmathcad.com

Решение системы уравнений в Mathcad

Первоначально рассмотрим СЛАУ в Mathcad. Для их решения может использоваться блок given …find() или специальная функция lsolve(). Применение блока given …find() предопределяет необходимость задания начальных значений искомых переменных. Далее после ключевого слова given описывается СЛАУ и с помощью find() находится решение. Следует указать, что в том случае, когда

СЛАУ в Mathcad имеет бесконечное множество решений блок given …find() дает конкретный результат, что несомненно следует отнести к недостаткам. В случае отсутствия решения будет выдано сообщение “Matrix is singular. Cannot compute its inversу – Матрица сингулярная. Нельзя вычислить эту инверсию”.

Применение функции lsolve( ) позволяет избежать этого недостатка. Функция lsolve(M,b) имеет два аргумента. M – матрица коэффициентов при неизвестных, b – вектор свободных членов. На листинге приведен пример решения СЛАУ.

Пример решения СЛАУ:

Для решения системы нелинейных уравнений используются два блока: given…find() и given…minerr (). Так как система нелинейных уравнений может иметь несколько решений, то полученные результаты зависят от начальных значений искомых переменных. В обоих случаях получаются приближенные решения, для которых рекомендуется делать проверку. Обычно в Mathcad требуется, чтобы количество уравнений было равно количеству искомых переменных, но в некоторых случаях, когда с точки зрения классической математики может быть получено точное решение и при меньшем количестве уравнений, данное условие может быть нарушено. На листинге представлены примеры использования блоков

given…find() и given…minerr () для решения систем нелинейных уравнений.

allmathcad.com

Урок 24. Решение уравнений в Mathcad – использование функций

Решение уравнений является важным для решения практических задач. Поэтому уделим уравнениям еще один урок.

Блок решения в функции

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

A:

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

Функцию можно использовать сколько угодно раз:

Использовать функцию можно с диапазоном переменных:

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

A<0.7). Поэтому лучше заранее проверить свою функцию.

Сообщения об ошибке можно избежать, написав маленькую программу:

Если блок решения выдает сообщение об ошибке, на выходе получим значение NaN (Not a Number – «Не Число»), которое просто не отображается на графике:

Построим две ветки уравнения с использованием этого приема:

Когда переменных много

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

Решение представляет собой вектор из восьми элементов, но нам нужны лишь элементы с индексами 0 и 1.

Минимизация ошибки

Find() – не единственный решатель в Mathcad. Еще один полезным решателем является Minnerr(), находящий решения, которые минимизируют ошибку в системе уравнений. Рассмотрим пример: есть набор данных, которые мы хотим аппроксимировать уравнением Бейтмена:

Мы хотим подобрать три константы в уравнении Бейтмена таким образом, чтобы ошибка приближения была минимальна. У нас есть семь уравнений (по одной для каждого эксперимента) и три константы, так что в системе избыток данных. Minerr() может обработать эту проблему:

Замечания:

  1. Три константы являются переменными для этой системы.
  2. Переменные не могут иметь счетных индексов.
  3. У параметров (t и c) могут быть счетные индексы.

Возможно, Вам хотелось бы использовать цикл

for для семи уравнений, но в блоке решений этого сделать нельзя.

Для полностью определенных систем (с одинаковым числом независимых уравнений и неизвестных) функция Minerr() дает тот же ответ, что и Find().

Резюме

В этом уроке мы определили способы расширенного использования блоков решения:

  1. Вы можете определить вывод блока решения как функцию. Таким образом в блок решения можно передавать параметры и начальные приближения.
  2. Если при вычислении точек для графика хотя бы одно решение не будет найдено, то график не будет построен. Этой ошибки можно избежать, написав небольшую программу с использованием “try/on error”, которая выводит NaN (Not a Number – Не Число), если результат отсутствует.
  3. Для двух и более неизвестных (и уравнений) вывод блока решения является вектором. Если нужен один или два элемента этого вектора, их можно вывести, используя подстрочные индексы.
  4. Вместо функции Find() можно использовать Minerr() – она минимизирует ошибку для заданного набора ограничений, в том числе, если данные избыточны. Minerr() часто может дать приближенный результат, когда Find() выдает ошибку.

Другие интересные материалы

sapr-journal.ru

2. Решение уравнений в Mathcad

2.1. Численное решение уравнения

Для простейших уравнений вида f(x) = 0 решение в Mathcad находится с помощью функции root

root( f(х1, x2, …), х1, a, b )

Возвращает значение х1, принадлежащее отрезку [a, b], при котором выражение или функция f(х) обращается в 0. Оба аргумента этой функции должны быть скалярами. Функция возвращает скаляр.

Аргументы:

f(х1, x2, …) функция, определенная где-либо в рабочем документе, или выражение. Выражение должно возвращать скалярные значения.

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

a, bнеобязательны, если используются, то должны быть вещественными числами, причем a < b.

 

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

,

 

где функции f1(x) и f2(x) — более простые, чем функция f(x). Тогда, построив графики функций у = f1(x) и у = f2(x), искомые корни получим как абсциссы точек пересечения этих графиков.

Пример. Графически отделить корни уравнения:

 

Уравнение (1) удобно переписать в виде равенства:

lg x=.

Отсюда ясно, что корни уравнения (1) могут быть найдены как абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y = . Построив эти кривые, приближенно найдем единственный корень уравнения (1) или определим его содержащий отрезок [2, 3].

Упражнение 1. Построить график функции f(x) (Таблица 1) и приблизительно определить один из корней уравнения. Решить уравнение f(x)= 0 с помощью встроенной функции Mathcad root.

Таблица 1

Варианты упражнения 1

x3 + x2 -2sin(x) =0

5x — 8ln(x) = 8

x2 + x — cos(3x) = 1

x2 — sin(4x) = 0

3x — 2ln(x) = 5

2x -2,2x =0

x2 — 2x -sin(3x) =1

x — sin(x) -0.25 = 0

3x — ex = 0

3x — 2ln(x) = 5

ex + e-3x = 4

x +4sin(x) = 2

2.7x — 1.5ln(x) = 2.8

x3 + x2 -2sin(x) =0

ex -6x =3

studfiles.net

Решение уравнений в MathCad – использование функций

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

 

Блок решения в функциях

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

 

 

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

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

 

Так, можно воспользоваться функцией с диапазонами переменных.

 

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

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

 

Когда блок решения начинает выдавать ошибки, мы получим значение NaN (Not a Number – «Не Число». Впрочем, на графике мы его не увидим.

 

Теперь разработаем две ветки уравнения при использовании данного опционала:

 

Что делать в случаях, когда переменных много

Бывают расчеты, в которых вмещено несколько переменных. Вполне возможно, что когда-то с ними столкнетесь и вы. Для примера мы возьмем систему, которая состоит из восьми уравнений. Нам понадобится получить только X и Y. Сначала же зададим всем переменным начальное приближение.

 

Решение становится вектором из восьми пунктов. Нам потребуются исключительно те элементы, которые вмещают индексы 0 и 1.

 

Устранение ошибки

Теперь давайте на примере просмотрим набор данных, которые будут аппроксимированны в соответствии с уравнениями Бейтмена.

 

Сейчас мы собираемся разработать три константы при помощи уравнения Бейтмена таким образом, чтобы актуальная ошибка приближения была минимизирована. Что мы имеем? Систему из семи уравнений. Каждая из них соответствует отдельному эксперименту. Также у нас есть три константы, а, следовательно, система пострадала от преизбытка данных. Опция Minerr () станет оптимальным инструментом для обработки данной проблемы.

 

Константы – это переменные нашей системы. Переменные не имеют математических индексов. Параметры имеют индексы счетного типа.

archicad-autocad.com

Урок 23. Нелинейные уравнения в Mathcad

Mathcad может решать системы линейных и нелинейных уравнений с помощью встроенных алгоритмов. На самом деле, «решать» — не совсем верное определение того, что делает программа. Лучше рассуждать так: Вы задаете приближенное значение, затем программа уточняет эту оценку. Поэтому, используя такую технологию решения, нужно знать, что Вы делаете. Вы должны понимать, как ведет себя функция, которую исследуете. Иначе Вы можете быть разочарованы.

Изучение «решения» начнем с уравнений с одной переменной. В этом случае поведение уравнения можно понять, построив график. Позже мы рассмотрим системы уравнений.

Уравнения с одной переменной

Уравнение, которое мы рассмотрим, достаточно простое:

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

Первая (самая верхняя) линия дважды пересекается с параболой около точек x=-0.3 и x=1.3. У второй линии – одно пересечение (или два близко расположенных) возле точки x=0.5. Пересечений с третьей прямой (самой нижней) нет.

Решения

Сначала рассмотрим самую верхнюю линию. Чтобы получить решение, нам нужен Блок решения (вкладка Математика –> Области –> Блок решения). Заполним блок для решения первого уравнения:

Здесь есть три области для различных записей:

— начальные приближения;

— ограничения;

— решатель.

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

Как видно, решение 1.366 – это правое пересечение прямой и параболы. Начальное приближение не критично – можно ввести 1.6, щелкнуть мышью вне блока и получить тот же результат:

Изменим начальное приближение на значение, близкое к левому пересечению, скажем, -0.5. Решение изменится на -0.366:

Измените начальное приближение обратно на 1.3.

Теперь поменяем константу 0.5 в уравнении на -0.25. Решение изменится на 0.5:

Этот же ответ мы будем получать для любого значения начального приближения – это единственное решение.

Наконец, изменим константу в уравнении на -1 (последнее уравнение). Щелкнем вне блока и получим сообщение об ошибке:

Решения нет. Изменим константу обратно на 0.5.

Вывод решения

Переменные в блоке решений локальны. Вы не можете использовать их значения вне блока. Вернемся к уравнению, где приближенное значение задано 1.3. Мы решили уравнение, чтобы найти более точное решение x=1.366. Однако если мы попробуем вывести значение x, мы получим вектор, которые определили для нашего графика.

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

Тогда получим верный результат:

Решение систем уравнений

Для примера решим систему трех уравнений: два линейных и одно кубическое. Здесь три неизвестных – начальное приближение даем для всех трех:

Все три ответа можно вывести в вектор:

Удалите последнее из трех уравнений. Решение все равно будет найдено, с учетом двух оставшихся уравнений:

Однако, такое решение может быть не тем, которое Вам нужно.

Обратите внимание еще на некоторые детали. В блоке решения используются два вида знака «равно»: знак присваивания для начальных приближений и для решателя Find, и знак булева равенства в уравнении. Эта разница очень важна. Еще один момент – щелкните по слову Find в области решателя, откройте вкладку Математика. В строке Обозначения должно быть отмечено «Ключевое». Некоторые другие ключевые слова мы рассмотрим в последующих уроках.

Растворимость вещества

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

Как зависит общая растворимость D от количества добавленной кислоты? Концентрацию будем считать в моль/л. Концентрация насыщения нерастворенной кислоты:

Начнем с концентрации кислоты:

Константы равновесия реакции:

Блок решения начинается с трех неизвестных и их начальных приближений:

Решение:

Общая концентрация вещества:

Расчет для построения графика (подробнее о таких расчетах поговорим в следующем уроке):

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

Если концентрация кислоты мала, решение содержит низкую концентрацию DOH, которая диссоциирует только частично. При увеличении концентрации кислоты, все больше и больше вещества диссоциирует.

Резюме

  1. Если есть уравнение или система уравнений, Вы можете дать приближенное решение, а Mathcad улучшит эту оценку. Такой способ используется в Блоке решения.
  2. Первая часть блока решения – начальные приближения, т.е. Ваши оценки. Здесь используется знак присваивания «:=». Эти значения могут быть помещены и до блока.
  3. В области «Ограничения» (уравнения) нужно использовать булево равенство [Ctrl+=]. Это единственный знак, по обе стороны от которого могут быть выражения.
  4. Блок решения заканчивается функцией для решения. Мы рассмотрели Find(), которая содержит неизвестные, которые нужно найти.
  5. Чтобы использовать результат решения в дальнейших расчетах, присвойте Find() переменной. Это может быть как одна переменная, так и вектор.
  6. Для решения системы нелинейных уравнений нужно быть внимательным. Число уравнений должно быть равно числу неизвестных. Кроме того, приближенные значения должны быть как можно ближе к решению.
  7. Если решение не было найдено, не спешите обвинять Mathcad. Нелинейные уравнения являются головной болью для любого языка программирования. Попробуйте понять поведение Ваших уравнений, прежде чем приступать – часто уравнения могут не иметь решения.

Другие интересные материалы

sapr-journal.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *