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

simplify

대수적 단순화

설명

예제

S = simplify(expr)expr의 대수적 단순화를 수행합니다. 이 함수는 expr이 기호 벡터이거나 기호 행렬이면 expr의 각 요소를 단순화합니다.

예제

S = simplify(expr,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용하여 expr의 대수적 단순화를 수행합니다.

예제

표현식 단순화하기

아래의 기호 표현식을 단순화합니다.

syms x a b c
S = simplify(sin(x)^2 + cos(x)^2)
S = simplify(exp(c*log(sqrt(a+b))))
S =
1

S =
(a + b)^(c/2)

행렬 요소 단순화하기

아래의 기호 행렬에 대해 simplify를 호출합니다. simplify는 입력 인수가 벡터 또는 행렬일 경우 그 벡터나 행렬의 각 요소에 대해 더 간단한 형식을 찾으려고 시도합니다.

syms x
M = [(x^2 + 5*x + 6)/(x + 2), sin(x)*sin(2*x) + cos(x)*cos(2*x);
		(exp(-x*i)*i)/2 - (exp(x*i)*i)/2, sqrt(16)];
S = simplify(M)
S =
[  x + 3, cos(x)]
[ sin(x),      4]

로그와 거듭제곱에 대한 간단한 결과 얻기

로그와 거듭제곱을 포함하는 기호 표현식을 단순화합니다. 일반 복소수 값에는 거듭제곱과 로그를 결합하여 사용할 수 없으므로 simplify는 기본적으로 로그와 거듭제곱을 결합하지 않습니다.

syms x
expr = (log(x^2 + 2*x + 1) - log(x + 1))*sqrt(x^2);
S = simplify(expr)
S =
-(log(x + 1) - log((x + 1)^2))*(x^2)^(1/2)

simplify 함수가 거듭제곱과 로그를 결합할 수 있도록 단순화 규칙을 적용하려면 'IgnoreAnalyticConstraints'true로 설정하십시오.

S = simplify(expr, 'IgnoreAnalyticConstraints', true)
S =
x*log(x + 1)

더 많은 단순화 단계를 사용하여 더 간단한 결과 얻기

아래의 식을 단순화합니다.

syms x
expr = ((exp(-x*i)*i) - (exp(x*i)*i))/(exp(-x*i) + exp(x*i));
S = simplify(expr)
S =
-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1)

기본적으로 simplify는 한 번의 자동 단순화 단계를 사용합니다. 단순화 단계 수를 늘리면 서로 다르면서 종종 더 짧은 단순화 결과를 얻을 수 있습니다.

S10 = simplify(expr,'Steps',10)
S30 = simplify(expr,'Steps',30)
S50 = simplify(expr,'Steps',50)
S10 =
2i/(exp(x*2i) + 1) - 1i
 
S30 =
((cos(x) - sin(x)*1i)*1i)/cos(x) - 1i
 
S50 =
tan(x)

원하는 결과가 반환되지 않으면 다른 단순화 함수를 사용해 보십시오. Choose Function to Rearrange Expression 항목을 참조하십시오.

기호 표현식에 대해 동등한 결과 얻기

'All'의 값을 true로 설정하여 하나의 기호 표현식에 대해 여러 동등한 결과를 얻습니다.

syms x
expr = cos(x)^2 - sin(x)^2;
S = simplify(expr,'All',true)
S =
            cos(2*x)
 cos(x)^2 - sin(x)^2

단순화 단계 수를 10으로 늘립니다. 동일한 표현식에 대해 다른 동등한 결과를 구합니다.

S = simplify(expr,'Steps',10,'All',true)
S =
                   cos(2*x)
             1 - 2*sin(x)^2
             2*cos(x)^2 - 1
        cos(x)^2 - sin(x)^2
          cot(2*x)*sin(2*x)
 exp(-x*2i)/2 + exp(x*2i)/2

실수부 및 허수부 분리하기

'Criterion'의 값을 'preferReal'로 설정하여 표현식의 실수부와 허수부를 구분합니다.

syms x
f = (exp(x + exp(-x*i)/2 - exp(x*i)/2)*i)/2 -...
    (exp(- x - exp(-x*i)/2 + exp(x*i)/2)*i)/2;
S = simplify(f, 'Criterion','preferReal', 'Steps', 100)
S =
sin(sin(x))*cosh(x) + cos(sin(x))*sinh(x)*1i

'Criterion''preferReal'로 설정하지 않으면 simplify는 더 짧지만 실수부와 허수부가 분리되지 않은 결과를 반환합니다.

S = simplify(f,'Steps',100)
S =
sin(sin(x) + x*1i)

'Criterion''preferReal'로 설정하면 단순화 함수는 하위 표현식 안에 복소수가 들어있는 형식의 표현식을 선호하지 않습니다. 하위 표현식이 중첩된 경우에는 복소수 값이 깊은 위치에 들어있는 형식의 표현식일수록 덜 선호합니다.

지수에서 허수 항을 사용하지 않기

'Criterion''preferReal'로 설정하여 지수에 허수 항이 포함되지 않도록 해보십시오.

