⇐ back

    Решение систем нелинейных уравнений

    Решим следующую систему уравнений:

    ex30

    Сперва создадим блок с уравнениями. Введите команду 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), и затем после двоеточия идет новое выражение для уравнения.