Main Content

subexpr

기호 표현식을 공통 하위 표현식으로 재작성

설명

예제

[r,sigma] = subexpr(expr)은 기호 표현식 expr을 공통 하위 표현식으로 재작성하여 이 공통 하위 표현식에 기호 변수 sigma를 대입합니다. 입력 표현식 expr에는 변수 sigma를 포함할 수 없습니다.

예제

[r,var] = subexpr(expr,'var')은 공통 하위 표현식에 var을 대입합니다. 입력 표현식 expr에는 기호 변수 var을 포함할 수 없습니다.

예제

[r,var] = subexpr(expr,var)[r,var] = subexpr(expr,'var')과 동일하되, 기호 변수 var이 MATLAB® 작업 공간에 미리 있어야 한다는 점만 다릅니다.

이 구문은 변수 var의 값을 expr에서 찾은 공통 하위 표현식으로 덮어씁니다. 변수 var의 값을 덮어 쓰지 않도록 하려면 두 번째 출력 인수에 다른 변수 이름을 사용하십시오. 예를 들어, [r,var1] = subexpr(expr,var)을 사용합니다.

예제

모두 축소

아래의 방정식을 풉니다. 해가 매우 긴 표현식입니다. 해를 표시하려면 solve 명령 끝의 세미콜론을 제거하십시오.

syms a b c d x
solutions = solve(a*x^3 + b*x^2 + c*x + d == 0, x, 'MaxDegree', 3);

이 긴 표현식에 공통 하위 표현식이 있습니다. 표현식을 줄이기 위해 subexpr을 사용하여 공통 하위 표현식을 축약합니다. 축약에 사용할 변수를 subexpr의 두 번째 입력 인수로 지정하지 않으면 subexpr이 변수 sigma를 사용합니다.

[r, sigma] = subexpr(solutions)
r = 

(σ-b3a-σ2σσ22σ-b3a-σ2-σ1σ22σ-b3a-σ2+σ1)where  σ1=3σ+σ2σi2  σ2=c3a-b29a2

sigma = 

d2a+b327a3-bc6a22+c3a-b29a23-b327a3-d2a+bc6a21/3

2차 방정식을 풉니다.

syms a b c x
solutions = solve(a*x^2 + b*x + c == 0, x)
solutions = 

(-b+b2-4ac2a-b-b2-4ac2a)

syms를 사용하여 기호 변수 s를 만든 다음, 결과에서 공통 하위 표현식을 이 변수로 바꿉니다.

syms s
[abbrSolutions,s] = subexpr(solutions,s)
abbrSolutions = 

(-b+s2a-b-s2a)

s = b2-4ac

또는 's'를 사용하여 축약형 변수를 지정합니다.

[abbrSolutions,s] = subexpr(solutions,'s')
abbrSolutions = 

(-b+s2a-b-s2a)

s = b2-4ac

두 구문 모두 변수 s의 값을 공통 하위 표현식으로 덮어씁니다. 따라서 s에 어떤 값을 대입하는 것과 같은 작업을 수행할 수 없습니다.

subs(abbrSolutions,s,0)
ans = 

(-b+s2a-b-s2a)

변수 s의 값을 덮어 쓰지 않도록 하려면 두 번째 출력 인수에 다른 변수 이름을 사용합니다.

syms s
[abbrSolutions,t] = subexpr(solutions,'s')
abbrSolutions = 

(-b+s2a-b-s2a)

t = b2-4ac
subs(abbrSolutions,s,0)
ans = 

(-b2a-b2a)

입력 인수

모두 축소

공통 하위 표현식을 포함하는 긴 표현식으로, 기호 표현식 또는 기호 함수로 지정됩니다.

공통 하위 표현식을 대입하는 데 사용할 변수로, 문자형 벡터 또는 기호 변수로 지정됩니다.

입력 표현식 expr에 이미 var이 포함되어 있으면 subexpr은 오류를 발생시킵니다.

출력 인수

모두 축소

축약형으로 바꾼 공통 하위 표현식이 있는 표현식으로, 기호 표현식 또는 기호 함수로 반환됩니다.

축약형에 사용되는 변수로, 기호 변수로 반환됩니다.

버전 내역

R2006a 이전에 개발됨