Этот пример показывает вам, как решить параметризованные алгебраические уравнения с помощью 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 =