Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

sym

기호 변수, 기호 표현식, 기호 함수, 기호 행렬 만들기

설명

예제

x = sym('x')는 기호 스칼라 변수 x를 만듭니다.

예제

A = sym('a',[n1 ... nM])은 자동 생성된 요소로 채워진 n1×...×nM 기호 배열을 만듭니다. 예를 들어, A = sym('a',[1 3])은 행 벡터 A = [a1 a2 a3]을 만듭니다. 생성된 요소 a1, a2a3은 MATLAB® 작업 공간에 표시되지 않습니다. 다차원 배열인 경우 요소는 접두사 a 뒤에 _ 구분기호를 사용해서 요소의 인덱스가 추가됩니다(예: a1_3_2).

예제

A = sym('a',n)은 자동 생성된 요소로 채워진 n×n 기호 행렬을 만듭니다.

예제

sym(___,set)는 기호 변수 또는 기호 배열을 만들고 해당 변수나 배열의 모든 요소가 set에 속한다는 가정을 설정합니다. set'real', 'positive', 'integer' 또는 'rational'일 수 있습니다. string형 배열 또는 문자형 벡터로 구성된 셀형 배열을 지정하여 여러 가정을 결합할 수도 있습니다. 예를 들어, set["positive" "rational"] 또는 {'positive','rational'}로 지정하여 양의 유리수 값을 가정합니다.

sym(___,'clear')는 기호 변수 또는 기호 배열에 설정된 가정을 지웁니다. 위에 열거된 구문에서 입력 인수 뒤에 'clear'를 지정하면 됩니다. 단, 'clear'set는 예외적으로 함께 사용할 수 없습니다. 하나의 sym 함수 호출에서 가정을 설정하고 가정을 지울 수 없습니다.

예제

sym(num)num으로 지정된 숫자 또는 숫자형 행렬을 기호 숫자 또는 기호 행렬로 변환합니다.

예제

sym(num,flag)flag로 지정된 기법을 사용하여 부동소수점 숫자를 기호 숫자로 변환합니다.

예제

sym(strnum)strnum으로 지정된 문자형 벡터 또는 string형을 근사 없이 정확한 기호 숫자로 변환합니다.

예제

symexpr = sym(h)는 함수 핸들 h와 연결된 익명 MATLAB 함수로부터 기호 표현식 또는 기호 행렬 symexpr을 만듭니다.

예제

symexpr = sym(M)symmatrix 유형의 기호 행렬 변수 Msym 유형의 기호 스칼라 변수 symexpr로 구성된 배열로 변환합니다.

예제

모두 축소

기호 변수 xy를 만듭니다.

x = sym('x')
x = x
y = sym('y')
y = y

자동 생성된 요소 a1, ..., a4로 구성된 1×4 기호 벡터 a를 만듭니다.

a = sym('a',[1 4])
 
a =
 
[a1, a2, a3, a4]
 

형식 문자형 벡터를 첫 번째 인수로 사용하여 요소 이름의 형식을 지정할 수 있습니다. sym은 형식 문자형 벡터의 %d에 요소의 인덱스를 대입하여 요소 이름을 생성합니다.

b = sym('x_%d',[1 4])
 
b =
 
[x_1, x_2, x_3, x_4]
 

이러한 구문은 MATLAB® 작업 공간에 기호 변수 a1, ..., a4, x_1, ..., x_4를 만들지 않습니다. 표준 인덱싱 방법을 사용하여 ab의 요소에 액세스합니다.

a(1)
b(2:3)
 
ans =
 
a1
 
 
ans =
 
[x_2, x_3]
 

자동 생성된 요소로 구성된 3×4 기호 행렬을 만듭니다. sym 함수는 Ai_j 형식의 행렬 요소를 생성합니다. 여기서 sym은 요소 A1_1, ..., A3_4를 생성합니다.

A = sym('A',[3 4])
 
A =
 
[A1_1, A1_2, A1_3, A1_4]
[A2_1, A2_2, A2_3, A2_4]
[A3_1, A3_2, A3_3, A3_4]
 

형식 문자형 벡터를 첫 번째 인수로 사용하여 요소 이름이 x_1_1, ..., x_4_4인 4×4 행렬을 만듭니다. sym은 형식 문자형 벡터의 %d에 요소의 인덱스를 대입하여 요소 이름을 생성합니다.

B = sym('x_%d_%d',4)
 
B =
 
[x_1_1, x_1_2, x_1_3, x_1_4]
[x_2_1, x_2_2, x_2_3, x_2_4]
[x_3_1, x_3_2, x_3_3, x_3_4]
[x_4_1, x_4_2, x_4_3, x_4_4]
 

