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.