Получение неизвестных в явном виде
Читатель, возможно, обратил внимание на то, что решения всех представленных выше примеров выглядят не совсем обычно – в виде списка подстановок. Это не позволяет использовать неизвестные в явном виде, например, для проверки решений или передачи найденных неизвестных в последующие вычислительные блоки. Однако от этого затруднения легко избавиться, если перед конструкцией блока решения использовать выражение следующего вида:
{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 }.