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

Symbolic Math Toolbox™ предлагает как символьные, так и числовые решатели уравнений. В этой теме показано, как решить уравнение символически с помощью символического решателя solve. Сравнение символьных и числовых решателей смотрите в Select Numeric или 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. The param переменная задает параметр в решении, который k. The 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')

Figure contains an axes. The axes with title Both sides of equation cos(x) = -sin(x) contains 2 objects of type functionline. These objects represent cos(x), -sin(x).

Вычислим значения функций в значениях x, и наложить решения как точки используя scatter.

yvalues = cos(xvalues)
yvalues = 

(-0.707106781186547524400844362104850.70710678118654752440084436210485-0.707106781186547524400844362104850.70710678118654752440084436210485)[-vpa ('0.70710678118654752440084436210485'); vpa ('0.7071067811865475244008436210485'); -vpa ('0.707106781165475244008436210485'); vpa ('0.70710678118654752440084436210485')]

scatter(xvalues, yvalues)

Figure contains an axes. The axes with title Both sides of equation cos(x) = -sin(x) contains 3 objects of type functionline, scatter. These objects represent cos(x), -sin(x).

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

Упрощение сложных результатов и повышение эффективности

Если результаты выглядят сложными, solve застрял, или если вы хотите улучшить эффективность, см., Поиск и устранение проблем с решениями уравнения из решения Function.