Symbolic Math Toolbox™ предлагает и символьные и числовые решатели уравнения. Эта тема показывает вам, как решить уравнение символически с помощью символьного решателя solve. Чтобы сравнить символьные и числовые решатели, смотрите, Выбирают Numeric or Symbolic Solver.
Если eqn является уравнением, solve(eqn, x) решает eqn для символьной переменной x.
Используйте оператор ==, чтобы задать знакомое квадратное уравнение и решить его с помощью solve.
syms a b c x eqn = a*x^2 + b*x + c == 0; solx = solve(eqn, x)
solx = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
solx является символьным вектором, содержащим два решения квадратного уравнения. Если вход eqn является выражением и не уравнением, solve решает уравнение eqn == 0.
Чтобы решить для переменной кроме x, задайте ту переменную вместо этого. Например, решите eqn для b.
solb = solve(eqn, b)
solb = -(a*x^2 + c)/x
Если вы не задаете переменную, solve использует symvar, чтобы выбрать переменную, чтобы решить для. Например, solve(eqn) решает eqn для x.
solve автоматически не возвращает всех решений уравнения. Решите уравнение cos(x) == -sin(x). Функция solve возвращает одно из многих решений.
syms x solx = solve(cos(x) == -sin(x), x)
solx = -pi/4
Чтобы возвратить все решения наряду с параметрами в решении и условиях на решении, установите опцию ReturnConditions на true. Решите то же уравнение для полного решения. Обеспечьте три выходных переменные: для решения x, для параметров в решении, и для условий на решении.
syms x [solx, param, cond] = solve(cos(x) == -sin(x), x, 'ReturnConditions', true)
solx = pi*k - pi/4 param = k cond = in(k, 'integer')
solx содержит решение для x, который является pi*k - pi/4. Переменная param задает параметр в решении, которое является k. Переменная cond задает условие in(k, 'integer') на решении, что означает, что k должен быть целым числом. Таким образом solve возвращает периодическое решение, запускающееся в pi/4, который повторяется с промежутками в pi*k, где k является целым числом.
Можно использовать решения, параметры и условия, возвращенные solve, чтобы найти решения в интервале или под дополнительными условиями.
Чтобы найти значения x в интервале -2*pi<x<2*pi, решите solx для k в том интервале при условии cond. Примите условие cond с помощью assume.
assume(cond) solk = solve(-2*pi<solx, solx<2*pi, param)
solk = -1 0 1 2
Чтобы найти значения x, соответствующего этим значениям k, используйте subs, чтобы заменить k в solx.
xvalues = subs(solx, solk)
xvalues =
-(5*pi)/4
-pi/4
(3*pi)/4
(7*pi)/4Чтобы преобразовать эти символьные значения в числовые значения для использования в числовых вычислениях, используйте vpa.
xvalues = vpa(xvalues)
xvalues = -3.9269908169872415480783042290994 -0.78539816339744830961566084581988 2.3561944901923449288469825374596 5.4977871437821381673096259207391
Предыдущие разделы использовали solve, чтобы решить уравнение cos(x) == -sin(x). Решение этого уравнения может визуализироваться с помощью функций построения графика, таких как fplot и scatter.
Постройте обе стороны уравнения cos(x) == -sin(x).
fplot(cos(x)) hold on grid on fplot(-sin(x)) title('Both sides of equation cos(x) = -sin(x)') legend('cos(x)','-sin(x)','Location','best','AutoUpdate','off')

Вычислите значения функций в значениях x и наложите решения как точки с помощью scatter.
yvalues = cos(xvalues)
yvalues =
scatter(xvalues, yvalues)

Как ожидалось решения появляются на пересечении двух графиков.
Если результаты выглядят сложными, solve застревает, или если вы хотите улучшать производительность, смотрите, Решения для уравнения Поиска и устранения неисправностей от решают Функцию.