1. 공학용 계산기의 꽃? solve 기능이란?
solve 기능은 "방정식을 (손으로) 한 문자로 정리해서 풀지 않고, 식을 있는 그대로 (계산기에) 입력해서 해를 찾을 수 있는 기능"입니다.
방정식을 통채로 집어넣으면 해가 튀어 나온다니... 아름답지 않습니까?
공학용 계산기의 꽃으로 불러도 손색이 없습니다.
(개인적으로) Solve 기능이 없는 공학용 계산기를 공학용이 아닌 공학향(香) 계산기로 부르는 것도 바로 그 때문입니다. 향기만 날 뿐 진짜가 아니므로 맛이 없습니다. (바나나향 우유는 맛있습니다만... )
2. 해(Solution)를 찾는 알고리즘
대부분의 공학용 계산기에서 Solve 기능으로 채택하는 알고리즘이 바로 Newton-Raphson Method (뉴튼법이라고도 함, 이하 뉴튼법이라고 칭함)입니다.
오른쪽 스샷을 통해 뉴튼법으로 해를 찾는 과정을 확인할 수 있습니다.
(사진 출처 : 위키)
보시다시피 x → y → x → y → x .... 찾는 과정이 반복됩니다. 그래서 x의 초기값(시작점)이 필요하고 중요합니다.
이차방정식의 경우(해가 2개 존재한다고 가정) 접선의 기울기가 0인 꼭지점을 기준으로 시작점이 왼쪽에 있으면 왼쪽의 해만 찾아지고, 오른쪽에 있으면 오른쪽의 해만 찾아집니다. 그래서 기울기가 0인 x 값을 알면 편하겠지만, 실제로는 그렇지 않은 경우가 많기 때문에 아~~주 큰 값이나 아~~주 작은 값을 넣어버려도 됩니다.
시작점이 해에 가까울수록 반복 횟수가 줄어들긴 하지만, 고생하는건 계산기니까... 괜찮습니다.
해를 찾을 수 있는 수치해석방법은 이분법, 가위치법 등 다양하지만, 그 중에서 뉴튼법이 가장 대표적으로 쓰이는 이유는 해를 찾는 속도가 빠르고 해의 구간을 알지 못해도 해를 찾을 수 있는(=개방법) 편리함이 있기 때문입니다.
3. 답이 구해지지 않을 때
(feat. 계산기를 거드는 방법 = 원하는 답을 구하는 방법)
그런데 뉴튼법이 만능인 것은 아닙니다. 아래처럼 특정한 경우에는 메롱메롱해지면서 답을 구하지 못하기도 합니다.
- 방정식을 그렸을 때, 그래프가 매끄럽지 못하고 날카로운 경우
- 그래프가 이리저리 들쑥날쑥한 경우
- 초월함수 : 거의 수직/수평의 기울기를 가지는 경우
- 주기함수 : 삼각함수 등
해가 여러개인 함수인 때에는 답을 구하더라도, 이걸 찾았다가 저걸 찾았다가 왔다갔다 하기도 하구요.
따라서 solve 기능이 이상하다 싶으면 계산기를 조금 거들어줘야 합니다. 계산기를 거드는 방법은 크게 세가지인데, 그리 어렵지 않습니다.
- 초기값(=추정값)을 잘! 입력.
이 때 초기값은 원하는 결과에 가까울수록 원하는 결과값을 구하는데 유리합니다.
- 해를 찾을 범위(lower bound, upper bound)를 지정.
범위를 지정할 수 있다면! 해보시는게 좋습니다만, 지정할 수 없는 계산기에서는 패스!
- 방정식을 변형. (=최적화 내지는 간소화)
식을 한쪽으로 몬다거나...
공식등을 이용해서 식을 짧게 줄인다거나...
식 일부로만 해를 구해본다거나...
그러면 아주 요상한 경우가 아닌 이상 원하는 구간에서 원하는 해를 찾을 수 있답니다.
만약 그래도 해결이 안된다면... 그래프를 그려보는 것이 가장 좋은 방법인 것 같습니다. (인터넷 찬스=울프람 알파, 상급 계산기 등을 이용해야 할겁니다.) 그래프 기능이 불가능하다면 부족하나마 TABLE 기능이라도 사용해보시는 방법도 있습니다. (댓글 예시 참고)
4. 계산기별 Solve 기능 설명글 링크
★ TI
- [TI-nspire]
http://www.allcalc.org/3448 (solve),
http://www.allcalc.org/9250 (nsolve)
★ CASIO
- [fx-570 ES]
http://www.allcalc.org/5263
- [fx-5800P]
http://www.allcalc.org/8474
- [fx-9860G]
http://www.allcalc.org/6005
에러 메시지 Can't Solve 가 나오는 예1 : [fx-570ES Plus]
http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1114&docId=249429180&ref=me2lnk
추정 원인 : 그래프가 너무 급격함(=기울기가 ∞에 가까움)
해결 방법 : 초기값 정밀하게 입력(X), 구간입력(불가능), 식 변형(?)