Иллюстрированный самоучитель по Mathematica 3/4

Получение неизвестных в явном виде

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

{x, y, z, ...}/.

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

FindRoot[{x - 2 == 9, y ^ 2 = 16, x + y + z == 10}, {x, 1.}, {y, 1.}, {z, 1.}]
(x > 3., y > 4., z > 3.} 
{x, y, z} 
{x, y, 2}

Обратите внимание на то, что вывод списка {х, у, z } не дает полученных значений неизвестных. Это связано с тем, что переменные в блоке решения имеют локальный характер и за пределами блока их значения (в том числе неопределенные) сохранятся такими, какими они были до применения в блоке решения.

Теперь зададим решение в ином виде:

{x, y, z}/. FindRoot [{x * 2 == 9, yA2 == 16, x + y + z == 10}, {x, 1.}, {y, 1.}, {z, 1.}]
{3., 4., 3.}

Как видите, на сей раз решение получено в виде списка с числами – явными значениями неизвестных. Можно обозначить их как а, b и с, получить список {а, b, с} и даже использовать их отдельно:

{a, b, c} = %
(3., 4., 3.)
a, b, c
{3., 4., 3.}
a
3.
b
4.
c
3.

Теперь можно проверить решение данной системы:

{a ^ 2, b ^ 2, a + b + c}
{9., 16., 10.}

Полученный вектор правых частей системы совпадает с заданным, что свидетельствует о правильности решения. Разумеется, вместо нового списка { а, b, с } для вектора решения можно было использовать и вектор { х, у, z }.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.