Energy
education

сайт для тех, кто хочет изучать энергетику

9. Блоки решения

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

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

Преимущества блока решения:

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

Решатели и блоки решения можно использовать для выполнения следующих задач:

  • поиск корня уравнения;
  • решение системы уравнений;
  • решение дифференциальных уравнений.

Решатели оптимизации были заменены в PTC Mathcad Prime усовершенствованной библиотекой ПО оптимизации KNITRO. Библиотека KNITRO обеспечивает лучшие характеристики и надежность, чем старые решатели, предоставляя два алгоритма: Interior-Point (метод барьеров) и метод Active-Set.

Функции блока решения обрабатывают задачи, определенные в блоках решения, и вызывают решатели, которые возвращают решения данных задач.

  • Функции find, minerr решают системы линейных или нелинейных уравнений. Функция minerr возвращает приближенное решение в тех случаях, когда функция find возвращает ошибку.
  • Функции minimize, maximize выполняют, соответственно, минимизацию и максимизацию заданной функции.
  • Функция Odesolve решает ОДУ в блоках решения.

Функции find(var1, var2, ...), minerr(var1, var2, ...) возвращают значения var1, var2, ..., удовлетворяющие уравнениям и неравенствам, заданным в блоке решения. Если требуется найти n переменных, блок решения должен содержать n уравнений. Допускается матричное представление как при решении с матричными переменными.

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

Функция minerr отличается от функций find и minimize тем, что если выбранный алгоритм не сходится, то возвращается ответ, найденный на последней допустимой итерации, даже если он не удовлетворяет критерию сходимости. Если алгоритм сходится, то функция minerr возвращает те же результаты, что и find.

Если имеется только одна неизвестная переменная, решением будет скаляр. В противном случае решением будет вектор, в котором первый элемент – переменная var1, второй – var2 и т. д.

Пример. Электронагреватель имеющий форму цилиндра диаметром d = 55 мм и длиной l = 1.4 м, расположен горизонтально и потребляет мощность N = 2 кВт. Степень черноты поверхности нагревателя e = 0.9, температура окружающего воздуха tv = 20 °С. Определить температуру поверхности нагревателя. Для решения задачи требуется знание физических свойств воздуха, таких как: теплопроводность l и кинематическая вязкость n.

Пример решения уравнения в блоке решения.
Пример решения уравнения в блоке решения.
Пример решения уравнения с использованием функции root.
Пример решения уравнения с использованием функции root.

Функция root может решить только одно уравнение с одним неизвестным. Для решения системы из нескольких уравнений используйте функцию find или minerr.

Пример. Определить толщину тепловой изоляции d, которую нужно наложить на трубопровод внутренним диаметром d1 = 32 мм и наружным d2 = 38 мм, при условии, что температура поверхности изоляции не превышает tиз = 45 °С. Коэффициент теплопроводности материала l = 45 Вт/мК. Коэффициент теплоотдачи от жидкости к внутренней поверхности a1 = 3000 Вт/м2·К, к наружной поверхности a2 = 17 Вт/м2·К, температура жидкости внутри tж1 = 130 °С, снаружи tж2 = 25 °С. Материал изоляции имеет коэффициент теплопроводности равный lиз = 0.02 Вт/м·К.

Пример решения системы уравнений в блоке решения.
Пример решения системы уравнений в блоке решения.

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

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

Если система не сходится, можно найти приближенное решение с помощью функции minerr вместо функции find.

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

  • Операторы. Для решения ОДУ в блоках решения используйте оператор "равно". Не используйте операторы сравнения или неравенства. Для определения производных используйте оператор производной или оператор штриха.
  • Начальные и граничные условия. Для одного ОДУ n-го порядка должно быть задано n независимых ограничений в форме равенства. Конечные точки, используемые в граничных условиях, должны соответствовать конечным точкам, указанным в команде odesolve. PTC Mathcad проверяет правильность типа и количества условий и возвращает ошибку при обнаружении несоответствия.
  • Алгебраические ограничения. Можно задать алгебраические ограничения, например y(b) + z(b) = w(b). В этом случае блок решения содержит одну дополнительную неизвестную функцию w, которую необходимо указывать в качестве одной из выходных функций odesolve.
  • Результат. Результат вычислений функции odesolve необходимо назначить либо имени функции, либо вектору имен функций, без аргументов.
  • В зависимости от масштаба задачи и используемого относительного размера шага может потребоваться уменьшить значение TOL, чтобы получить приемлемые решения.

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