Main Content

기호 숫자, 기호 변수 및 기호 표현식 만들기

이 예제에서는 기호 숫자, 기호 변수 및 기호 표현식을 만드는 방법을 보여줍니다. 기호 수학을 사용하는 방법에 대해서는 기호 계산 수행하기 항목을 참조하십시오.

정확한 표현으로 기호 숫자 만들기

sym을 사용하여 기호 숫자를 만들 수 있습니다. 기호 숫자는 부동소수점 숫자와 달리 정확한 표현입니다.

sym을 사용하여 기호 숫자를 만들고 이와 동일한 부동소수점 숫자와 비교합니다.

a1Sym = sym(1/3)
a1Sym = 

13

a1 = 1/3
a1 = 0.3333
a2Sym = sym(pi)
a2Sym = π
a2 = pi
a2 = 3.1416

기호 숫자는 정확한 유리수 형식으로 표현되는 반면, 부동소수점 숫자는 소수로 표현되는 근삿값입니다.

기호 숫자에 대한 계산은 정확합니다. 기호적으로, 그리고 수치적으로 sin(pi)를 구해 이 정확함을 확인해 보겠습니다. 숫자를 사용할 때의 결과는 근삿값이지만 기호를 사용할 때의 결과는 정확한 값입니다.

bSym = sin(sym(pi))
bSym = 0
b = sin(pi)
b = 1.2246e-16

숫자형 입력값에 대해 sym을 사용하면 숫자 표현식은 먼저 정확도가 떨어질 수 있는 MATLAB® 디폴트 배정밀도 숫자로 계산됩니다. 그런 다음, sym은 해당 배정밀도 숫자에 적용됩니다. 배정밀도로 계산하지 않고 정확한 숫자를 표현하려면 따옴표가 있는 문자형 벡터를 사용하십시오. 예를 들어, 매우 큰 정수를 정확히 표현하기 위해 기호 숫자를 만듭니다.

inaccurateNum = sym(123456789012345678)
inaccurateNum = 123456789012345680
accurateNum = sym('123456789012345678')
accurateNum = 123456789012345678

또한 숫자의 허수부를 1i, 2i 등으로 지정하여 기호 복소수를 만들 수 있습니다.

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

숫자의 기호 표현에 대한 자세한 내용은 수치 형식에서 기호 형식으로 변환 항목을 참조하십시오.

가변 정밀도로 기호 숫자 만들기

vpa를 사용하여 가변 정밀도 부동소수점 연산방식으로 기호 숫자를 만들 수 있습니다. 기본적으로 vpa는 32자리의 유효 자릿수로 값을 계산합니다.

piVpa = vpa(pi)
piVpa = 3.1415926535897932384626433832795

log(2)와 같은 숫자 표현식에 대해 vpa를 사용하면 숫자 표현식은 먼저 유효 자릿수가 32자리 미만인 MATLAB 디폴트 배정밀도 숫자로 계산됩니다. 그런 다음, vpa는 정확도가 떨어질 수 있는 해당 배정밀도 숫자에 적용됩니다. 보다 정확한 결과값을 얻으려면 sym을 사용하여 표현식의 배정밀도 숫자를 기호 숫자로 변환한 다음 vpa를 사용하여 가변 정밀도로 결과값을 계산합니다. 예를 들어, 17자리 정밀도와 20자리 정밀도로 log(2)를 구합니다.

vpaOnDouble = vpa(log(2))
vpaOnDouble = 0.69314718055994528622676398299518
vpaOnSym_17 = vpa(log(sym(2)),17)
vpaOnSym_17 = 0.69314718055994531
vpaOnSym_20 = vpa(log(sym(2)),20)
vpaOnSym_20 = 0.69314718055994530942

큰 숫자를 변환할 때는 따옴표를 사용하여 정확히 표현합니다.

inaccurateNum = vpa(123456789012345678)
inaccurateNum = 123456789012345680.0
accurateNum = vpa('123456789012345678')
accurateNum = 123456789012345678.0

기호 변수 만들기

syms 또는 sym을 사용하여 기호 변수를 만들 수 있습니다. 이러한 함수의 일반적인 용도는 다음과 같습니다.

  • sym – 번호가 매겨진 기호 변수, MATLAB 함수에서 사용되는 기호 변수 또는 MATLAB 작업 공간에서의 이름과 값이 다른 기호 숫자를 만듭니다.

  • syms – 대화형 방식의 기호 연산 워크플로를 위한, 즉 MATLAB 명령줄 또는 MATLAB 라이브 스크립트에서의 기호 변수 생성을 위한 깨끗한 기호 변수를 만듭니다. 깨끗한 기호 변수에는 어떠한 가정도 없습니다.

syms 명령은 sym 구문의 축약적 표현법이지만 이 두 함수는 가정을 다르게 처리합니다. syms는 변수를 만들 때 가정을 지웁니다. 이와 달리, sym을 사용하면 변수를 다시 만들어도 변수의 가정이 지워지지 않습니다. 이 두 함수의 차이점에 대한 자세한 내용은 syms 또는 sym 함수 선택하기 항목을 참조하십시오.

symssym을 사용하여 기호 변수 x 및 y를 각각 만듭니다.

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

첫 번째 명령은 변수 x에 값 x가 할당된 기호 변수 x를 MATLAB 작업 공간에 만듭니다. 두 번째 명령은 값이 y인 기호 변수 y를 만듭니다.

syms를 사용하면 하나의 명령으로 여러 변수를 만들 수 있습니다. 변수 a, bc를 만듭니다.

