Этот пример показывает, как решить параметризованные алгебраические уравнения с помощью Symbolic Math Toolbox.
Чтобы решить алгебраические уравнения символически, используйте solve
функция. Функция solve может предоставить полную информацию обо всех решениях уравнения, даже если их бесконечно много, путем введения параметризации. Он также может предоставить информацию, при каких условиях эти решения действительны. Чтобы получить эту информацию, установите значение опции ReturnConditions равным true.
Решить уравнение sin(C*x) = 1
. Задайте x
как переменная, для которой необходимо решить. The solve
указатели на функцию C
как константа. Предоставьте три выходные переменные для решения, вновь сгенерированные параметры в решении и условия для решения.
syms C x eq = sin(C*x) == 1; [solx, params, conds] = solve(eq, x, 'ReturnConditions', true)
solx =
params =
conds =
Чтобы проверить решение, замените решение в уравнение с помощью subs
. Для работы в соответствии с допущениями в conds
в остальной части этого примера используйте assume
. Протестируйте решение с помощью isAlways
. The isAlways
функция возвращает логический 1
(true
) указывая, что решение всегда держится при заданных допущениях.
SolutionCorrect = subs(eq, x, solx)
SolutionCorrect =
assume(conds) isAlways(SolutionCorrect)
ans = logical
1
Чтобы получить одно решение из бесконечно многих решений, найдите значение параметров params
путем решения условий conds
для параметров; не задавать опцию ReturnConditions. Замените это значение k в решение с помощью
subs
для получения решения из набора решений.
k0 = solve(conds, params)
k0 =
subs(solx, params, k0)
ans =
Чтобы получить значение параметров, которое удовлетворяет определенному условию, добавьте условие ко входу к solve
. Найдите значение параметра, больше 99/4
и замените, чтобы найти решение.
k1 = solve([conds, params > 99/4], params)
k1 =
subs(solx, params, k1)
ans =
Чтобы найти решение в заданном интервале, можно решить исходное уравнение с неравенствами, которые задают интервал.
[solx1, params1, conds1] = solve([eq, x > 2, x < 7], x, 'ReturnConditions', true)
solx1 =
params1 =
conds1 =
Также можно использовать существующее решение и ограничить его дополнительными условиями. Обратите внимание, что хотя условие изменяется, решение остается неизменным. The solve
функция выражает solx
и solx1
с различными параметризациями, хотя они и эквивалентны.
[~, ~, conds2] = solve(x == solx, x < 7, x > 2, x, 'ReturnConditions', true)
conds2 =
Получите те значения параметров, которые удовлетворяют новому условию, для конкретного значения константы C:
conds3 = subs(conds2, C, 5)
conds3 =
solve(conds3, params)
ans =