@sym: sol = solve (eqn) ¶@sym: sol = solve (eqn, var) ¶@sym: sol = solve (eqn1, …, eqnN) ¶@sym: sol = solve (eqn1, …, eqnN, var1, …, varM) ¶@sym: sol = solve (eqns, vars) ¶@sym: [s1, …, sn] = solve (eqns, vars) ¶Symbolic solutions of equations, inequalities and systems.
Examples
syms x
solve(x == 2*x + 6, x)
⇒ ans = (sym) -6
solve(x^2 + 6 == 5*x, x);
sort(ans)
⇒ ans = (sym 2×1 matrix)
⎡2⎤
⎢ ⎥
⎣3⎦
Sometimes its helpful to assume an unknown is real:
syms x real
solve(abs(x) == 1, x);
sort(ans)
⇒ ans = (sym 2×1 matrix)
⎡-1⎤
⎢ ⎥
⎣1 ⎦
In general, the output will be a list of dictionaries. Each entry of the list is one a solution, and the variables that make up that solutions are keys of the dictionary (fieldnames of the struct).
syms x y
d = solve(x^2 == 4, x + y == 1);
% the first solution
d{1}.x
⇒ (sym) -2
d{1}.y
⇒ (sym) 3
% the second solution
d{2}.x
⇒ (sym) 2
d{2}.y
⇒ (sym) -1
But there are various special cases for the output (single versus multiple variables, single versus multiple solutions, etc). FIXME: provide a ’raw_output’ argument or something to always give the general output.
Alternatively:
[X, Y] = solve(x^2 == 4, x + y == 1, x, y)
⇒ X = (sym 2×1 matrix)
⎡-2⎤
⎢ ⎥
⎣2 ⎦
⇒ Y = (sym 2×1 matrix)
⎡3 ⎤
⎢ ⎥
⎣-1⎦
You can solve inequalities and systems involving mixed inequalities and equations. For example:
solve(x^2 == 4, x > 0) ⇒ ans = (sym) x = 2
syms x solve(x^2 - 1 > 0, x < 10) ⇒ ans = (sym) (-∞ < x ∧ x < -1) ∨ (1 < x ∧ x < 10)
See also: @@sym/eq, @@sym/dsolve.
Package: symbolic