이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

subs

설명

예제

subs(s,old,new)는 모든 oldnew로 대체한 복사본 s를 반환한 다음 s를 계산합니다.

예제

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

예제

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

예제

단일 대입

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

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

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

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

디폴트 대입 변수

표현식의 디폴트 변수에 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 =
x^2

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

subs(y)
ans =
4

다중 대입

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

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

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

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

스칼라에 배열 대입하기

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

syms a t
subs(exp(a*t) + 1, a, -magic(3))
ans =
[ exp(-8*t) + 1,   exp(-t) + 1, exp(-6*t) + 1]
[ exp(-3*t) + 1, exp(-5*t) + 1, exp(-7*t) + 1]
[ exp(-4*t) + 1, exp(-9*t) + 1, exp(-2*t) + 1]

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

A = sym('A', [2,2])
B = sym('B', [2,2])
A =
[ A1_1, A1_2]
[ A2_1, A2_2]
 
B =
[ B1_1, B1_2]
[ B2_1, B2_2]

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

A44 = subs(A, A(1,1), B)
A44 =
[ B1_1, B1_2, A1_2, A1_2]
[ B2_1, B2_2, A1_2, A1_2]
[ A2_1, A2_1, A2_2, A2_2]
[ A2_1, A2_1, A2_2, A2_2]

subs는 비 스칼라에 스칼라를 대입할 수 없습니다.

다중 스칼라에 배열 대입하기

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

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

이때 대입이 요소별로 수행되는 것을 볼 수 있습니다.

[0 1; -1 0].*[1 -1; -2 1]
ans =
     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)^2/x^2 + x^2

함수의 대입

아래의 기호 함수에서 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)
argnames(f)
ans =
a + y
 
ans =
[ x, y]

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

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
S.y
ans =
 -2^(1/2)/2
  2^(1/2)/2
ans =
 -2^(1/2)/2
  2^(1/2)/2

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

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

입력 인수

모두 축소

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

대입받는 요소로, 기호 변수, 기호 표현식 또는 기호 배열로 지정됩니다.

대입시킬 새 요소로, 숫자, 기호 숫자, 기호 변수, 기호 표현식, 기호 배열 또는 구조체로 지정됩니다.

  • 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 이전에 개발됨