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')
Вычислим значения функций в значениях x
, и наложить решения как точки используя scatter
.
yvalues = cos(xvalues)
yvalues =
scatter(xvalues, yvalues)
Как и ожидалось, решения появляются на пересечении двух графиков.
Если результаты выглядят сложными, solve
застрял, или если вы хотите улучшить эффективность, см., Поиск и устранение проблем с решениями уравнения из решения Function.