Решите параметрические уравнения в режиме 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(sym (пи)/2 + 2*sym (пи) *k)/C

params = kk
conds = C0kZC ~ = 0&in (k, 'целое число')

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

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

sin(π2+2πk)=1sin (sym (пи)/2 + 2*sym (пи) *k) == 1

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

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

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

π2Csym (пи) / (2*C)

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

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

105π2C(105*sym (пи)) / (2*C)

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

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

π+4πk2C(sym (пи) + 4*sym (пи) *k) / (2*C)

params1 = kk
conds1 = 0<C4C<π+4πkπ+4πk<14CC<0π+4πk<4C14C<π+4πk(0 <C&4*C <sym (пи) + 4*sym (пи) *k&sym (пи) + 4*sym (пи) *k <14*C) | (C <0&sym (пи) + 4*sym (пи) *k <4*C&14*C <sym (пи) + 4*sym (пи) *k)

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

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

4π<4k+1C4k+1C<14π4/sym (пи) <(4*k + 1)/C& (4*k + 1)/C <14/sym (пи)

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

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

4π<4k5+154k5+15<14π4/sym (пи) <(4*k)/5 + sym (1/5) & (4*k)/5 + sym (1/5) <14/sym (пи)

solve(conds3, params)
ans = 

(2345)[sym (2); sym (3); sym (4); sym (5)]

Для просмотра документации необходимо авторизоваться на сайте