Main Content

syms 또는 sym 함수 선택하기

Symbolic Math Toolbox™에서 syms 또는 sym 함수를 사용하여 기호 객체를 만들 수 있습니다. 이 두 함수는 개념적으로 서로 다릅니다.

  • syms 함수는 동일한 이름의 MATLAB® 변수에 자동으로 할당되는 기호 객체를 생성합니다.

  • sym 함수는 동일한 이름 또는 다른 이름의 MATLAB 변수에 할당할 수 있는 기호 객체를 참조합니다.

다음 예제에서는 syms 함수와 sym 함수의 차이점에 대해 설명합니다. 각 함수의 활용 사례에 대한 더 많은 예제는 syms 항목 또는 sym 항목을 참조하십시오.

기호 변수를 MATLAB 변수에 할당하기

syms 함수는 변수를 동적으로 생성합니다. 예를 들어, 명령 syms x는 기호 변수 x를 생성하여 동일한 이름의 MATLAB 변수에 자동으로 할당합니다.

syms x
x
x = x

그런 다음 MATLAB 작업 공간에서 다항식 제곱근 구하기와 같은 기호 워크플로에 변수 x를 사용할 수 있습니다.

f = x^2 + x - 6
f = x2+x-6
x0 = solve(f)
x0 = 

(-32)

sym 함수는 기호 변수를 참조하며, 사용자는 이를 다른 이름으로 MATLAB 변수에 할당할 수 있습니다. 예를 들어, 명령 f1 = sym('x')는 기호 변수 x를 참조하며 이를 MATLAB 변수 f1에 할당합니다.

clear
f1 = sym('x')
f1 = x

그런 다음 MATLAB 작업 공간에서 사인 함수의 0을 구하는 것과 같은 기호 워크플로에 변수 f1을 사용할 수 있습니다.

f2 = sin(f1)
f2 = sin(x)
[solx,parameters,conditions] = solve(f2,f1,'ReturnConditions',true)
solx = πk
parameters = k
conditions = kZ

기호 숫자 만들기

syms 함수를 사용하여 기호 변수 x만들고 MATLAB 변수 x에 자동으로 할당합니다. MATLAB 변수 x에 숫자를 할당하면, 숫자가 배정밀도로 표현되며 이 할당이 기호 변수에 대한 이전 할당을 덮어씁니다. x의 클래스는 double이 됩니다.

syms x
x = 1/33
x = 0.0303
class(x)
ans = 
'double'

sym 함수를 사용하여 부동소수점 근사 없이 정확한 기호 숫자를 참조합니다. 그러면 이 숫자를 MATLAB 변수 x에 할당할 수 있습니다. x의 클래스는 sym입니다.

x = sym('1/33')
x = 

133

class(x)
ans = 
'sym'

가정이 있는 기호 변수 만들기

가정이 있는 기호 변수를 만들면 MATLAB은 기호 변수와 가정을 따로 저장합니다.

syms 함수를 사용하여 동일한 이름의 MATLAB 변수에 할당되는 기호 변수를 만듭니다. 그러면 가정이 없는 깨끗한 기호 변수를 얻게 됩니다. syms를 사용하여 변수를 선언하면 기존 가정이 지워집니다.

syms x positive
syms x
assumptions
 
ans =
 
Empty sym: 1-by-0
 

sym을 사용하여 기존의 기호 변수를 참조합니다. 이 기호 변수가 이전 MATLAB 세션에서 사용되었다면 sym은 그 기호 변수와 현재 가정을 참조합니다. 이전에 사용되지 않았다면 sym은 가정이 없는 기호 변수를 만듭니다.

syms x positive
x = sym('x');
assumptions
ans = 0<x

여러 기호 변수 만들기

여러 기호 변수를 동시에 만들려면 syms 함수를 사용하는 것이 더 편리합니다. 한 줄의 코드에 여러 개의 변수를 만들 수 있습니다.

syms a b c

sym을 사용할 때는, MATLAB 변수를 하나씩 선언하고 각 변수를 해당 기호 변수로 참조해야 합니다.

a = sym('a');
b = sym('b');
c = sym('c');

기호 변수로 구성된 배열 만들기

기호 변수가 요소로 포함된 기호 배열을 선언하려면 syms 또는 sym을 사용합니다.

명령 syms a [1 3]은 1×3 기호 배열 a와 기호 변수 a1, a2, a3을 작업 공간에 만듭니다. 기호 변수 a1, a2, a3은 기호 배열 a에 자동으로 할당됩니다.

clear
syms a [1 3]
a
a = (a1a2a3)
whos
  Name      Size            Bytes  Class    Attributes

  a         1x3                 8  sym                
  a1        1x1                 8  sym                
  a2        1x1                 8  sym                
  a3        1x1                 8  sym                

명령 a = sym('a',[1 3])은 기호 변수 a1, a2, a3참조하며 이들 변수는 작업 공간의 기호 배열 a에 할당됩니다. 요소 a1, a2, a3은 작업 공간에 생성되지 않습니다.

clear
a = sym('a',[1 3])
a = (a1a2a3)
whos
  Name      Size            Bytes  Class    Attributes

  a         1x3                 8  sym                

병렬 for 루프에 기호 변수 만들기

병렬 계산을 위해 각 워커에 기호 변수를 만들려면 sym을 사용합니다. 예를 들어, parfor 루프에 기호 변수 k를 만들어 symsum을 사용하여 급수의 합을 수행할 수 있습니다.

S = zeros(1,10);
parfor i = 1:10
    k = sym('k');
    S(i) = symsum(1/k^i,k,1,Inf);
end
Starting parallel pool (parpool) using the 'Processes' profile ...
Connected to the parallel pool (number of workers: 6).

syms는 작업 공간의 전역 상태를 수정하기 때문에 parfor 루프에 기호 변수를 만드는 데 사용할 수 없습니다.

함수에서 기호 변수 만들기

함수 내에서 기호 변수를 선언하려면 sym을 사용합니다. 예를 들어, 부모 함수 작업 공간에서 MATLAB 변수 x를 명시적으로 정의하고 x를 동일한 이름의 기호 변수로 참조할 수 있습니다.

function primaryFx
    x = sym('x')
    function nestedFx
        ...
    end
end

함수는 작업 공간을 정적으로 만듭니다. 따라서 syms를 사용하여 동적으로 변수를 추가할 수 없습니다.

관련 항목