계산을 많이하는 이공계 대학생이라면 끼고 사는 사이트가 있다.
Wolfram|Alpha: Computational Intelligence (wolframalpha.com)
미분, 적분, 행렬연산 등 복잡한 계산들을 해주는 사이트다.
대충 매스매티카의 웹 버전이라고 생각하면 된다. 다만 무료로 쓴다면 시간 제한 등 기능에 제한이 있고 입력을 한 줄만 받기 때문에 매스매티카보다 자유도가 떨어지긴 한다.
최근에 울프럼알파에서 행렬 지수를 계산하다가 이상하게 계산되는 문제를 발견해서 메모해둔다.
가령 e^( {{0,1},{1,0}} ) 과 같은 식을 계산한다면, 손으로 계산할 때는 이를 테일러 전개해서 계산하거나(=행렬 지수의 정의를 이용), 지수에 있는 행렬을 대각화하여 계산해줘야 한다. 그리고 이는 울프럼 알파에서도 제대로 계산해준다.
exp({{0,1},{1,0}}) - Wolfram|Alpha (wolframalpha.com)
그러나 문제는 다음과 같다. 이 행렬을 제곱하면 이상하게 계산된다는 것.
원래는 이런 결과가 나와야 한다.
그러나 다음 사진처럼 입력하면? exp({{0,1},{1,0}}) * exp({{0,1},{1,0}}) - Wolfram|Alpha (wolframalpha.com)
다른 결과가 나온다..!
왜 이런 결과가 나오느냐.. 다음을 보자.
{{e^0,e^1},{e^1,e^0}} * {{e^0,e^1},{e^1,e^0}} - Wolfram|Alpha (wolframalpha.com)
즉 행렬 지수를 하나만 계산시키면 제대로 계산해주지만, 행렬지수를 계산시킴과 동시에 행렬곱과 같은 다른 연산을 시키면 갑자기 행렬지수를 exp({{a,b},{c,d}}) = {{e^a,e^b},{e^c, e^d}}와 같이 계산하여 행렬곱을 한다는 것.
이 문제를 양자역학에서 spin 1/2 state을 회전시킨 state를 계산하려고 할 때 맞닥뜨렸는데, 딱히 해결방법은 없는 것으로 보인다. 매스매티카도 똑같이 계산한다고 하기에.. 행렬지수를 하나씩 계산해 마지막에 따로 합쳐서 행렬곱을 해주는 수밖에 없는듯하다.
'잡다한 코드' 카테고리의 다른 글
그래프 그리는 코드 (0) | 2024.10.14 |
---|---|
파이썬으로 curve fitting 및 R^2 값 구하기 (0) | 2024.10.06 |