이러한 구문은 MATLAB® 작업 공간에 기호 변수 A1_1, ..., A3_4, x_1_1, ..., x_4_4를 만들지 않습니다. 행렬 요소에 액세스하려면 괄호를 사용하십시오.

A(2,3)
B(4,2)
 
ans =
 
A2_3
 
 
ans =
 
x_4_2
 

자동 생성된 요소 a1,1,1,,a2,2,2로 구성된 2×2×2 기호 배열을 만듭니다.

A = sym('a',[2 2 2])
A(:,:,1) = 

(a1,1,1a1,2,1a2,1,1a2,2,1)

A(:,:,2) = 

(a1,1,2a1,2,2a2,1,2a2,2,2)

숫자형 값을 기호 숫자 또는 기호 표현식으로 변환합니다. 더 정확한 결과를 얻으려면 전체 표현식 대신 하위 표현식에 sym을 사용하십시오. 전체 표현식에 sym을 사용하면 MATLAB®은 제일 먼저 표현식을 부동소수점 숫자로 변환하기 때문에 정확도가 떨어집니다. sym이 이렇게 손실된 정확도를 항상 복구할 수 있는 것은 아닙니다.

inaccurate1 = sym(1/1234567)
inaccurate1 = 

76502392869235059444732965739290427392

accurate1 = 1/sym(1234567)
accurate1 = 

11234567

inaccurate2 = sym(sqrt(1234567))
inaccurate2 = 

48867165620185894398046511104

accurate2 = sqrt(sym(1234567))
accurate2 = 1234567
inaccurate3 = sym(exp(pi))
inaccurate3 = 

6513525919879993281474976710656

accurate3 = exp(sym(pi))
accurate3 = eπ

15자리 이상의 기호 숫자를 만들 때는 따옴표를 사용하여 숫자를 정확하게 나타냅니다.

inaccurateNum = sym(11111111111111111111)
inaccurateNum = 11111111111111110656
accurateNum = sym('11111111111111111111')
accurateNum = 11111111111111111111

따옴표를 사용하여 기호 복소수를 만들 때 숫자의 허수부를 1i, 2i 등으로 지정합니다.

sym('1234567 + 1i')
ans = 1234567+i

MATLAB® 핸들과 연결된 익명 함수를 기호 표현식과 기호 행렬로 변환합니다.

h_expr = @(x)(sin(x) + cos(x));
sym_expr = sym(h_expr)
sym_expr = cos(x)+sin(x)
h_matrix = @(x)(x*pascal(3));
sym_matrix = sym(h_matrix)
sym_matrix = 

(xxxx2x3xx3x6x)

기호 변수 x, y, z, t를 만들면서 x는 실수, y는 양수, z는 유리수, t는 양의 정수라고 가정합니다.

x = sym('x','real');
y = sym('y','positive');
z = sym('z','rational');
t = sym('t',{'positive','integer'});

assumptions를 사용하여 x, y, zt에 대한 가정을 확인합니다.

assumptions
ans = (tZxRzQ1t0<y)

추후 계산을 위해 assume을 사용하여 가정을 지웁니다.

assume([x y z t],'clear')
assumptions
 
ans =
 
Empty sym: 1-by-0
 

기호 행렬을 만들고 해당 행렬의 각 요소에 대해 가정을 설정합니다.

A = sym('A%d%d',[2 2],'positive')
A = 

(A11A12A21A22)

A의 첫 번째 요소에 대해 방정식을 풉니다. MATLAB®은 이 요소를 양수로 가정합니다.

solve(A(1,1)^2-1, A(1,1))
ans = 1

assumptions를 사용하여 A의 요소에 설정된 가정을 확인합니다.

assumptions(A)
ans = (0<A110<A120<A210<A22)

assume을 사용하여 기호 행렬 요소에 대해 이전에 설정된 모든 가정을 지웁니다.

assume(A,'clear');
assumptions(A)
 
ans =
 
Empty sym: 1-by-0
 

동일한 방정식을 다시 풉니다.

solve(A(1,1)^2-1, A(1,1))
ans = 

(-11)

pi를 기호 값으로 변환합니다.

선택적 두 번째 인수('r', 'f', 'd' 또는 'e')를 지정하여 변환 기법을 선택합니다. 디폴트 값은 'r'입니다. 변환 기법에 대한 자세한 내용은 입력 인수 섹션을 참조하십시오.

r = sym(pi)
r = π
f = sym(pi,'f')
f = 

884279719003555281474976710656

