Main Content

assume

기호 객체에 가정 설정

설명

예제

assume(condition)condition에 정의된 대로 기호 변수에 수학적 가정 또는 수학적 조건을 설정합니다. assume은 이전 가정을 유지하지 않습니다. 대신, condition에 있는 변수에 대한 모든 이전 가정을 자동으로 삭제합니다.

예제

assume(expr,set)exprset에 속함을 나타냅니다. assumeexpr에 있는 변수에 대한 이전 가정을 삭제합니다.

예제

assume(expr,"clear")expr에 있는 모든 변수에 대한 모든 가정을 지웁니다.

예제

일반적인 가정

연관된 구문을 사용하여 가정을 설정합니다.

기호 변수 x에 대한 가정구문
실수assume(x,"real")
유리수assume(x,"rational")
양수assume(x,"positive")
양의 정수assume(x,{'positive','integer'})
–1보다 작거나 1보다 큼assume(x<-1 | x>1)
2에서 10 사이의 정수assume(in(x,"integer") & x>2 & x<10)
정수가 아님assume(~in(z,"integer"))
0이 아님assume(x ~= 0)
짝수assume(x/2,"integer")
홀수assume((x-1)/2,"integer")
0에서 2π 사이assume(x>0 & x<2*pi)
π의 배수assume(x/pi,"integer")

변수가 짝수 또는 홀수라고 가정하기

x/2가 정수라고 가정하여 x가 짝수라고 가정합니다. (x-1)/2가 정수라고 가정하여 x가 홀수라고 가정합니다.

x가 짝수라고 가정합니다.

syms x
assume(x/2,"integer")

solve를 사용하여 0에서 10 사이의 모든 짝수를 찾습니다.

solve(x>0,x<10,x)
ans =
 2
 4
 6
 8

x가 홀수라고 가정합니다. assume은 이전 가정을 유지하지 않고 이전 가정 in(x/2, "integer")를 자동으로 삭제합니다.

assume((x-1)/2,"integer")
solve(x>0,x<10,x)
ans =
 1
 3
 5
 7
 9

추후 계산을 위해 x에 대한 가정을 지웁니다.

assume(x,"clear")

여러 개의 가정

assume 명령을 연이어 실행해도 여러 개의 가정이 설정되지 않습니다. 대신, 각 assume 명령은 이전 가정을 삭제하고 새 가정을 설정합니다. assumeAlso 또는 & 연산자를 사용하여 여러 개의 가정을 설정할 수 있습니다.

assume을 사용하여 x > 5를 가정한 다음 x < 10을 가정합니다. assumptions를 사용하여 두 번째 가정만 존재함을 확인합니다. 이는 assume이 두 번째 가정을 설정할 때 첫 번째 가정을 삭제했기 때문입니다.

syms x
assume(x > 5)
assume(x < 10)
assumptions
ans =
x < 10

assumeAlso를 사용하여 두 번째 가정에 첫 번째 가정을 더합니다. 두 가정 모두 존재함을 확인합니다.

assumeAlso(x > 5)
assumptions
ans =
[ 5 < x, x < 10]

x에 대한 가정을 지웁니다.

assume(x,"clear")

& 연산자를 사용하여 두 조건을 가정해 보겠습니다. 두 가정 모두 존재함을 확인합니다.

assume(x>5 & x<10)
assumptions
ans =
[ 5 < x, x < 10]

추후 계산을 위해 x에 대한 가정을 지웁니다.

assume(x,"clear")

피적분 함수에 대한 가정

기호 파라미터 a에 대한 가정을 사용할 때와 사용하지 않을 때의 부정적분 계산 결과를 비교해 보겠습니다.

assume을 사용하여 a-1이 아니라는 가정을 설정합니다.

syms x a
assume(a ~= -1)

다음 적분을 계산합니다.

int(x^a,x)
ans =
x^(a + 1)/(a + 1)

이번에는 가정을 지우고 동일한 적분을 계산합니다. 가정이 없으면 int는 다음 조각별 결과를 반환합니다.

assume(a,"clear")
int(x^a, x)
ans =
piecewise(a == -1, log(x), a ~= -1, x^(a + 1)/(a + 1))

방정식의 파라미터와 변수에 대한 가정

가정을 사용하여 방정식의 반환되는 해를 특정 구간으로 제한합니다.

아래의 방정식을 풉니다.

syms x
eqn = x^5 - (565*x^4)/6 - (1159*x^3)/2 - (2311*x^2)/6 + (365*x)/2 + 250/3;
solve(eqn, x)
ans =
   -5
   -1
 -1/3
  1/2
  100

assume을 사용하여 해를 구간 –1 <= x <= 1로 제한합니다.

assume(-1 <= x <= 1)
solve(eqn, x)
ans =
   -1
 -1/3
  1/2

논리 연산자 and, or, xor, not 또는 그 단축 연산자를 사용하여 동시에 여러 개의 가정을 설정합니다. 예를 들어, -1보다 작은 모든 음수 해와 1보다 큰 모든 양수 해로 제한해 보겠습니다.

assume(x < -1 | x > 1)
solve(eqn, x)
ans =
  -5
 100

추후 계산을 위해 가정을 지웁니다.

assume(x,"clear")

가정을 사용해 단순화하기

적절한 가정을 설정하면 보다 단순한 표현식을 얻을 수 있습니다.

simplify를 사용하여 표현식 sin(2*pi*n)을 단순화해 보십시오. simplify 함수는 입력값을 단순화할 수 없으며, 입력값을 그대로 반환합니다.

syms n
simplify(sin(2*n*pi))
ans =
sin(2*pi*n)

n이 정수라고 가정해 보겠습니다. simplify는 이제 표현식을 단순화합니다.

