exponenta event banner

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

Символьная математическая Toolbox™ предлагает как символьные, так и числовые решатели уравнений. В этом разделе показано, как решить уравнение с помощью символьного решателя solve. Чтобы сравнить символьные и числовые решатели, см. раздел Выбор числового или символьного решателя.

Решение уравнения

Если 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')

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.70710678118654752440084436210485'); -vpa('0.70710678118654752440084436210485'); 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 застрял, или если вы хотите улучшить производительность, см. раздел Устранение неполадок в решениях уравнений из функции решения.