Этот раздел содержит некоторые советы по поводу эффективного использования процедур Mathcad, предназначенных для решения систем уравнений. Описана техника решения уравнений, содержащих параметр.
Многократное решение уравнений
Методы, описанные до сих пор, эффективно позволяют решать конкретную систему уравнений. Однако они имеют следующие два ограничения:
- Как только используется имя функции Find, это означает, что блок решения уравнений завершён. Если употребить эту функцию еще раз, появится сообщение об ошибке “нет соответствующего Given”.
- Если в системе уравнений нужно изменить значения некоторых параметров или констант, чтобы изучить их влияние на решение системы, необходимо вернуться обратно в блок решения уравнений, чтобы изменить их.
Оба эти ограничения могут быть преодолены, если прибегнуть к возможности Mathcad определять функции с использованием блока решения уравнений.
Если определить функцию с использованием функции Find в правой части этого определения, то определенная таким образом функция будет решать систему уравнений каждый раз, когда она вызывается. Таким образом можно преодолеть первое ограничение.
Если эта функция имеет в качестве аргументов те параметры, которые требуется изменять при решении уравнений, можно просто изменять значения аргументов этой функции. Это преодолевает второе ограничение.
На Рисунке 14 приведен конкретный пример. Коэффициент трения трубки f зависит от диаметра трубки D, шероховатости e и числа Рейнольдса R. Было бы неплохо экспериментировать с различными размерами трубки (D), сделанной из различных материалов с различной шероховатостью (e).
Уравнение на Рисунке 14 показывает связь между этими параметрами. Учитывая вид уравнения, можно отметить, что аналитически выразить значение величины f через R, D и e нельзя.
Можно, однако, определить функцию с использованием блока решения уравнений. Всякий раз, когда вычисляется функция , Mathcad подставляет заданные конкретные значения аргументов e, D и R в блок решения уравнений, решает уравнение относительно неизвестного f и возвращает найденное значение корня.
Рисунок 14: Определение функции с использованием блока решения уравнений.
Предположим, что зафиксированы размер трубки и ее материал (D и e), и нужно исследовать зависимость трения от значений числа Рейнольдса. Хотя функция на Рисунке 14 была определена с использованием блока решения уравнений, она обладает теми же самыми свойствами, что и любая другая функция. Её можно также использовать с дискретным аргументом.
На Рисунке 15 показано, как решать задачу и построить график зависимости коэффициента трения от числа Рейнольдса. Обратите внимание, что, когда вместе с блоком решения уравнений используется дискретный аргумент, Mathcad фактически решает систему уравнений для каждого значения дискретного аргумента. В результате такой тип вычислений может потребовать значительное количество машинного времени.
Рисунок 15: Вектор решений.
Предыдущий пример включает в себя только одно уравнение с одним неизвестным. Также возможно многократно решать и систему уравнений при различных значениях входящих в нее параметров. Однако в этом случае требуется проявить аккуратность при выводе результата, чтобы избежать сообщения об ошибке “нескалярная величина”.
Пример, приведенный на Рисунке 16, является параметризацией задачи из Рисунка 10. Предположим, что ищется пересечение прямой и окружности переменного радиуса R. Аналогично примеру, приведенному на Рисунке 15, можно определить функцию с использованием блока решения уравнений. В этом случае функция может быть определена следующим образом: F(R) := Find( x, y). Эта функция возвращает вектор значений, элементы которого — x и y — содержат координаты точки пересечения.
Основное отличие от предыдущего примера состоит в том, что определенная таким образом функция для каждого значения параметра R возвращает вектор, состоящий из двух элементов. Если попытаться вывести найденный ответ, печатая F(R)=, то это будет попытка вывести таким образом не таблицу чисел (скаляров), а таблицу, каждый элемент которой является вектором, состоящим из двух элементов. Поэтому Mathcad не может вывести ответ на экран и появляется сообщение об ошибке “нескалярная величина ”.
Решение этой проблемы состоит в раздельном отображении таблиц для разных элементов вектора F(R)0 и F(R)1. Напечатав F(R)[0=, получаем таблицу всех значений x — абсцисс точек пересечения. Аналогично, напечатав F(R)[1=, получаем таблицу всех значений y — ординат точек пересечения прямой и окружности.
Рисунок 16: Как вывести три решения, каждое из которых является вектором, состоящим из двух элементов.
Решение одинаковых задач относительно разных переменных
Иногда возникают задачи, в которых нужно поменять ролями известные и неизвестные переменные, входящие в уравнение. Например, рассмотрим формулу, которая связывает годовую процентную ставку по ссуде, величину ссуды, срок, на который выдана ссуда, и сумму ежемесячных платежей по ссуде. Если известны значения трех любых величин из этих четырех, то можно разрешить уравнение относительно оставшейся четвертой величины и найти ее.
Рабочий документ Mathcad, приведенный на Рисунке 17, показывает, что, если ссуда выдана под 12 % годовых на 30 лет, и планируется ежемесячно выплачивать $1000, то самая большая ссуда, удовлетворяющая этим условиям, равна $97,218.33.
Рисунок 17: Решение задачи для величины ссуды.
Сделав несколько простых изменений, можно использовать тот же самый рабочий документ, чтобы решить задачу о величине годовой процентной ставке по ссуде. Предположим теперь, что величина ссуды известна и равна $120,000. До какой величины должна опуститься годовая процентная ставка по ссуде, чтобы ежемесячные выплаты по ней составляли бы $1000 в месяц? На Рисунке 18 приведен ответ.
Если сравнить Рисунки 17 и 18, можно увидеть, что они являются очень похожими. Основное различие содержится в аргументе функции Find. Изменение заданных и искомых переменных проводится путем изменения аргумента функции Find.
Рисунок 18: Решение задачи о годовом проценте по ссуде.
Приближенные решения
Mathcad содержит функцию, очень похожую на функцию Find. Она называется Minerr. Функция Minerr использует тот же самый алгоритм, что и функция Find. Различие состоит в следующем. Если в результате поиска решения не может быть получено дальнейшее уточнение текущего приближения к решению, Minerr возвращает это приближение. Функция Find, в отличие от функции Minerr, возвращает в этом случае сообщение об ошибке “решение не найдено”. Правила использования функции Minerr такие же, как и функции Find.
Minerr (z1, z2, z3, . . .) |
Возвращает решение системы уравнений. Число аргументов равно числу неизвестных. |
Minerr обычно возвращает ответ, который минимизирует соответствующий функционал невязки (см. Приложение D), связанный с решаемой задачей. Однако Minerr не может проверить, реализует ли ответ абсолютный минимум для функционала невязки. Если функция Minerr используется в блоке решения уравнений, необходимо всегда включать дополнительную проверку достоверности получаемых результатов. Встроенная переменная ERR дает величину невязки для приближенного решения.ERR variable. Mathcad не имеет встроенной переменной для покомпонентного вывода вектора невязки на найденном приближенном решении.
Minerr часто используется для решения некоторых задач регрессии. На Рисунке 19 приведен пример, в котором функция Minerr используется, чтобы определить неизвестные параметры в распределении Вейбулла. Функция genfit также полезна для решения задач регрессии.
Рисунок 19: Использование функции minerr для решения задачи регрессии.
Использование символьного решения уравнений
В Mathcad обычно можно быстро и точно найти численное значение корня с использованием функции root. Но имеются некоторые задачи, для которых возможности Mathcad позволяют находить решения в символьном виде.
Решение уравнений в символьном виде позволяет найти точные или приближенные корни уравнения:
- Если решаемое уравнение имеет параметр, то решение в символьном виде может выразить искомый корень непосредственно через параметр. Поэтому, вместо того чтобы решать уравнение для каждого нового значения параметра, можно просто заменять его значения в найденном символьном решении.
- Если нужно найти все комплексные корни полинома, степень которого меньше или равна 4, символьное решение даст их точные значения в одном векторе или в аналитическом или в цифровом виде. Используя символьный процессор, можно также найти полное решение для некоторых полиномов более высокой степени
|