- AllCalc Calc News/Info
[공학용 계산기] 공학용 계산기의 꽃? solve (솔브) 기능 이해하기 (Newton-Raphson 법, 뉴튼법)
1. 공학용 계산기의 꽃? solve 기능이란?
solve 기능은 "방정식을 (손으로) 한 문자로 정리해서 풀지 않고, 식을 있는 그대로 (계산기에) 입력해서 해를 찾을 수 있는 기능"입니다.
방정식을 통채로 집어넣으면 해가 튀어 나온다니... 아름답지 않습니까?
공학용 계산기의 꽃으로 불러도 손색이 없습니다.
(개인적으로) Solve 기능이 없는 공학용 계산기를 공학용이 아닌 공학향(香) 계산기로 부르는 것도 바로 그 때문입니다. \
향기만 날 뿐 진짜가 아니므로 맛이 없습니다. (바나나향 우유는 맛있습니다만... )
2. 해(Solution)를 찾는 알고리즘
대부분의 공학용 계산기에서 Solve 기능으로 채택하는 알고리즘이 바로 Newton-Raphson Method (줄여서 뉴튼법이라고도 부름)입니다.
위 스샷을 통해 뉴튼법으로 해를 찾는 과정을 확인할 수 있습니다. (사진 출처 : 위키)
보시다시피 x1 → y1 → x2 → y2 → x3 .... 찾는 과정이 반복됩니다.
그러다가 y값(or 좌변-우변 값)이 0에 매~~~~~~우 가까워진 경우,
답(그 때의 x값)을 내놓는 것입니다.
그래서 초기값(시작점) x1이 필요하고, 중요합니다.
이차방정식의 경우(해가 2개 존재한다고 가정) 접선의 기울기가 0인 꼭지점을 기준으로 시작점이 왼쪽에 있으면 왼쪽의 해만 찾아지고, 오른쪽에 있으면 오른쪽의 해만 찾아집니다.
그래서 기울기가 0인 x 값을 알면 편하겠지만, 실제로는 그렇지 않은 경우가 많기 때문에 (2차 방정식 한정) 아~~주 큰 값이나 아~~주 작은 값을 넣어버려도 됩니다.
시작점이 해에 가까울수록 반복 횟수가 줄어들긴 하지만, 고생하는건 계산기니까... 괜찮습니다.
해를 찾을 수 있는 수치해석방법은 이분법, 가위치법 등 다양하지만, 그 중에서 뉴튼법이 가장 대표적으로 쓰이는 이유는 해를 찾는 속도가 빠르고 해의 구간을 알지 못해도 해를 찾을 수 있는(=개방법) 편리함이 있기 때문입니다.
3. 답이 구해지지 않을 때
(feat. 계산기를 거드는 방법 = 원하는 답을 구하는 방법)
그런데 뉴튼법이 만능인 것은 아닙니다. 아래처럼 특정한 경우에는 메롱메롱해지면서 답을 구하지 못하기도 합니다.
- 방정식을 그렸을 때, 그래프가 매끄럽지 못하고 날카로운 경우
- 그래프가 이리저리 들쑥날쑥한 경우
- 초월함수 : 거의 수직/수평의 기울기를 가지는 경우
- 주기함수 : 삼각함수 등
해가 여러개인 함수인 때에는 답을 구하더라도, 이걸 찾았다가 저걸 찾았다가 왔다갔다 하기도 하구요.
따라서 solve 기능이 이상하다 싶으면 계산기를 조금 거들어줘야 합니다. 계산기를 거드는 방법은 크게 세가지인데, 그리 어렵지 않습니다.
- 초기값(=추정값)을 잘! 입력.
이 때 초기값은 원하는 결과에 가까울수록 원하는 결과값을 구하는데 유리합니다.
- 해를 찾을 범위(lower bound, upper bound)를 지정. (CAS 급 계산기 한정)
범위를 지정할 수 있다면! 해보시는게 좋습니다만, 지정할 수 없는 계산기에서는 패스!
- 방정식을 변형. (=최적화 내지는 간소화)
식을 한쪽으로 몬다거나...
공식 등을 이용해서 식을 짧게 줄인다거나...
식 일부로만 해를 구해본다거나...
미지수의 스케일을 바꾼다거나...
그러면 아주 요상한 경우가 아닌 이상 원하는 구간에서 원하는 해를 찾을 수 있답니다.
만약 그래도 해결이 안된다면... 그래프를 그려보는 것이 가장 좋은 방법인 것 같습니다. (인터넷 찬스=울프람 알파, 상급 계산기 등을 이용해야 할겁니다.) 그래프 기능이 불가능하다면 부족하나마 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
Comment 10
-
-
-
[fx-570] 에서 solve 가 불가능할 때 TABLE을 이용한 노가다로 해를 구할 수도 있습니다.
http://www.allcalc.org/17077
말그대로 노가다입니다.
-
-
-
주기함수 (삼각함수)의 solve 예
문제 : 2cos(x)-cos(30˚)=0 을 만족하는 x를 찾기
그래프는 위와 같습니다.
그런데 solve(Newton법) 기능을 어디에서 시작하느냐에 따라서 찾아지는 결과값이 달라집니다.
[fx-570ES Plus] 의 경우
초기값 0일 때 ⇒
초기값 1일 때 ⇒
초기값 20~100 일 때 ⇒
-
-
-
초기값의 결정
초기값이 없어도 해가 나오면 좋고, 많은 경우에 해가 그냥 찾아지기도 합니다.
해가 안나오더라도 아주 큰 값으로 변경하거나 아주 작은 값으로 변경하거나 대충 바꿔서 답이 나오는 경우도 있구요.
하지만 가끔은 초기값을 정밀한 수준으로 지정하지 않으면 해를 못찾는 경우가 있습니다. Can't Solve Error 발생!
이 때는 해에 가까운 값일수록 바람직하다고 볼 수 있습니다.
그런데 해에 가까운 값을 넣으려고 보니... 해를 모르네요?
"짱구"를 잘 굴려서 찍는 방법이 있지만, 그게 안통한다면 다시 계산기 도움을 받아야 합니다.- 그래핑급 계산기 : 그래프를 그려보시면 됩니다. 가장 확실합니다. 그래핑 급 계산기라면 다시 solve로 돌아올 필요 없이 그래프에서 trace (추적) 기능을 이용해 해를 찾으시는게 좋습니다.
- 기초형 계산기 : 기초형 계산기에도 TABLE 기능이 있는 것이 보통입니다. 그래프는 아니지만, 일정한 x 간격으로 y 값을 찾아서 표를 만들어줍니다.
예) 이런 경우에는 (연속이라는 가정하에) 3.1415(=π)와 4.7123(=(³/₂)π)) 사이에 해가 있음을 알 수가 있습니다.
-
-
-
L-R= 의 의미
"결과의 (좌측)-(우측)" 은 얻은 결과를 기저 변수에 대입했을 때의 결과를 나타내고 있습니다. 이 값이 0에 가까우면 가까울수록, 얻는 결과의 정밀도가 높아집니다. - [fx-570 ES] 설명서 中
- "원래의 입력 방정식"을 (좌변=우변) 형태에서 (좌변Left-우변Right) 형태로 변경한 다음에, solve 로 구해진 기저 변수 결과값을 (Left-Right) 식에 대입하여 얻은 값이 'L-R=' 입니다.
- "정답"이라면 당연히 0이 나와야 합니다. 하지만 공학용 계산기 solve 함수가 언제나 정답을 찾아주는 것이 아니라서, 계산기가 찾아준 결과가 얼마나 믿을만한지를 간접적으로 제시해주는 것이 L-R= 값입니다.
- 0이 아니라면 정답이 아닐 가능성이 높습니다. solve 기능을 (현재 찾은값부터) 재개할 수 있다면 그렇게 해서 L-R 값이 0 으로 수렴하는지 확인해 보셔야합니다.
-
-
-
참고 : Newton’s Method with TI-Nspire™ CAS, Forest W. Arnold, October 2018
ㄴ https://www.arnoldfw.com/pdf/newtons_method.pdf
-
-
-
에러 메시지 Can't Solve 가 나오는 예2 : [fx-570EX]
https://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1131&docId=390112798&qb=6rOE7IKw6riw&enc=utf8§ion=kin.qna.all&rank=7&search_sort=3&spq=0
1. 그래프 기울기가 0에 수렴하는 구간 있음. -10 < x < 10, |x| > 큰 수
ㄴ solve 반복 도중에 이 구간에 빠지면 답이 안나오게 됨.2. fx-570EX 의 경우
초기 추정값을 (±) 10 < x < 90 정도 사이로 넣을 때에만 해가 찾아짐.
-
-
-
참고 사이트
https://math.libretexts.org/Courses/Laney_College/Math_3A%3A_Calculus_1_(Fall_2022)/04%3A_Applications_of_Derivatives/4.10%3A_Newtons_Method
-
-
-
Ans 변수를 조합해서 뉴튼법에 의한 수치해석법을 따라가 볼 수 있습니다.
함수 기능을 사용할 수 있다면 아래처럼 진행하시면 되구요.
ㄴ 계산기에 미분기능(d/dx)이 없다면, 손으로 풀어서 입력해야 하겠죠?
ans 변수가 제대로 들어간다면 = (enter) 를 누르는 것으로 다음 계산이 자동으로 반복됩니다.
-
-
-
함수 기능이 없다면 수식을 위에서 함수 f 부분을
원래 수식으로 입력하시면 되겠습니다. (대신 미지수는 Ans 로 대체)
-
에러 메시지 Can't Solve 가 나오는 예1 : [fx-570ES Plus]
http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1114&docId=249429180&ref=me2lnk
추정 원인 : 그래프가 너무 급격함(=기울기가 ∞에 가까움)
해결 방법 : 초기값 정밀하게 입력(0.005도 안되고 0.006정도 넣어야 하는데... 의미없음.), 구간입력(불가능), 식 변형(?)