Подстановка переменных в символьных выражениях

Решить следующее тригонометрическое уравнение используя ReturnConditions опция решателя для получения полного решения. Решатель возвращает решение, параметры, используемые в решении, и условия по этим параметрам.

syms x
eqn = sin(2*x) + cos(x) == 0;
[solx, params, conds] = solve(eqn, x, 'ReturnConditions', true)
solx =
       pi/2 + pi*k
     2*pi*k - pi/6
 (7*pi)/6 + 2*pi*k
 
params =
k
 
conds =
 in(k, 'integer')
 in(k, 'integer')
 in(k, 'integer')

Замените параметр k с новой символьной переменной a. Во-первых, создайте символьные переменные k и a. (Решатель не создает переменную k в MATLAB® рабочей области.)

syms k a

Теперь используйте subs функция для замены k по a в векторе решения solx, параметры params, и условия conds.

solx = subs(solx, k, a)
params = subs(params, k, a)
conds = subs(conds, k, a)
solx =
       pi/2 + pi*a
     2*pi*a - pi/6
 (7*pi)/6 + 2*pi*a
params =
a
conds =
 in(a, 'integer')
 in(a, 'integer')
 in(a, 'integer')

Предположим, вы знаете, что значение параметра a является 2. Замена a с 2 в векторе решения solx.

subs(solx, a, 2)
ans =
  (5*pi)/2
 (23*pi)/6
 (31*pi)/6

В качестве альтернативы замените params с 2. Этот подход возвращает тот же результат.

subs(solx, params, 2)
ans =
  (5*pi)/2
 (23*pi)/6
 (31*pi)/6

Подстановка параметров a с числом с плавающей запятой. Тулбокс преобразует числа в значения с плавающей точкой, но сохраняет нетронутыми символические выражения, такие как sym(pi), exp(sym(1))и так далее.

subs(solx, params, vpa(2))
ans =
                               2.5*pi
 3.8333333333333333333333333333333*pi
 5.1666666666666666666666666666667*pi

Аппроксимируйте результат замещения значениями с плавающей точкой при помощи vpa на результат, возвращенный subs.

vpa(subs(solx, params, 2))
ans =
 7.8539816339744830961566084581988
 12.042771838760874080773466302571
 16.231562043547265065390324146944