대수적 단순화
는 하나 이상의 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
를 사용하십시오.
수학 표현식의 단순화는 명확하게 정의되는 주제가 아닙니다. 표현식의 어떤 형식이 가장 간단한지에 대한 보편적인 기준은 없습니다. 어느 한 문제에 대해서는 가장 단순한 형식의 수학 표현식이 또 다른 문제에 대해서는 복잡한 표현식이 되거나 심지어 부적합한 표현식이 될 수도 있습니다.
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.