Main Content

기호 표현식에서 변수 대입하기

솔버의 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로 교체해 보겠습니다. 먼저, 기호 변수 ka를 만듭니다. (솔버는 MATLAB® 작업 공간에 변수 k를 만들지 않습니다.)

syms k a

이제 subs 함수를 사용하여 해 벡터 solx, 파라미터 params 및 조건 conds에서 ka로 교체합니다.

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임을 알고 있다고 가정하겠습니다. 해 벡터 solx에서 a2를 대입합니다.

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

또는 params2를 대입합니다. 이렇게 해도 동일한 결과를 반환합니다.

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

subs에서 반환된 결과에 vpa를 사용하여 부동소수점 값을 대입한 결과의 근삿값을 계산합니다.

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