Решите параметрические уравнения в режиме ReturnConditions

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

π2+2πkC

params = k
conds = C0kZ

Чтобы проверить решение, замените решением в уравнение с помощью subs. Продолжать работать под предположениями в conds для остальной части этого примера используйте assume. Протестируйте решение с помощью isAlways. isAlways функция возвращает логический 1 TRUE) указание, что решение всегда содержит под данными предположениями.

SolutionCorrect = subs(eq, x, solx)
SolutionCorrect = 

sin(π2+2πk)=1

assume(conds)
isAlways(SolutionCorrect)
ans = logical
   1

Чтобы получить одно решение из бесконечно многих решений, найдите значение параметров params путем решения условий conds для параметров; не задавайте опцию ReturnConditions. Замените этим значением k в решение с помощью subs получить решение из набора решения.

k0 = solve(conds, params)
k0 = 0
subs(solx, params, k0)
ans = 

π2C

Чтобы получить значение параметров, которое удовлетворяет определенному условию, добавьте условие во вход к solve. Найдите значение параметра больше, чем 99/4 и займите место в найти решение.

k1 = solve([conds, params > 99/4], params)
k1 = 26
subs(solx, params, k1)
ans = 

105π2C

Чтобы найти решение в заданном интервале, можно решить исходное уравнение с неравенствами, которые задают интервал.

[solx1, params1, conds1] = solve([eq, x > 2, x < 7], x, 'ReturnConditions', true)
solx1 = 

π+4πk2C

params1 = k
conds1 = 0<C4C<π+4πkπ+4πk<14CC<0π+4πk<4C14C<π+4πk

В качестве альтернативы можно также использовать существующее решение и ограничить его с дополнительными условиями. Обратите внимание на то, что, в то время как условие изменяется, решение остается то же самое. solve функционируйте выражает solx и solx1 с различной параметризацией, несмотря на то, что они эквивалентны.

[~, ~, conds2] = solve(x == solx, x < 7, x > 2, x, 'ReturnConditions', true)
conds2 = 

4π<4k+1C4k+1C<14π

Получите те значения параметров, которые удовлетворяют новому условию для особого значения постоянного C:

conds3 = subs(conds2, C, 5)
conds3 = 

4π<4k5+154k5+15<14π

solve(conds3, params)
ans = 

(2345)