'Criterion''preferReal'로 설정한 상태에서 그리고 설정하지 않은 상태에서 복소수 기호 표현식을 단순화해보면 이 동작을 확인할 수 있습니다. 'Criterion''preferReal'로 설정된 경우 simplify는 허수 항을 지수 밖에 놓습니다.

expr = sym(i)^(i+1);
withoutPreferReal = simplify(expr,'Steps',100)
withoutPreferReal =
(-1)^(1/2 + 1i/2)
withPreferReal = simplify(expr,'Criterion','preferReal','Steps',100)
withPreferReal =
exp(-pi/2)*1i

단위 단순화하기

simplify를 사용하여 같은 차원의 기호 단위를 포함하는 표현식을 단순화합니다.

u = symunit;
expr = 300*u.cm + 40*u.inch + 2*u.m;
S = simplify(expr)
S =
(3008/5)*[cm]

simplify는 다시 작성할 단위를 자동으로 선택합니다. 특정 단위를 선택하려면 rewrite를 사용하십시오.

입력 인수

모두 축소

입력 표현식으로, 기호 표현식, 기호 함수, 기호 벡터 또는 기호 행렬로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'Seconds',60은 단순화 처리 시간을 60초로 제한합니다.

여러 동등한 결과를 반환하는 옵션으로, 'All'과 함께 두 논리값 중 하나가 쉼표로 구분되어 지정됩니다. 이 옵션을 사용할 경우 입력 인수 expr이 스칼라여야 합니다.

false디폴트 옵션을 사용하면 단순화의 최종 결과만 반환됩니다.
true입력 표현식에 대한 여러 동등한 결과를 열 벡터로 반환합니다. 이 옵션을 'Steps' 옵션과 함께 사용하면 단순화 처리를 수행하면서 구해지는 다른 표현식들을 얻을 수 있습니다.

단순화 기준으로, 'Criterion'과 함께 다음 문자형 벡터 중 하나가 쉼표로 구분되어 지정됩니다.

'default'디폴트(자동) 단순화 기준을 사용합니다.
'preferReal'S에 복소수 값이 포함된 형식보다 실수 값이 포함된 형식을 선호합니다. S가 복소수 값이 포함된 형식인 경우 단순화 함수는 하위 표현식 안에 복소수가 포함된 형식을 선호하지 않습니다. 표현식 안에 하위 표현식이 중첩된 경우에는 복소수 값이 깊은 위치에 들어있는 형식일수록 덜 선호합니다.

단순화 규칙으로, 'IgnoreAnalyticConstraints'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

false엄격한 단순화 규칙을 사용합니다. simplify는 항상 초기 표현식과 해석적으로 동일한 결과를 반환합니다.
true순수 대수적 단순화를 표현식에 적용합니다. simplify는 복잡한 결과를 반환할 수도 있는 입력 표현식을 더 간단한 결과로 반환합니다. IgnoreAnalyticConstraintstrue로 설정하면 초기 표현식과 동등하지 않은 결과가 반환될 수 있습니다.

단순화 처리에 적용되는 시간 제한으로, 'Seconds'와 함께 최대 시간(초)을 나타내는 양수 값이 쉼표로 구분되어 지정됩니다.

단순화 단계 수로, 'Steps'와 함께 자동 단순화 단계의 최대 수를 나타내는 양수 값이 쉼표로 구분되어 지정됩니다. 단순화 단계 수를 늘리면 계산 속도가 느려질 수 있습니다.

simplify(expr,'Steps',n)simplify(expr,n)과 동등합니다. 여기서 n은 단순화 단계 수입니다.

  • 수학 표현식의 단순화는 명확하게 정의된 주제는 아닙니다. 표현식의 어떤 형식이 가장 간단한지에 대한 보편적인 기준은 없습니다. 어느 한 문제에 대해서는 가장 단순한 형식의 수학 표현식이 또 다른 문제에 대해서는 복잡한 표현식이 되거나 심지어 부적합한 표현식이 될 수도 있습니다.

알고리즘

IgnoreAnalyticConstraints를 사용할 경우 simplify는 다음 규칙을 따릅니다.

  • a 및 b의 모든 값에 대해 log(a) + log(b) = log(a·b). 특히 다음 등식은 a, b 및 c의 모든 값에 대해 유효합니다.

      (a·b)c = ac·bc.

  • a 및 b의 모든 값에 대해 log(ab) = b·log(a). 특히 다음 등식은 a, b 및 c의 모든 값에 대해 유효합니다.

      (ab)c = ab·c.

  • f 및 g가 표준 수학 함수이고 작은 양수에 대해 f(g(x)) = x인 경우 모든 복소수 값 x에 f(g(x)) = x가 적용되는 것으로 간주됩니다. 구체적으로 살펴보면,

    • log(ex) = x

    • asin(sin(x)) = x, acos(cos(x)) = x, atan(tan(x)) = x

    • asinh(sinh(x)) = x, acosh(cosh(x)) = x, atanh(tanh(x)) = x

    • 람베르트 W 함수의 모든 분지(branch) 인덱스 k에 대해 Wk(x·ex) = x.

R2006a 이전에 개발됨