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

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)[-vpa ('0.70710678118654752440084436210485'); vpa ('0.70710678118654752440084436210485');-vpa ('0.70710678118654752440084436210485'); vpa ('0.70710678118654752440084436210485')]

scatter(xvalues, yvalues)

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

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

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