Main Content

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

subs

설명

예제

snew = subs(s,old,new)는 모든 oldnew로 대체한 s의 복사본을 반환한 다음 s를 계산합니다. 여기서 s는 기호 스칼라 변수가 포함된 표현식이고 old는 대체되어야 하는 스칼라 변수를 지정합니다.

예제

snew = subs(s,new)s의 모든 디폴트 기호 스칼라 변수를 new로 대체한 s의 복사본을 반환한 다음 s를 계산합니다. 디폴트 변수는 symvar(s,1)에 의해 정의됩니다.

예제

snew = subs(s)s의 기호 스칼라 변수를 MATLAB® 작업 공간의 값과 함수 호출을 통해 얻은 값으로 대체한 복사본 s를 반환한 다음 s를 계산합니다. 값이 할당되지 않은 변수는 변수로 남아 있습니다.

예제

sMnew = subs(sM,oldM,newM)은 모든 oldMnewM으로 대체한 sM의 복사본을 반환한 다음 sM을 계산합니다. 여기서 sM은 기호 행렬 변수가 포함된 표현식이고 oldM은 대체되어야 하는 행렬 변수를 지정합니다(R2021b 이상).

예제

sMnew = subs(sM,newM)sM의 모든 디폴트 기호 행렬 변수를 newM으로 대체한 sM의 복사본을 반환한 다음 sM을 계산합니다(R2021b 이상).

예제

모두 축소

아래의 표현식에서는 a4로 바꿉니다.

syms a b
subs(a + b,a,4)
ans = b+4

아래의 표현식에서는 a*b5로 바꿉니다.

subs(a*b^2,a*b,5)
ans = 5b

표현식의 디폴트 기호 스칼라 변수에 a를 대입합니다. 대체할 스칼라 변수 또는 표현식을 지정하지 않으면 subssymvar을 사용하여 디폴트 변수를 구합니다. x + y의 경우 디폴트 변수는 x입니다.

syms x y a
symvar(x + y,1)
ans = x

그러므로 subs는 xa로 바꿉니다.

subs(x + y,a)
ans = a+y

기호 스칼라 변수에 새 값을 할당하더라도 그 변수를 포함하는 표현식이 자동으로 계산되지 않습니다. 대신 subs를 사용하여 표현식을 계산하십시오.

표현식 y = x^2을 정의합니다.

syms x
y = x^2;

x2를 대입합니다. y의 값은 여전히 4가 아닌 x^2입니다.

x = 2;
y
y = x2

subs를 사용하여 x의 새로운 값으로 y를 계산합니다.

subs(y)
ans = 4

이전 값과 새 값을 벡터로 지정하여 다중 대입을 수행합니다.

syms a b
subs(cos(a) + sin(b), [a,b], [sym('alpha'),2])
ans = sin(2)+cos(α)

또는 셀형 배열을 사용하여 다중 대입을 수행합니다.

subs(cos(a) + sin(b), {a,b}, {sym('alpha'),2})
ans = sin(2)+cos(α)

이 표현식의 기호 스칼라 변수 a를 3×3 마방진 행렬로 바꿉니다. 상수 1은 모든 요소가 1인 3×3 행렬로 확장됩니다.

syms a t
subs(exp(a*t) + 1, a, -magic(3))
ans = 

(e-8t+1e-t+1e-6t+1e-3t+1e-5t+1e-7t+1e-4t+1e-9t+1e-2t+1)

벡터, 행렬 또는 배열의 요소에 비 스칼라 값을 대입할 수도 있습니다. 예를 들어, 다음과 같은 2×2 행렬을 만듭니다.

A = sym('A',[2,2])
A = 

(A1,1A1,2A2,1A2,2)

B = sym('B',[2,2])
B = 

(B1,1B1,2B2,1B2,2)

행렬 A의 첫 번째 요소를 행렬 B로 바꿉니다. 이렇게 대입하려고 하면 subs는 2×2 행렬 A를 아래와 같은 4×4 행렬로 확장합니다.

