2010년 10월 27일 수요일

x에 대하여 정리하면...

대중에게 알려진 가장 유명한 방정식은 아인슈타인의 에너지와 질량의 동등성을 나타내는
e == m c^2
일 것 같다. 여기서 m은 물체의 질량, c는 진공에서 빛의 속도, 그리고 e는 이 질량에 저장된 에너지를 뜻한다. 이 방정식을 m에 관해 정리하려면, 즉 m만 좌변에 남기고 모두 우변으로 옮기려면 어떻게 해야 할까? 방정식을 m에 관해 풀면 된다.
e == m c^2
% // Solve[#, m] &
결과는 방정식이 아닌 Rule로 주어진다. 이걸 방정식으로 바꾸려면, 아래와 같이 리스트(List)를 벗겨 내고, 헤더를 Equal로 바꿔주면 된다.
e == m c^2
% // Solve[#, m][[1, 1]] & // Equal @@ # &
그럼, c^2에 관해 정리하려면 어떻게 해야 할까? 위와 같은 방법으로 하면 c^2가 적절한 변수가 아니라는 오류 메시지를 보게 될 뿐이다. 이럴 땐, c^2를 잠시 HoldForm으로 잡아두면 문제를 해결할 수 있다.
e == m c^2
% /. c^2 -> HoldForm[c^2] // Solve[#, HoldForm[c^2]][[1, 1]] & // 
  ReleaseHold // Equal @@ # &
Solve로 항을 정리한 후에 ReleaseHold를 사용하면 간단하게 HoldForm을 제거할 수 있다.

댓글 없음:

댓글 쓰기