Main Content

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 = 1
S = simplify(exp(c*log(sqrt(a+b))))
S = a+bc/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*1i)*1i)/2 - (exp(x*1i)*1i)/2, sqrt(16)];
S = simplify(M)
S = 

(x+3cos(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+12)x2

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

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

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

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

-e2xii-ie2xi+1

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

S10 = simplify(expr,'Steps',10)
S10 = 

2ie2xi+1-i

S30 = simplify(expr,'Steps',30)
S30 = 

cos(x)-sin(x)iicos(x)-i

S50 = simplify(expr,'Steps',50)
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(2x)cos(x)2-sin(x)2)

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

S = simplify(expr,'Steps',10,'All',true)
S = 

(cos(2x)1-2sin(x)22cos(x)2-1cos(x)2-sin(x)2cot(2x)sin(2x)e-2xi2+e2xi2)

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

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

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

S = simplify(f,'Steps',100)
S = sin(sin(x)+xi)

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

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

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

expr = sym(1i)^(1i+1);
withoutPreferReal = simplify(expr,'Steps',100)
withoutPreferReal = 

-112+12i

withPreferReal = simplify(expr,'Criterion','preferReal','Steps',100)
withPreferReal = 

e-π2i

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

u = symunit;
expr = 300*u.cm + 40*u.inch + 2*u.m;
S = simplify(expr)
S = 

752125m"meter - a physical unit of length."

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

대부분의 경우 Symbolic Math Toolbox™를 사용하여 기호 표현식을 단순화하려면 simplify 함수만 사용하면 됩니다. 하지만 일부 대규모의 복잡한 표현식의 경우 simplify를 적용하기 전에 expand 함수를 사용하여 더 빠르게 더 간단한 결과를 얻을 수 있습니다.

예를 들어, 다음 워크플로는 커(Kerr) 메트릭[1]을 나타내는 행렬의 행렬식을 구할 때 더 나은 결과를 반환합니다. 커 메트릭의 파라미터를 선언합니다.

syms theta real;
syms r rs a real positive;

커 메트릭을 나타내는 행렬을 정의합니다.

rho = sqrt(r^2 + a^2*cos(theta)^2);
delta  = r^2 + a^2 - r*rs;
g(1,1) = - (1 - r*rs/rho^2);
g(1,4) = - (rs*a*r*sin(theta)^2)/rho^2;
g(4,1) = - (rs*a*r*sin(theta)^2)/rho^2;
g(2,2) = rho^2/delta;
g(3,3) = rho^2;
g(4,4) = (r^2 + a^2 + rs*a^2*r*sin(theta)^2/rho^2)*sin(theta)^2;

커 메트릭의 행렬식을 계산합니다.

det_g = det(g)
det_g = 

-sin(θ)2a6cos(θ)4+a4r2cos(θ)4+2a4r2cos(θ)2+rsa4rcos(θ)2sin(θ)2-rsa4rcos(θ)2+2a2r4cos(θ)2+a2r4-rsa2r3cos(θ)2+rsa2r3sin(θ)2-rsa2r3+r6-rsr5a2+r2-rsr

simplify 함수를 사용하여 행렬식을 단순화합니다.

D = simplify(det_g)
D = -sin(θ)2a2cos(θ)2+r2-a2sin(θ)2+a2+r2

그 대신, expand 함수를 사용하여 표현식을 평탄화한 후 simplify 함수를 적용합니다. 이러한 추가 단계를 수행하면 결과가 더 간단해집니다.

D = simplify(expand(det_g))
D = -sin(θ)2-a2sin(θ)2+a2+r22

입력 인수

모두 축소

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

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name을 묶으십시오.

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

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

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

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

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

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

false엄격한 단순화 규칙을 사용합니다. simplify는 항상 초기 표현식과 해석적으로 동일한 결과를 반환합니다.
true표현식에 순수 대수적 단순화를 적용합니다. 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인 경우 f(g(x)) = 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.

참고 문헌

[1] Zee, A. Einstein Gravity in a Nutshell. Princeton: Princeton University Press, 2013.

버전 내역

R2006a 이전에 개발됨