A44 = subs(A, A(1,1), B)
A44 = 

(B1,1B1,2A1,2A1,2B2,1B2,2A1,2A1,2A2,1A2,1A2,2A2,2A2,1A2,1A2,2A2,2)

subs는 비 스칼라 또는 행렬에 행렬 크기를 축소하는 스칼라를 대입할 수 없습니다.

필드 값으로 기호 표현식을 사용하여 구조체형 배열을 만듭니다.

syms x y z
S = struct('f1',x*y,'f2',y + z,'f3',y^2)
S = struct with fields:
    f1: x*y
    f2: y + z
    f3: y^2

기호 스칼라 변수 x, yz를 숫자형 값으로 바꿉니다.

Sval = subs(S,[x y z],[0.5 1 1.5])
Sval = struct with fields:
    f1: 1/2
    f2: 5/2
    f3: 1

기호 스칼라 변수 xy를 2×2 행렬로 바꿉니다. 벡터 또는 행렬에 대해 다중 대입을 수행하려면 셀형 배열을 사용하여 이전 값과 새 값을 지정합니다.

syms x y
subs(x*y, {x,y}, {[0 1; -1 0], [1 -1; -2 1]})
ans = 

(0-120)

이때 xy가 스칼라이므로 대입이 요소별로 수행되는 것을 볼 수 있습니다.

[0 1; -1 0].*[1 -1; -2 1]
ans = 2×2

     0    -1
     2     0

첫 번째 방정식의 변수에 대해 두 번째 방정식의 그 변수의 값을 사용하여 첫 번째 방정식에서 스칼라 변수를 제거합니다. 두 번째 방정식에서 isolate를 사용하여 좌변의 변수를 분리하고, 우변을 첫 번째 방정식의 해당 변수에 대입합니다.

먼저 방정식 eqn1eqn2를 선언합니다.

syms x y
eqn1 = sin(x)+y == x^2 + y^2;
eqn2 = y*x == cos(x);

isolate를 사용하여 eqn2에서 y를 분리합니다.

eqn2 = isolate(eqn2,y)
eqn2 = 

y=cos(x)x

eqn1에 대해 eqn2 좌변에 해당하는 요소에 eqn2 우변에 해당하는 요소를 대입하여 eqn1에서 y를 제거합니다.

eqn1 = subs(eqn1,lhs(eqn2),rhs(eqn2))
eqn1 = 

sin(x)+cos(x)x=cos(x)2x2+x2

아래의 기호 함수에서 xa로 바꿉니다.

syms x y a
syms f(x,y)
f(x,y) = x + y;
f = subs(f,x,a)
f(x, y) = a+y

subs는 기호 함수 식에서 값을 바꿉니다. 하지만 함수의 입력 인수를 바꾸지는 않습니다.

formula(f)
ans = a+y
argnames(f)
ans = (xy)

기호 함수의 인수를 명시적으로 바꿉니다.

syms x y
f(x,y) = x + y;
f(a,y) = subs(f,x,a);
f
f(a, y) = a+y

다음 연립방정식의 해를 검증한다고 가정해 보겠습니다.

syms x y
eqs = [x^2 + y^2 == 1, x == y];
S = solve(eqs,[x y]);
S.x
ans = 

(-2222)

S.y
ans = 

(-2222)

해를 원래의 방정식에 대입하여 해를 검증합니다.

isAlways(subs(eqs,S))
ans = 2x2 logical array

   1   1
   1   1

R2021b 이상

두 2×2 행렬의 곱을 정의합니다. 행렬을 symmatrix 데이터형의 기호 행렬 변수로 선언합니다.

syms X Y [2 2] matrix
sM = X*Y
sM = XY

행렬 변수 XY를 2×2 기호 행렬로 바꿉니다. 벡터 또는 행렬에 대해 다중 대입을 수행하려면 셀형 배열을 사용하여 이전 값과 새 값을 지정합니다.

S = subs(sM,{X,Y},{[0 1; -1 0], [1 -1; -2 1]})
S = 