syms a b c

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

번호가 매겨진 기호 변수로 구성된 MATLAB 배열을 만드는 경우 sym 구문 또는 syms 구문을 사용할 수 있습니다.

번호가 매겨진 기호 변수가 많은 배열을 만들려면 sym을 사용하십시오. 작업 공간을 지웁니다. 기호 변수 a1,,a10을 포함하는 행 벡터를 만들고 이를 MATLAB 변수 A에 할당합니다. MATLAB 작업 공간에 있는 변수를 표시합니다.

clear
A = sym('a',[1 10])
A = (a1a2a3a4a5a6a7a8a9a10)
whos
  Name      Size            Bytes  Class    Attributes

  A         1x10                8  sym                

A는 10개의 자동 생성된 요소로 구성된 1×10 배열입니다. A의 이러한 자동 생성된 요소는 MATLAB 작업 공간에 표시되지 않습니다.

syms를 사용하면 대응하는 변수 이름을 갖는 깨끗한 기호 변수를 MATLAB 작업 공간에 많이 만들 수 있습니다. 작업 공간을 지웁니다. 깨끗한 기호 변수 a1, ..., a10을 만듭니다. MATLAB 작업 공간에 있는 변수를 표시합니다.

clear
syms a [1 10]
whos
  Name      Size            Bytes  Class    Attributes

  a         1x10                8  sym                
  a1        1x1                 8  sym                
  a10       1x1                 8  sym                
  a2        1x1                 8  sym                
  a3        1x1                 8  sym                
  a4        1x1                 8  sym                
  a5        1x1                 8  sym                
  a6        1x1                 8  sym                
  a7        1x1                 8  sym                
  a8        1x1                 8  sym                
  a9        1x1                 8  sym                

MATLAB 작업 공간에는 기호 변수인 MATLAB 변수 10개가 작업 공간에 포함되어 있습니다.

syms 명령은 sym 구문에 대한 편리한 축약적 표현법이며 통상적으로 대화형 방식의 기호 워크플로에 사용할 깨끗한 기호 변수를 만드는 데 사용됩니다. sym 구문을 사용하면 다음을 만들 수 있습니다.

  • MATLAB 함수의 기호 변수

  • 번호가 매겨진 다수의 기호 변수

  • 값이 MATLAB 작업 공간에서의 이름과 같지 않은 기호 변수

  • sym(3)/11 등의 기호 숫자

  • 같은 이름을 가진 이전에 사용된 기호 변수로부터 가정을 상속 받은 기호 변수

기호 표현식 만들기

황금비 φ= 1+ 52를 나타내기 위해 기호 변수를 사용한다고 가정해 보겠습니다.

sym을 사용하여 황금비를 만듭니다.

phi = (1 + sqrt(sym(5)))/2;

이제 phi에 대해 다양한 수학 연산을 수행할 수 있습니다. 예를 들면 다음과 같습니다.

f = phi^2 - phi - 1
f = 

52+122-52-32

다음으로, 2차 함수 f=ax2+bx+c를 검토한다고 가정해 보겠습니다. 먼저, 기호 변수 a, b, cx를 만듭니다.

syms a b c x

그런 다음, 산술식 ax2+bx+c를 나타내는 기호 표현식 f를 만듭니다.

f = a*x^2 + b*x + c
f = ax2+bx+c

solve를 사용하여 x에 대한 2차 방정식 f=0을 풉니다.

x_0 = solve(f == 0,x)
x_0 = 

(-b+b2-4ac2a-b-b2-4ac2a)

수학 함수를 산술식에 적용할 수도 있습니다. 예를 들어, 제1종 베셀 함수 J0을 산술식 f에 적용하고 x에 대한 해당 도함수를 구합니다.

J_0 = besselj(0,f)
J_0 = Jbesselj0(ax2+bx+c)
DJ_0 = diff(J_0,x)
DJ_0 = -Jbesselj1(ax2+bx+c)b+2ax

기호 표현식에 기호 숫자를 만들려면 sym을 사용합니다. 상수인 기호 표현식을 만들려는 경우에는 syms를 사용하지 마십시오. 예를 들어, 값이 5인 표현식을 만들려면 f = sym(5)를 입력하면 됩니다. 명령 f = 5f를 기호 표현식으로 정의하지 않습니다.

또한 텍스트 파일에서 표현식을 읽어 들이거나 숫자를 정확히 지정하는 경우 str2sym을 사용하여 문자열에서 기호 표현식을 만들 수 있습니다.

기호 객체의 이름 재사용하기

변수를 어떤 기호 표현식과 같다고 설정한 후 syms 명령을 해당 변수에 적용하면 MATLAB은 이전에 정의된 표현식을 이 변수에서 제거합니다.

예를 들어, 기호 표현식 f를 만듭니다.

syms a b
f = a + b
f = a+b

f를 다시 만들면 MATLAB은 표현식 f에서 값 a+b를 제거합니다.

syms f
f
f = f

syms 명령을 사용하여 이전에 MATLAB 세션에서 할당한 정의를 갖는 변수를 지울 수 있습니다. syms는 변수에 대한 가정을 지웁니다. 이러한 가정(실수, 정수, 유리수, 양수일 수 있음)은 기호 객체와는 별도로 저장됩니다. 이와 달리, sym을 사용하면 변수를 다시 만들어도 변수의 가정이 지워지지 않습니다. 자세한 내용은 Use Assumptions on Symbolic Variables 항목을 참조하십시오.

참고 항목

| |

관련 항목