d = sym(pi,'d')
d = 3.1415926535897931159979634685442
e = sym(pi,'e')
e = 

π-198eps359

3×3 및 3×1 기호 행렬 변수를 만듭니다.

syms A [3 3] matrix
syms X [3 1] matrix

XTAX의 헤세 행렬을 구합니다.

f = X.'*A*X;
M = diff(f,X,X.')
M = AT+A

결과를 기호 행렬 변수에서 기호 스칼라 변수로 구성된 행렬로 변환합니다.

S = sym(M)
S = 

(2A1,1A1,2+A2,1A1,3+A3,1A1,2+A2,12A2,2A2,3+A3,2A1,3+A3,1A2,3+A3,22A3,3)

또는 symmatrix2sym을 사용하여 기호 행렬 변수를 기호 스칼라 변수로 구성된 배열로 변환할 수 있습니다.

S = symmatrix2sym(M)
S = 

(2A1,1A1,2+A2,1A1,3+A3,1A1,2+A2,12A2,2A2,3+A3,2A1,3+A3,1A2,3+A3,22A3,3)

입력 인수

모두 축소

변수 이름으로, 문자형 벡터 또는 string형으로 지정됩니다. 인수 x는 유효한 변수 이름이어야 합니다. 즉, x는 문자로 시작하고 영숫자와 밑줄만 포함해야 합니다. 변수 이름이 유효한지 확인하려면 isvarname을 사용하십시오.

예: 'x', "y123", 'z_1'

자동 생성된 행렬 요소의 접두사로, 문자형 벡터 또는 string형으로 지정됩니다. 인수 a는 유효한 변수 이름이어야 합니다. 즉, a는 문자로 시작하고 영숫자와 밑줄만 포함해야 합니다. 변수 이름이 유효한지 확인하려면 isvarname을 사용하십시오.

인수 a, a의 벡터, a의 행렬 또는 [n1 ... nM] 인수 형태의 배열 차원을 지정하면 a'a_%d_%d'와 같은 형식 문자형 벡터를 포함할 수 있습니다. 예제는 기호 벡터 만들기 항목과 기호 행렬 만들기 항목을 참조하십시오.

예: 'a', "b", 'a_bc'

벡터, 행렬 또는 배열 차원으로, 정수 벡터로 지정됩니다. 하나의 정수만 지정하여 정사각 행렬을 간단히 만들 수도 있습니다. 예를 들어, A = sym('A',3)은 3×3 정사각 행렬을 만듭니다.

예: [2 3]

기호 변수 또는 기호 행렬에 설정된 가정으로, 문자형 벡터, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 사용 가능한 가정은 'integer', 'rational', 'real' 또는 'positive'입니다.

string형 배열 또는 문자형 벡터로 구성된 셀형 배열을 지정하여 여러 가정을 결합할 수 있습니다. 예를 들어, set["positive" "rational"] 또는 {'positive','rational'}로 지정하여 양의 유리수 값을 가정합니다.

예: 'integer'

기호 숫자 또는 기호 행렬로 변환할 숫자형 값으로, 숫자, 기호 상수 또는 숫자로 구성된 행렬로 지정됩니다.

예: pi

변환 기법으로, 아래의 테이블에 나열된 문자 중 하나로 지정됩니다.

'r'sym유리수(rational) 모드를 사용하면 적당한 크기의 정수 pq에 대해 p/q, p*pi/q, sqrt(p), 2^q, 10^q 형식의 표현식을 계산하여 얻은 부동소수점 숫자를 이에 대응하는 기호 형식으로 변환합니다. 예를 들어, sym(1/10,'r')1/10을 반환합니다. 이 모드는 원래 계산에 포함된 반올림 오차를 효과적으로 보정할 수 있지만 부동소수점 값을 정확하게 나타낼 수는 없습니다. sym에서 간단한 유리수 근삿값을 찾을 수 없는 경우 'f' 플래그와 동일한 기법을 사용합니다.
'd'sym십진수(decimal) 모드를 사용하면 digits에 현재 설정된 자릿수를 따르게 됩니다. 16자리 미만으로 변환하면 원래 값이 갖는 정확도를 일부 잃게 되며, 16자리를 초과해 변환하면 결과 값의 수치적 정확성이 보장되지 않을 수 있습니다. 예를 들어, sym(4/3,'d')는 10자리의 정확도로 설정하면 1.333333333을 반환하고, 20자리의 정확도로 설정하면 1.3333333333333332593을 반환합니다. 후자는 3으로 끝나지는 않지만 4/3에 가장 가까운 정확한 십진수 부동소수점 표현입니다.
'e'sym추정값 오차(estimate error) 모드를 사용하면 유리수 모드에서 얻은 결과를 변수 eps에 대한 항으로 보완합니다. 이 항은 이론적인 유리식과 실제 부동소수점 값의 차이를 추정합니다. 예를 들어, sym(3*pi/4,'e')(3*pi)/4 - (103*eps)/249를 반환합니다.
'f'sym부동소수점-유리수(floating-point to rational) 모드를 사용하면 모든 값에 대해 N*2^e 또는 -N*2^e 형식의 기호 형식을 반환합니다. 여기서, N >= 0은 음이 아닌 정수이고 e는 정수입니다. 반환된 기호 숫자는 부동소수점 값과 동일한 정확한 유리수입니다. 예를 들어, sym(1/10,'f')3602879701896397/36028797018963968을 반환합니다.

기호 숫자를 나타내는 문자로, 문자형 벡터 또는 string형으로 지정됩니다.

예: '1/10'

익명 함수로, MATLAB 함수 핸들로 지정됩니다. 자세한 내용은 익명 함수 항목을 참조하십시오.

예: h = @(x)sin(x)

변환할 기호 행렬 변수로, 기호 행렬 변수로 지정됩니다.

또는 symmatrix2sym을 사용하여 기호 행렬 변수를 기호 스칼라 변수로 구성된 배열로 변환할 수 있습니다.

예: syms A 2 matrix; M = A^2 + eye(2)

데이터형: symmatrix

출력 인수

모두 축소

변수로, 기호 스칼라 변수로 반환됩니다.

자동 생성된 요소로 구성된 벡터 또는 행렬로, 기호 스칼라 변수로 구성된 기호 벡터나 기호 행렬로 반환됩니다. 이러한 벡터나 행렬의 요소는 MATLAB 작업 공간에 표시되지 않습니다.

익명 MATLAB 함수 또는 기호 행렬 변수에서 변환된 표현식 또는 행렬로, 기호 표현식이나 기호 스칼라 변수로 구성된 행렬로 반환됩니다.

데이터형: sym

  • pi = sym(pi)delta = sym('1/10')과 같은 명령문은 pi1/10의 값에 내재된 부동소수점 근사를 수행하지 않는 기호 숫자를 만듭니다. 이 방법으로 생성된 pipi라는 작업 공간 변수에 기호 숫자를 저장합니다. 이 변수는 동일한 이름의 내장 숫자형 함수를 일시적으로 대체합니다. pi의 부동소수점 표현을 복원하려면 clear pi를 사용하십시오.

  • sym은 문자형 벡터 입력값에 있는 i를 항상 식별자로 처리합니다. 허수 i를 입력하려면 대신 1i를 사용하십시오.

  • clear x는 실수, 양수 같은 가정을 설정한 기호 객체와 assume, sym, syms로 설정한 가정을 지우지 않습니다. 가정을 제거하려면 다음 옵션 중 하나를 사용하십시오.

    • assume(x,'clear')x에 영향을 주는 모든 가정을 제거합니다.

    • clear all은 MATLAB 작업 공간에서 모든 객체를 지우고 기호 엔진을 초기화합니다.

    • assumeassumeAlso를 사용하면 변수에 대한 가정을 더 유연하게 설정할 수 있습니다.

  • 숫자형 벡터 또는 숫자형 행렬에서 하나 이상의 요소를 기호 숫자로 대체하면 MATLAB은 해당 숫자를 배정밀도 숫자로 변환합니다.

    A = eye(3);
    A(1,1) = sym(pi)
    A =
        3.1416         0         0
             0    1.0000         0
             0         0    1.0000

    숫자형 벡터 또는 숫자형 행렬의 요소를 기호 변수, 기호 표현식 또는 기호 함수로 대체할 수 없습니다. 이러한 요소는 배정밀도 숫자로 변환할 수 없기 때문입니다. 예를 들어, A(1,1) = sym('a')는 오류를 발생시킵니다.

  • A = sym('a',[n1 ... nM]) 구문을 사용하면 sym 함수는 MATLAB 작업 공간에 기호 배열 A만 할당합니다. 자동으로 생성된 A의 요소도 할당하려면 syms 함수를 사용하십시오. 예를 들어, syms a [1 3]은 행 벡터 a = [a1 a2 a3]과 기호 변수 a1, a2, a3을 MATLAB 작업 공간에 만듭니다.

대체 기능

기호 변수를 만드는 다른 방법

하나의 함수 호출에서 여러 개의 기호 변수를 만들려면 syms를 사용하십시오. syms를 사용하면 특정 변수를 지정해서 가정을 지울 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장