안녕하세요. 세모계님
복소수의 절대값은 실수부와 허수부의 각각의 곱을 제곱근으로 구하는 것은 당연한 건데요.
이게 특정 값을 대입을 해서 계산을 하려고 하니 조금 복잡하게 표현이 됩니다.
단순한 복소수에서는 이런 문제가 없었는데, 미지수 세타가 추가가 되니 저렇게 나오네요.
APPROXIMATE가 왜 저렇게 나오는지 혹시 아시는지요?
그리고 APPROXIMATE로 한번에 해결하는 방법은 없을런지요?
늘 감사드립니다.
Comment 3
-
-
-
해결 방법
1) 이미 사용하신 것처럼 2단계로 나누어 approx 를 적용하거나,
2) 세타에 아무 값이나 넣거나 하는 방법 뿐인 듯 합니다.그 외에는 적당한 방법을 찾지 못하였습니다.
-
-
-
네. 알겠습니다. 의외로 저런 경우가 많아서 문의를 했는데 역시 특별한 방법은 없군요. 알려주셔서 감사합니다.
-
근사값 계산(approx)에서 오류가 발생하는 이유
2*p*q = 0.001 * 0.049 = 0.00098 로 딱 떨어지는 값인데,
위 계산 과정에서 9.7999999999999E-4 로 바뀌면서 14digits 아랫부분이 잘려버리고 말았습니다.
보통은 이런 경우 마지막 자리에서 반올림되면서 정상적으로 0.00098로 바뀌는데,
"왜 멀쩡한 0.00098 이 9.7999999999999 로 바뀌었어만 했는가?" 를 찾아야 합니다.
1) cos(t)을 중심으로 식이 정리되면서(=cos(t)의 계수를 1로 강제변경하면서) 계수의 자릿수가 불필요하게 커졌다. (그리고 오차 발생)
2) 두 식이 합쳐지는 과정에서 맞는 짝끼리 상쇄되어 없어지거나, 적절하게 반올림되어 (오차가 해소되며) 처리되는게 정상이지만,
approx() 의 영향으로 cos(t), sin(t) 사이에 불필요한 결합이나 전환이 먼저 이루어지면서 찌꺼기가 처리되지 못하는 상황에 이르렀다.
이런 추정을 하고 있습니다. 확실하진 않고 추정일 뿐입니다.
여러 함수도 써 보고, 수식 순서도 변경해 봤는데, 해결되진 않았습니다.