Решение систем нелинейных уравнений
Решим следующую систему уравнений:
Сперва создадим блок с уравнениями. Введите команду block(name), где "name" - идентификатор блока:
block(b1)
Все уравнения должны быть записаны в форме f(x) = 0, т.е. все члены перенесены в левую часть. Тогда вам нужно определить только левую часть:
x^2 + y^2 + z^2 - 1
2*x^2 + y^2 - 4*z
3*x^2 - 4*y + z^2
После того, как вы завершили создание блока, введите:
end
Уравнения решаются численно, методом Ньютона (метод касательных), так что нам нужно передать решателю начальные приближения для корней. Создайте вектор с начальными приближениями:
X0 = < .5, .5, .5 >
И, наконец, решите систему с помощью функции solve(). Передайте идентификатор блока (в нашем случае: b1), вектор с начальными приближениями (X0), и затем перечислите все искомые переменные:
X = solve(b1, X0, x, y, z)
Теперь вектор X содержит корни уравнения в таком же порядке: x, y, z. Вы можете использовать команду explode(), чтобы легко создать соответствующие переменные со значениями корней. Выполните:
explode(b1, X)
Это создаст переменные x, y, z со значениями корней уравнений (Помните: если уже есть переменные с такими именами, то они будут перезаписаны, что может привести к неожиданным последствиям).
Отредактировать уравнение в блоке можно с помощью команды edit:
edit b1 1: x^2 + y^2 + 2*z^2 - 5
где через пробел идут идентификатор блока, номер строки (нумерация начинается с 1), и затем после двоеточия идет новое выражение для уравнения.