Σ1Σ2where  Σ1=(01-10)  Σ2=(1-1-21)

표현식 Ssym 데이터형으로 변환하여 대입된 행렬 곱셈의 결과를 확인합니다.

Ssym = symmatrix2sym(S)
Ssym = 

(-21-11)

R2021b 이상

기호 숫자로 구성된 행렬 만들기

A = sym([1 4 2; 4,1,2; 2,2,3])
A = 

(142412223)

charpoly 함수를 사용하여 A의 특성 다항식의 계수를 계산합니다.

c = charpoly(A);

그 다음, X를 3×3 기호 행렬 변수로 정의합니다. 계수 c를 사용하여 다항식 p(X)=c1X3+c2X2+c3X+c4I3을 만듭니다. 여기서 X는 3×3 행렬을 나타내는 부정원입니다.

syms X [3 3] matrix
p = c(1)*X^3 + c(2)*X^2 + c(3)*X + c(4)*X^0
p = 21I3-17X-5X2+X3

subs 함수를 사용하여 다항식 p(X)XA를 대입합니다. 케일리-해밀턴 정리에 따라, 계수 cA의 특성 다항식이므로 이 결과는 3×3 0 행렬이 됩니다. symmatrix2sym을 사용하여 대입된 표현식을 기호 숫자로 구성된 행렬로 변환합니다.

Y = subs(p,A)
Y = 

-17Σ1-5Σ12+Σ13+21I3where  Σ1=(142412223)

Z = symmatrix2sym(Y)
Z = 

(000000000)

입력 인수

모두 축소

입력값으로, 기호 스칼라 변수, 기호 표현식, 기호 방정식, 기호 함수, 기호 배열, 기호 행렬 또는 구조체로 지정됩니다.

데이터형: sym | symfun | struct

대체될 스칼라 변수로, 기호 스칼라 변수, 기호 표현식, 기호 배열 또는 셀형 배열로 지정됩니다.

데이터형: sym | cell

대입시킬 새 값으로, 숫자, 기호 숫자, 기호 스칼라 변수, 기호 표현식, 기호 배열, 구조체 또는 셀형 배열로 지정됩니다.

데이터형: sym | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string | struct | cell

R2021b 이상

입력값으로, 기호 행렬 변수로 지정되거나 행렬 변수가 포함된 기호 표현식으로 지정됩니다.

데이터형: symmatrix

R2021b 이상

대체될 행렬 변수로, 기호 행렬 변수, 기호 표현식으로 지정되거나 행렬 변수가 포함된 셀형 배열로 지정됩니다.

데이터형: symmatrix | cell

R2021b 이상

대입시킬 새 값으로, 숫자, 기호 숫자, 기호 행렬 변수, 기호 표현식, 기호 배열 또는 셀형 배열로 지정됩니다. newMoldM과 동일한 차원이거나, sM의 디폴트 기호 행렬 변수와 동일한 차원이어야 합니다.

데이터형: sym | symmatrix | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string | struct | cell

  • subs(s,old,new)s를 수정하지 않습니다. s를 수정하려면 s = subs(s,old,new)를 사용하십시오.

  • oldnew가 모두 같은 크기의 셀형 배열 또는 벡터인 경우 subsold의 각 요소를 그에 대응하는 new 요소로 대체합니다.

  • old가 스칼라이고 new가 벡터 또는 행렬인 경우 subs(s,old,new)는 모든 연산을 요소별로 수행하여 s의 모든 old 요소를 new로 대체합니다. s의 모든 상수 항은 해당 상수에 1로 구성된 벡터 또는 행렬을 곱한 값으로 대체됩니다.

  • s가 일변량 다항식이고 new가 숫자형 행렬인 경우 polyvalm(sym2poly(s),new)를 사용하여 s를 행렬로 계산합니다. 모든 상수 항은 해당 상수에 단위 행렬을 곱한 값으로 대체됩니다.

버전 내역

R2006a 이전에 개발됨