Это набор линейных уравнений, поэтому сначала переставьте их следующим образом:
-x + y = 0
2x + y = 3
, и вы увидите, что они имеют форму системы линейных уравнений A*v=b
где. A
- это матрица:
julia> A = [-1 1; 2 1]
2×2 Array{Int64,2}:
-1 1
2 1
и b
- это вектор:
julia> b = [0, 3]
2-element Array{Int64,1}:
0
3
Теперь v
содержит неизвестные вам переменные x
и y
. Теперь вы можете решить систему, используя левый оператор деления \
:
julia> A\b
2-element Array{Float64,1}:
1.0
1.0
Если у вас была более общая система нелинейных уравнений, вы должны использовать пакет NLsolve.jl:
julia> using NLsolve
julia> function f!(F, v)
x = v[1]
y = v[2]
F[1] = -x + y
F[2] = 2*x + y - 3
end
f! (generic function with 1 method)
julia> res = nlsolve(f!, [0.0; 0.0])
Results of Nonlinear Solver Algorithm
* Algorithm: Trust-region with dogleg and autoscaling
* Starting Point: [0.0, 0.0]
* Zero: [1.0000000000003109, 0.9999999999999647]
* Inf-norm of residuals: 0.000000
* Iterations: 2
* Convergence: true
* |x - x'| < 0.0e+00: false
* |f(x)| < 1.0e-08: true
* Function Calls (f): 3
* Jacobian Calls (df/dx): 3
julia> res.zero
2-element Array{Float64,1}:
1.0000000000003109
0.9999999999999647
(обратите внимание, что в f!
мы определяем два выхода F[1]
и F[2]
равными нулю - вы должны перестроить свои уравнения таким образом).
Для получения более подробной информации о том, как использовать NLsolve.jl см. https://github.com/JuliaNLSolvers/NLsolve.jl.