Этот пример показывает вам, как решить параметризованные алгебраические уравнения с помощью Symbolic Math Toolbox.
Чтобы решить алгебраические уравнения символически, используйте функцию solve
. Решить функция может предоставить полную информацию обо всех решениях уравнения, даже если существуют бесконечно многие путем представления параметризации. Это может также предоставить информацию, под которой обусловливает эти решения, допустимы. Чтобы получить эту информацию, установите опцию ReturnConditions на истину.
Решите уравнение sin(C*x) = 1
. Задайте x
как переменную, чтобы решить для. Указатели на функцию 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
. Функция 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 =
Также можно также использовать существующее решение и ограничить его с дополнительными условиями. Обратите внимание на то, что, в то время как условие изменяется, решение остается то же самое. Функция 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 =