assume(n,"integer")
simplify(sin(2*n*pi))
ans =
0

추후 계산을 위해 가정을 지웁니다.

assume(n,"clear")

표현식에 대한 가정

기호 표현식에 가정을 설정합니다.

변수 이외에 표현식에도 가정을 설정할 수 있습니다. 예를 들어, 다음 적분을 계산합니다.

syms x
f = 1/abs(x^2 - 1);
int(f,x)
ans =
-atanh(x)/sign(x^2 - 1)

가정 x2 – 1 > 0을 설정하여 더 단순한 결과를 생성합니다.

assume(x^2 - 1 > 0)
int(f,x)
ans =
-atanh(x)

추후 계산을 위해 가정을 지웁니다.

assume(x,"clear")

관계를 증명하기 위한 가정

먼저 조건을 가정한 다음 isAlways를 사용하여 특정 조건에서만 참이 되는 관계를 증명합니다.

x가 정수가 아니면 sin(pi*x)0이 되지 않음을 증명합니다. isAlways 함수는 논리값 1(true)을 반환합니다. 이는 이 조건이 설정된 가정하에 있는 모든 x 값에 대해 성립함을 의미합니다.

syms x
assume(~in(x,"integer"))
isAlways(sin(pi*x) ~= 0)
ans =
  logical
   1

행렬 요소에 대한 가정

sym을 사용하여 모든 행렬 요소에 가정을 설정합니다.

자동 생성된 요소를 갖는 2×2 기호 행렬 A를 만듭니다. setrational로 지정합니다.

A = sym("A",[2 2],"rational")
A =
[ A1_1, A1_2]
[ A2_1, A2_2]

assumptions를 사용하여 A의 요소에 대한 가정을 반환합니다.

assumptions(A)
ans =
[ in(A1_1, 'rational'), in(A1_2, 'rational'),...
  in(A2_1, 'rational'), in(A2_2, 'rational')]

assume을 사용하여 모든 행렬 요소에 가정을 설정할 수도 있습니다. 이번에는 A의 모든 요소가 양의 유리수 값을 갖는다고 가정해 보겠습니다. 가정을 문자형 벡터로 구성된 셀형 배열 {'positive','rational'}로 설정합니다.

assume(A,{'positive','rational'})

assumptions를 사용하여 A의 요소에 대한 가정을 반환합니다.

assumptions(A)
ans =
[ 0 < A1_1, 0 < A1_2, 0 < A2_1, 0 < A2_2,...
  in(A1_1, 'rational'), in(A1_2, 'rational'),...
  in(A2_1, 'rational'), in(A2_2, 'rational')]

추후 계산을 위해 가정을 지웁니다.

assume(A,"clear")

입력 인수

모두 축소

가정문으로, 기호 표현식, 기호 방정식, 기호 관계, 또는 기호 표현식, 기호 방정식 또는 기호 관계로 구성된 벡터나 행렬로 지정됩니다. 논리 연산자 and, or, xor, not 또는 그 단축 연산자를 사용하여 여러 개의 가정을 결합할 수도 있습니다.

가정을 설정할 표현식으로, 기호 변수, 기호 표현식, 벡터 또는 행렬로 지정됩니다. expr이 벡터 또는 행렬이면 assume(expr,set)expr의 각 요소가 set에 속한다는 가정을 설정합니다.

가정 집합으로, 문자형 벡터, string형 스칼라, string형 배열 또는 셀형 배열로 지정됩니다. 사용 가능한 가정은 "integer", "rational", "real" 또는 "positive"입니다.

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

  • assume은 기호 변수에 설정된 모든 이전 가정을 제거합니다. 가정을 추가할 때 이전 가정을 유지하려면 assumeAlso를 사용하십시오.

  • clear를 사용하여 MATLAB® 작업 공간에서 기호 변수를 삭제하면 그 변수에 설정한 모든 가정이 기호 엔진에 유지됩니다. 나중에 동일한 이름으로 새 기호 변수를 선언하면 이 기호 변수는 이전 가정을 상속받습니다.

  • 기호 변수 var에 설정된 모든 가정을 지우려면 다음 명령을 사용하십시오.

    assume(var,"clear")
  • MATLAB 작업 공간에 있는 모든 객체를 삭제하고 MATLAB 작업 공간과 연결된 Symbolic Math Toolbox™ 엔진이 모든 가정을 지운 채로 종료되도록 하려면 다음 명령을 사용하십시오.

    clear all
  • MATLAB은 부등식에 있는 복소수를 실수축으로 투영합니다. condition이 부등식인 경우, 부등식의 양변 모두 실수 값을 나타내야 합니다. 복소수체는 순서체가 아니므로 복소수가 있는 부등식은 유효하지 않습니다. (즉, 5 + i2 + 3*i보다 큰지 작은지 판단할 수 없습니다.) 예를 들어, x > ix > 0이 되고 x <= 3 + 2*ix <= 3이 됩니다.

  • 툴박스는 기호 함수에 대한 가정은 지원하지 않습니다. 대신, 기호 변수와 기호 표현식에 가정을 설정하십시오.

  • symsyms를 사용하여 새 기호 변수를 만들 때 변수가 실수, 양수, 정수 또는 유리수라는 가정을 설정할 수도 있습니다.

    a = sym("a","real");
    b = sym("b","rational");
    c = sym("c","positive");
    d = sym("d","positive");
    e = sym("e",{'positive','integer'});

    또는 더 효율적인 다음과 같은 명령을 사용할 수 있습니다.

    syms a real
    syms b rational
    syms c d positive
    syms e positive integer

버전 내역

R2012a에 개발됨

참고 항목

함수