Решите алгебраическое уравнение

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 = 

(-0.707106781186547524400844362104850.70710678118654752440084436210485-0.707106781186547524400844362104850.70710678118654752440084436210485)

scatter(xvalues, yvalues)

Как ожидалось решения появляются на пересечении двух графиков.

Упростите сложные результаты и улучшайте производительность

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