조건수·안정성·오차분석
현실의 수학 문제는 언제나 깔끔한 기호식으로 풀리지 않는다. 방정식의 근, 많은 연립방정식의 해, 관측점 사이의 값, 미분과 적분을 컴퓨터로 구할 때는 유한한 비트와 유한한 횟수의 연산으로 근삿값을 만든다. 프로그램이 오류 없이 끝나고 소수점 아래 여러 자리를 출력해도 그 자릿수가 모두 정확하다는 보장은 없다.
선수 설명은 정수·부호·고정소수점·부동소수점, 근사·반올림·오차 전파다. 이 절의 조건성은 입력의 변화이고 안정성은 계산 방법의 성질이라는 두 주체를 나눈다.
0. 문제와 신뢰성 지도: 숫자가 나왔다는 사실과 믿을 만하다는 사실은 다르다
현실의 수학 문제는 언제나 깔끔한 기호식으로 풀리지 않는다. 방정식의 근, 많은 연립방정식의 해, 관측점 사이의 값, 미분과 적분을 컴퓨터로 구할 때는 유한한 비트와 유한한 횟수의 연산으로 근삿값을 만든다. 프로그램이 오류 없이 끝나고 소수점 아래 여러 자리를 출력해도 그 자릿수가 모두 정확하다는 보장은 없다.
신뢰성을 흔드는 원인은 서로 다르다. 입력 자체가 조금만 달라도 답이 크게 달라지는 문제가 있고, 좋은 문제를 나쁜 계산절차로 풀어 오차를 키우는 경우가 있으며, 충분히 반복하지 않았거나 너무 작은 두 수를 빼면서 유효한 자릿수를 잃는 경우도 있다. 원인을 나누지 않으면 정밀도만 높이거나 반복 횟수만 늘리는 식의 처방을 하게 된다.
이 절의 목표는 공식을 많이 외우는 것이 아니다. 문제의 민감도, 알고리즘의 안정성, 계산 중 생긴 오차와 결과 검증을 한 흐름으로 설명하는 능력을 기른다. 다음 절에서 근 찾기·선형계·보간·수치미분·수치적분을 배울 때도 같은 판단틀을 반복해서 사용한다.
수치해석: 근삿값과 그 신뢰성을 함께 다룬다
기호해(symbolic solution)는 근삿값이 아니라 사칙연산·거듭제곱·제곱근 같은 기호식으로 정확히 나타낸 답이다. 수치해석(numerical analysis)은 정확한 기호해를 직접 얻기 어렵거나 계산비용이 큰 수학 문제를 유한정밀도의 근삿값으로 풀고, 오차와 신뢰성을 평가하는 방법 체계다.
수치해석 문제는 다음 여섯 요소로 명세한다.
- 입력: 관측값, 계수, 함수, 구간과 초깃값이 무엇인가.
- 목표: 근, 선형계의 해, 보간값, 도함수 또는 적분값 중 무엇을 구하는가.
- 가정: 연속성·미분가능성·역행렬이 존재하는 비특이성처럼 방법이 성립할 조건은 무엇인가.
- 방법: 유한한 연산으로 다음 근삿값을 만드는 규칙은 무엇인가.
- 허용오차와 비용: 어느 척도에서 얼마나 정확해야 하며 시간·메모리 예산은 얼마인가.
- 검증: 잔차, 독립 계산, 정밀도·간격 변화로 결과를 어떻게 확인할 것인가.
따라서 근삿값을 출력했다는 것은 완료조건이 아니다. 입력과 가정, 오차척도, 실패 신호와 검증결과까지 있어야 계산결과를 의사결정에 사용할 수 있다.
전체에서 어디인가: 입력부터 검증까지의 신뢰성 사슬
현실·관측의 측정·모델링 오차가 수학 문제 F(d)=y의 입력을 바꾼다. 그 작은 입력변화에 따른 정확한 출력의 변화는 문제의 조건성이다. 알고리즘 선택·이산화 후 유한정밀도 계산의 반올림·절단·반복 오차가 계산값 ŷ에 미치는 영향은 알고리즘의 안정성 관점으로 평가한다. 잔차·오차경계·독립 계산·민감도 시험으로 사용 가능 여부 또는 재계산을 판정한다. 두 경로의 차이는 아래 전방·후방오차 관계 도식에서 함께 대조하고, 실제 진단은 일곱 단계 검증을 사용한다.
정확한 문제 F의 입력 변화는 문제 자체가 입력 변화에 얼마나 민감한가를, 알고리즘 A의 계산 경로는 선택한 알고리즘이 계산 중 오차를 얼마나 통제하는가를 묻는다. 마지막 검증은 두 원인을 다시 분리해 문제가 어려운가, 방법이 나쁜가, 아직 충분히 계산하지 않았는가를 판단한다.
먼저 알아둘 것
함수는 입력과 출력을 연결하고, 유한 비트와 부동소수점은 실수를 근사해 표현한다. 앞의 수치 표현 기초에서는 절대·상대오차와 반올림·절단·상쇄오차를 배웠다. 여기서는 그 오차가 문제의 민감도와 알고리즘을 통과하면서 얼마나 증폭되는지를 판단한다.
1. 오차와 조건성: 오차의 다섯 경로를 분리한다
- 입력 오차: 센서·표본·계수의 측정 또는 저장값이 실제 값과 다르다.
- 모델 오차: 현실을 단순화한 수학식이 관심 현상을 완전히 표현하지 못한다.
- 이산화·절단 오차: 연속식이나 무한과정을 유한한 간격·항·단계로 바꾼다.
- 반올림 오차: 실수와 중간결과를 제한된 형식으로 표현하고 연산하면서 차이가 생긴다.
- 반복 오차: 정확한 해에 도달하기 전에 반복을 멈추거나 반복이 정체·발산한다.
이 다섯 값을 무조건 정확히 더할 수 있는 것은 아니다. 부호와 상관관계, 전파 방식이 다르기 때문이다. 실무에서는 각 경로의 상한이나 추정치, 문제 조건성과 알고리즘의 증폭을 기록해 보수적인 오차예산을 만들고, 결과 검증으로 추정이 타당한지 확인한다.
정밀도를 높이면 주로 반올림 오차를 줄일 수 있지만 모델 오차를 고치지는 못한다. 간격을 줄이면 이산화 오차가 감소할 수 있지만 연산 수와 반올림 영향이 커질 수 있다. 먼저 지배적인 경로를 찾아야 한다.
조건성: 문제 자체가 입력 변화에 민감한 정도
문제를 입력 d를 정확한 출력 y=F(d)로 보내는 관계라고 하자. 입력이 d+Δd로 바뀌어 출력이 y+Δy=F(d+Δd)가 되었다고 표시한다. 이처럼 분석을 위해 입력에 가하는 작은 변화 Δd를 섭동(perturbation)이라고 한다. 조건성(conditioning)은 입력의 작은 변화가 문제의 정확한 출력에 얼마나 크게 반영되는지를 나타내는 문제 자체의 민감도다. 같은 문제를 어떤 프로그램으로 풀었는지와 무관하게 정의한다.
벡터의 크기를 재는 규칙을 노름(norm)이라고 한다. 예를 들어 벡터 z=(z₁,…,zₙ)의 2-노름은 ||z||₂=√(z₁²+…+zₙ²)이며, 어떤 노름을 선택하느냐에 따라 변화의 수치가 달라질 수 있으므로 조건수와 오차에는 사용한 노름을 함께 적는다.
입력과 출력이 0이 아니고 상대변화가 의미 있는 국소 범위에서는 다음 비율을 생각할 수 있다.
상대 조건수 ≈ 작은 허용 입력변화에서 가장 큰 출력 상대변화 비율
= ( ||Δy|| / ||y|| ) / ( ||Δd|| / ||d|| )의 최댓값 또는 상한값이 작으면 양호 조건(well-conditioned), 매우 크면 불량 조건(ill-conditioned)이라고 부른다. 이 식은 변화가 충분히 작고 선택한 노름과 입력·출력 척도가 명시되었다는 전제의 국소 척도다. 0 근처이거나 단위가 다른 성분을 섞으면 절대 조건수나 성분별 척도가 더 적절할 수 있다.
작은 측정 상황으로 이 비율을 읽어 보자. 자체 교육 예제로 용기 무게는 정확히 100g이고, 용기와 내용물을 합친 측정값 d에서 100g을 빼 내용물 무게 y=d−100을 구한다고 하자. d=100.01g이면 y=0.01g이다. 측정값이 0.001g 커지면 d는 100.011g, 정확한 계산 결과는 y=0.011g이 된다. 입력 상대변화는 0.001/100.01≈0.00001, 출력 상대변화는 0.001/0.01=0.1, 즉 10%다. 똑같은 0.001g 변화가 아주 작은 내용물 무게에 비하면 크기 때문에 상대변화가 약 10001배 증폭된다.
내용물이 1g이라서 d=101g이었다면 같은 0.001g 변화의 출력 상대변화는 얼마인가? 0.001/1=0.001=0.1%다. 계산 알고리즘을 바꾸지 않았는데도 문제의 입력 위치와 출력 크기에 따라 민감도가 달라진다. 소수점 자릿수를 더 출력하면 측정오차가 사라진다고 생각했다면 d가 바뀔 때 정확한 y 자체가 바뀌는 위 계산으로 돌아간다. 용기 무게에도 오차가 있다면 그 입력까지 별도로 포함해야 하므로 이 예의 고정 100g 가정을 그대로 사용할 수 없다.
불량 조건 문제는 입력의 마지막 몇 자리만 달라도 정확한 답 자체가 크게 달라진다. 안정적인 알고리즘과 높은 정밀도는 불필요한 추가 손실을 줄일 뿐, 입력에 없는 정보를 되살리지는 못한다.
같은 용기 사례의 입력 위치를 바꾸어 계산한다
용기 100g은 정확하고 y=d−100이라는 앞 모형을 유지한다. d=100.02g에서 측정값만 0.001g 증가했을 때 입력·출력의 상대변화와 그 비율을 계산하라. 또 소수점 출력 자릿수를 늘리면 이 민감도가 사라지는지 설명하라. 자체 교육 연습이며 용기 자체의 측정오차는 추가하지 않는다.
척도와 민감도 계산 확인하기
원래 y=0.02g, 바뀐 y=0.021g이다. 입력 상대변화는 0.001/100.02≈0.000009998, 출력 상대변화는 0.001/0.02=0.05, 즉 5%다. 두 상대변화의 비율은 100.02/0.02=5001이다. 앞의 0.01g 내용물보다 같은 절대 입력변화의 상대 영향이 작지만 여전히 크게 증폭된다.
출력 자릿수를 늘려도 바뀐 입력을 정확히 계산한 y 자체가 달라진다. 더 많은 자릿수가 입력에 없던 정보를 복원한다는 추론이 오류다. 조건성의 원래 정의와 0.01g 계산에서 분모로 쓰는 입력·출력을 각각 확인한다. 알고리즘의 상쇄 손실을 줄이는 문제는 식 변형의 안정성과 구분한다.
절대오차·상대오차·전방오차: 출력이 얼마나 다른가
정확한 값 y와 계산값 ŷ가 있을 때 절대오차는 |ŷ-y|, y≠0일 때 상대오차는 |ŷ-y|/|y|다. 벡터에서는 절댓값 대신 어떤 노름을 썼는지 적는다. 예를 들어 참값이 1000, 계산값이 1001이면 절대오차는 1, 상대오차는 0.001, 즉 0.1%다.
전방오차(forward error)는 계산된 출력과 원래 문제의 정확한 출력 사이의 차이다. 가장 직접적인 품질척도지만 실제 문제에서는 정확한 답을 모르기 때문에 그대로 계산하지 못하는 경우가 많다. 알려진 해를 만든 시험문제, 더 높은 정밀도의 기준계산, 엄밀한 상·하한을 이용해 추정한다.
상대오차는 크기가 다른 값을 비교하기 좋지만 참값이 0 또는 매우 가까우면 분모 때문에 해석이 불안정해진다. 이때는 업무상 허용 가능한 절대오차나 혼합 허용치 절대 허용치 + 상대 허용치×|y|처럼 척도를 명시한다.
전방오차·후방오차·잔차: 같은 질문이 아니다
후방오차(backward error)는 계산값이 정확한 답이 되도록 원래 입력을 얼마나 작게 바꾸어야 하는가를 묻는다. 즉 ŷ=F(d+Δd)가 되게 하는 가장 작은 입력 섭동 Δd를 잰다. 후방오차가 작으면 계산은 가까운 문제를 정확히 푼 셈이다.
잔차(residual)는 계산값을 원래 방정식에 대입했을 때 남는 식의 불일치다. 선형계 Ax=b에서 계산값 x̂의 잔차는 r=b-Ax̂다. 잔차는 정확한 해를 몰라도 계산할 수 있지만, 후방오차와 같지는 않으며 문제의 척도에 맞게 정규화해야 비교할 수 있다.
| 척도 | 묻는 질문 | 장점 | 주의점 |
|---|---|---|---|
| 전방오차 | 출력이 참출력에서 얼마나 먼가 | 사용자가 원하는 정확도를 직접 표현 | 참출력이나 신뢰 가능한 경계가 필요 |
| 후방오차 | 계산값을 정확하게 만드는 입력 변화는 얼마인가 | 알고리즘의 안정성을 설명하기 좋음 | 입력별 척도와 허용 가능한 섭동을 정해야 함 |
| 잔차 | 원래 식을 얼마나 어겼는가 | 참해 없이 계산 가능 | 불량 조건이면 작은 잔차도 큰 해 오차와 공존 가능 |
국소적이고 잘 정의된 척도에서는 전방 상대오차가 대략 조건수 × 후방 상대오차 규모로 제한되는 관계를 자주 사용한다. 이는 가정과 상수, 고차항을 생략한 민감도 해석이지 모든 문제에서 성립하는 정확한 등식이 아니다.
가까운 두 수를 빼면 왜 위험한가: 상쇄와 식 변형
큰 x에서 sqrt(x+1)-sqrt(x)를 계산하면 거의 같은 두 수를 빼게 된다. 각 제곱근이 제한된 자릿수로 반올림된 뒤 앞자리 대부분이 소거되면 남은 작은 차이에 상대적으로 큰 오차가 생길 수 있다. 이를 치명적 상쇄(catastrophic cancellation)라고 한다. 뺄셈 자체가 틀린 것이 아니라, 이미 반올림된 가까운 값을 빼면서 유효한 정보가 사라지는 상황이다.
분자와 분모에 제곱근 항 사이의 부호만 반대로 한 켤레식을 곱하면 수학적으로 같은 식을 얻는다.
sqrt(x+1) - sqrt(x)
= ((x+1)-x) / (sqrt(x+1)+sqrt(x))
= 1 / (sqrt(x+1)+sqrt(x))두 번째 식은 큰 x에서 가까운 값의 뺄셈을 피한다. 검증할 때는 여러 크기의 x와 더 높은 정밀도 기준값으로 두 식을 비교한다. 다만 식 변형은 정의역과 오버플로·언더플로 경로를 바꿀 수 있으므로 수학적으로 동치와 모든 유한정밀도 입력에서 같은 동작을 동일시하지 않는다.
중간값 손실만 분리해 보려고 입력 x=10000은 정확하고 두 제곱근 결과를 각각 유효숫자 4자리로 반올림한다고 가정하자. sqrt(10001)≈100.004999875는 100.0, sqrt(10000)=100도 100.0이 되어 직접 뺄셈은 0을 돌려준다. 원래 차이는 약 0.004999875이므로 0은 그 작은 답을 모두 잃은 값이다. 반면 변형식은 1/(100.0+100.0)=1/200.0=0.005000을 주어 작은 양의 차이를 보존한다. 이는 제곱근 출력 반올림을 고립한 교육 모형이며 모든 단계가 같은 방식으로 반올림되는 특정 하드웨어 실측은 아니다.
2. 알고리즘 안정성과 조건수
수치적 안정성: 알고리즘이 불필요한 오차를 키우지 않는 성질
수치적 안정성(numerical stability)은 주어진 문제를 푸는 알고리즘이 반올림·절단 같은 계산 오차를 결과에서 과도하게 증폭하지 않는 성질이다. 조건성이 문제 F의 성질이라면 안정성은 F를 계산하는 구체적 알고리즘과 정밀도·연산순서의 성질이다.
특히 후방 안정(backward stable) 알고리즘은 계산결과를 원래 입력과 가까운 입력에 대한 정확한 답으로 해석할 수 있다. 여기서 가까움은 업무 허용오차가 아니라 계산 정밀도의 반올림 규모를 기준으로 정한다. 이 절에서는 입력·출력의 상대오차가 정의되는 범위에서 단위 반올림오차 u를 기준으로 한다. u는 고정한 반올림 방식과 정상 표현범위에서 한 번의 연산이 만드는 상대 반올림오차 규모의 상한이며 간격과 정밀도의 절충에서 다시 사용한다.
허용하는 입력 섭동과 노름, 알고리즘의 적용 범위를 정했을 때, 후방 안정은 그 범위에서 후방 상대오차를 적당한 상수배 C·u로 제한하는 성질이다. 상수 C는 문제 크기·연산구조 등에 의존할 수 있지만 u를 줄일수록 제한 없이 커지는 상수로 잡아 조건을 무의미하게 만들지 않는다. 전방 안정(forward stable)은 이 상대오차 모형에서 전방오차가 문제의 민감도에 의해 피할 수 없이 생기는 조건수×u 규모의 적당한 상수배인 경우를 뜻한다. O(u)는 u가 작아질 때 상수배 u로 제한되는 차수를 나타낸다.
이는 Higham의 안정성 설명에 따른 명시적 관례다. 0 근처의 출력, 벡터·행렬 또는 특정 입력만 허용하는 알고리즘에서는 절대·성분별 척도와 적용 조건을 따로 정해야 한다. 한 입력에서 업무 허용오차를 충족했다는 관측과, 정한 적용 범위에서 알고리즘이 위 오차 차수를 만족한다는 안정성 판정은 구분한다.
후방 안정이어도 문제가 불량 조건이면 작은 입력 섭동이 큰 출력 차이로 증폭될 수 있다. 반대로 문제가 양호 조건이어도 불안정한 알고리즘은 계산 중 불필요한 자릿수 손실을 만든다. 좋은 결과에는 문제의 조건성 × 알고리즘의 안정성 × 충분한 정밀도와 종료가 함께 필요하다.
같은 용기 계산으로 안정성과 허용오차를 따로 판정한다
용기 100g이 정확하고 F(d)=d−100이라는 기존 모형을 유지한다. 100.01≤d≤101에서 가상 알고리즘 계열 A_u(d)=F(d(1+u))를 생각하자. u는 작고 양수이며 이 식 자체는 정확한 실수연산으로 계산한다고 가정한다. 실제 부동소수점 구현의 실측이 아니라, 입력 상대섭동 u만 생기는 알고리즘 오차 모형이다. 계산값을 정확하게 만드는 입력 변화는 Δd=d·u이므로 후방 상대오차는 u이고, 전방 상대오차는 d·u/(d−100)=조건수×u다. 이 범위의 가상 계열은 앞에서 정한 후방·전방 안정의 차수를 만족한다.
d=100.01g, u=0.00001이면 참출력은 0.01g, 바뀐 입력은 100.0110001g, 계산출력은 0.0110001g이다. 후방 상대오차는 0.00001이지만 전방 상대오차는 0.0010001/0.01=0.10001, 즉 10.001%다. 조건수 10001의 증폭과 일치한다. 업무가 상대오차 1% 이하를 요구한다면 안정성의 차수를 만족해도 이 정밀도에서는 결과를 수용할 수 없다. 입력품질·문제 민감도·정밀도와 실제 오차경계를 함께 봐야 한다.
반대로 F(d)=d에서 A_u(d)=1.005d라는 고정 편향을 생각하면 상대오차 0.5%는 업무 허용치 1% 안에 든다. 그러나 오차가 u와 무관하게 고정되어 u를 줄여도 O(u)로 감소하지 않는다. 따라서 한 번의 허용치 통과만으로 반올림 규모에 맞는 안정성을 입증할 수 없다. 두 가상 계열은 기존 전방·후방오차 도식의 입력 섭동·정확한 F·계산 A·출력 비교를 수치로 읽는 예이며, 특정 라이브러리나 장비의 안정성 판정 결과가 아니다.
조건성과 안정성을 섞지 않는 네 칸
| 문제 | 알고리즘 | 기대와 조치 |
|---|---|---|
| 양호 조건 | 안정적 | 입력·반올림 규모에 상응하는 신뢰 가능한 결과를 기대하고 잔차·독립계산으로 확인 |
| 양호 조건 | 불안정 | 방법·식·연산순서를 바꾸거나 안정화하고 다시 계산 |
| 불량 조건 | 안정적 | 입력오차가 본질적으로 증폭됨. 조건수·오차경계와 필요한 입력품질·정밀도를 보고 |
| 불량 조건 | 불안정 | 문제 민감도와 계산 손실이 겹침. 재모형화·스케일링(변수와 식의 값 크기 차이를 줄이는 조정)·방법 교체·정밀도 상향을 함께 검토 |
결과가 틀렸다 → 알고리즘이 불안정하다고 바로 결론 내리지 않는다. 입력을 조금 바꿔 정확한 답 자체가 크게 움직이는지, 같은 문제를 다른 안정적인 방법과 정밀도로 풀어도 결과가 민감한지 분리 시험한다.
선형계의 조건수: 작은 잔차를 해 오차로 해석하는 다리
정사각행렬 A에 대해 단위행렬 I는 Ix=x처럼 벡터를 바꾸지 않는 행렬이다. A⁻¹A=AA⁻¹=I를 만족해 A의 선형변환을 되돌리는 행렬 A⁻¹을 역행렬이라고 한다. 역행렬이 있으면 A는 가역, 없으면 특이행렬이다.
가역행렬 A와 선택한 유도 노름, 즉 벡터 크기의 변화와 일관되게 정한 행렬 노름에서 선형계 Ax=b의 조건수는 다음과 같다.
κ(A) = ||A|| · ||A⁻¹||같은 노름에서 κ(A)≥1이며, 값이 클수록 b 또는 A의 작은 변화가 해에 크게 반영될 수 있다. 특이행렬은 역행렬이 없으므로 이 식으로 유한한 조건수를 갖지 않으며 보통 조건수를 무한대로 취급한다. 행렬 크기만으로 조건을 알 수 없고, 어떤 노름과 스케일을 사용했는지 적어야 한다.
계산값 x̂에 대해 r=b-Ax̂를 구하면 잔차를 얻는다. 잔차가 작다는 것은 방정식을 거의 만족한다는 뜻이지만, A⁻¹의 크기가 크면 x-x̂=A⁻¹r 관계 때문에 해 오차는 클 수 있다. 따라서 선형계 보고에는 정규화한 잔차 + 조건수 추정 + 가능하면 전방오차 경계를 함께 둔다.
간격을 무조건 줄이면 더 정확해지는가: 절단과 반올림의 절충
매끄러운 함수의 중앙차분 (f(x+h)-f(x-h))/(2h)은 이상적인 실수연산에서 전형적으로 h² 규모의 절단오차를 가진다. 그러나 실제 계산에서는 두 가까운 함숫값의 반올림 차이를 2h로 나누므로 h가 지나치게 작아지면 반올림 영향이 커질 수 있다.
함수 크기와 도함수가 일정 범위에 있고, 반올림 방식을 고정한 정상 표현범위 안에서 한 번의 반올림이 만드는 상대오차 규모의 상한을 단위 반올림오차 u라 두는 단순 모형에서는 총오차 규모를 다음처럼 생각할 수 있다.
총오차(h) ≈ C1·h² + C2·u/h
절단 반올림 증폭여기서 C1, C2는 함수의 도함수 크기와 값의 스케일에 따라 달라지는 양의 상수다. 이는 보편적인 정확한 등식이나 모든 함수의 최적 간격 공식이 아니다. 매끄러움, 함수 평가오차와 스케일에 의존하는 설계용 근사 모형이다. 실제로는 h, h/2, 2h에서 계산값을 비교하고, 더 높은 정밀도로 반복하며, 예상 수렴차수와 반올림 정체가 나타나는지 확인한다.
정밀도 상향은 비용이 들고 입력·모델오차는 줄이지 않는다. 간격 축소도 평가 횟수와 상쇄 위험을 늘릴 수 있다. 정확도 목표에 맞춰 간격·정밀도·방법 차수·계산비용을 함께 선택한다.
3. 수렴·종료와 검증
수렴과 종료는 다르다
수렴(convergence)은 간격을 0으로 보내거나 반복 횟수를 늘릴 때 근삿값의 수열이 목표값으로 가까워지는 이론적 성질이다. 오차를 eₖ라 할 때 p차 수렴은 충분히 목표값 가까이에서 어떤 양의 상수 C에 대해 |eₖ₊₁|≈C|eₖ|ᵖ 관계를 보이는 성질이다. 선형수렴인 p=1에서는 오차가 줄도록 전형적으로 0<C<1이 필요하고, p=2이면 이차수렴이다. 이차수렴 방법도 초깃값이 수렴영역 밖이면 발산할 수 있다.
종료(stopping)는 유한한 계산을 실제로 언제 멈출지 정하는 운영 규칙이다. 다음 신호를 조합한다.
- 정규화 잔차가 허용치 이하인가.
- 연속한 근삿값의 변화가 절대·상대 허용치 이하인가.
- 오차 추정치 또는 상·하한이 요구 정확도를 만족하는가.
- 최대 반복·시간을 넘지 않았고 값이 유한한가.
- 변화가 작아도 잔차가 줄지 않는 정체가 아닌가.
|x(k+1)-x(k)|만 작다고 성공으로 판정하면 안 된다. 나쁜 스케일, 반올림 정체 또는 갱신값은 더 움직이지 않지만 원래 식을 만족하지 않는 상태에서도 변화량은 작아질 수 있다. 성공·허용 가능한 근사·실패를 서로 다른 종료상태로 기록한다.
결과를 믿기 전의 일곱 단계
- 문제와 척도 고정: 입력 단위·범위, 목표량, 노름, 절대·상대 허용치를 정한다.
- 가정 검사: 정의역, 연속성·미분가능성, 행렬 비특이성, 구간의 부호변화처럼 방법의 전제를 확인한다.
- 조건성 평가: 입력 섭동 시험이나 조건수 추정으로 문제 자체의 민감도를 파악한다.
- 잔차·불변조건 계산: 원래 식의 불일치와 보존되어야 할 값·범위를 확인한다.
- 해상도·정밀도 변화: 간격·반복 허용치·정밀도를 바꾸어 결과가 예상 방향과 차수로 안정되는지 본다.
- 독립 대조: 다른 알고리즘, 알려진 특수해, 작은 문제의 고정밀도·직접계산과 비교한다.
- 증적 기록: 방법·버전·정밀도·입력 해시·종료상태·잔차·오차추정·실패경고를 함께 남긴다.
선형계에서는 잔차를 더 높은 정밀도로 계산하고 보정량 δ에 대한 Aδ=r을 풀어 x̂←x̂+δ로 고치는 반복적 정제(iterative refinement)를 사용할 수 있다. 정제는 잔차와 해를 개선할 수 있지만 조건성이 지나치게 나쁘거나 보정계산 자체가 부정확하면 보장을 대신하지 못한다.
실패 신호를 결과와 함께 반환한다
| 실패 신호 | 가능한 원인 | 확인 | 대응 |
|---|---|---|---|
| 잔차는 작지만 방법별 해가 크게 다름 | 불량 조건·비유일성 | 조건수·입력 섭동·해 오차 경계 | 입력품질 개선, 재모형화, 민감도와 자릿수 제한 보고 |
| 반복값 또는 잔차가 커짐 | 수렴영역 밖·불안정 갱신 | 초깃값·도함수·각 단계의 갱신량과 잔차 기록 | 근 포함 구간 보장법, 갱신량 제한, 방법 교체 |
| 변화량은 작지만 잔차가 큼 | 정체·잘못된 스케일 | 정규화 잔차와 부동소수점 간격 | 스케일링·정밀도·종료규칙 수정 |
| 간격 축소 뒤 오차가 다시 커짐 | 반올림·상쇄 지배 | 정밀도와 간격을 함께 변화 | 더 안정적인 식·고차방법·적절한 간격 |
| 숫자가 아님(Not a Number, NaN)·무한대·범위 이탈 | 정의역 위반·0 나눗셈·오버플로 | 최초 비유한 중간값과 입력경계 | 입력 검증, 스케일 변환, 안전한 식 |
| 재실행 환경마다 마지막 자릿수 변동 | 연산순서·병렬 축약·라이브러리 차이 | 환경·순서·반올림 설정 비교 | 재현성 요구 수준 명시, 허용오차 기반 판정 |
실패를 조용히 숫자 하나로 바꾸지 않는다. 계산값과 함께 상태코드, 사용한 반복 횟수, 잔차와 경고를 반환해야 상위 시스템이 재시도·격리·사람 검토를 선택할 수 있다.
4. 계산·오차예산과 의사결정
직접 확인: 작은 잔차인데 해는 크게 틀릴 수 있다
다음 선형계를 생각하자.
위첨자 ᵀ는 가로로 적은 성분을 세로 열벡터로 읽게 하는 전치 표기다.
A = [1 1 ], b = [2 ], 정확한 해 x = [1]
[1 1.0001] [2.0001] [1]계산값을 x̂=[2,0]ᵀ라고 하면 첫 행은 1×2+1×0=2, 둘째 행은 1×2+1.0001×0=2이므로 Ax̂=[2,2]ᵀ다. 잔차는 각 행의 우변에서 이 계산값을 빼 r=b-Ax̂=[2−2,2.0001−2]ᵀ=[0,0.0001]ᵀ가 된다. 이 예에서 2-노름 상대잔차를 ||r||₂/||b||₂로 두면 10⁻⁴/√(2²+2.0001²)≈3.54×10⁻⁵로 작다. 그러나 상대 해 오차는 ||x-x̂||₂/||x||₂=||[-1,1]ᵀ||₂/||[1,1]ᵀ||₂=√2/√2=1이다. 즉 해가 원래 해만큼 멀리 떨어져 있다.
이 행렬의 2-노름 조건수는 반올림해 약 40002다. 두 행이 거의 같아 작은 우변 변화가 해에서 크게 증폭될 수 있다. 이 예는 잔차가 작으니 정답이라는 판정을 반박한다. 잔차가 실제 해 오차를 제한하려면 조건수 또는 이에 해당하는 오차경계를 함께 보아야 한다.
같은 2-노름에서 b≠0이면 ||x−x̂||₂/||x||₂ ≤ κ₂(A)·||r||₂/||b||₂라는 상한을 쓸 수 있다. 이 예에 대입하면 오른쪽은 약 40002×3.54×10⁻⁵≈1.42다. 실제 상대 해 오차 1을 허용할 만큼 큰 상한이므로, 작은 상대잔차만 보고 높은 정확도를 보장할 수 없다는 결론과 일치한다. 상한은 실제 오차와 같은 값이 아니라 그보다 작지 않게 제한하는 값이다.
오차예산 예: 총 허용오차를 계산결정으로 바꾼다
출력의 보수적 절대오차 상한을 10⁻³ 이하로 관리한다고 하자. 다음 배분은 하나의 설계 예시다.
| 경로 | 배정 상한 | 확인 방법 |
|---|---|---|
| 입력오차의 조건성 증폭 | 2×10⁻⁴ | 입력 불확도와 조건수·섭동 시험 |
| 이산화·절단 | 4×10⁻⁴ | 간격을 절반으로 줄인 결과와 수렴차수 비교 |
| 반복 미완료 | 2×10⁻⁴ | 잔차·오차경계·종료기록 |
| 반올림·상쇄 여유 | 1×10⁻⁴ | 정밀도 상향·안정적 식 대조 |
| 검증·미모형화 여유 | 1×10⁻⁴ | 독립 방법·경계사례 대조 |
상한을 단순 합하면 10⁻³이다. 이는 각 경로가 독립이라는 확률 주장이 아니라 최악을 보수적으로 합한 관리기준이다. 실제 추정이 배정을 넘으면 남은 예산을 임의로 빌려 쓰지 말고 간격·정밀도·입력품질·방법 또는 전체 요구조건을 재검토한다.
무엇을 먼저 바꿀 것인가
| 먼저 확인할 질문 | 미충족 또는 미확인일 때의 조치 |
|---|---|
| 문제 조건성이 나쁜가 | 입력품질·스케일·재모형화와 민감도를 보고한다. |
| 잔차와 종료가 정상인가 | 반복·초깃값·종료규칙을 수정한다. |
| 정밀도·간격 변화에 예상대로 수렴하는가 | 상쇄·불안정 식을 확인하고 방법을 교체한다. |
| 독립 방법과 일치하는가 | 가정·구현·기준값을 조사한다. |
| 원래 정한 허용오차를 충족하는가 | 예이면 허용 가능한 결과로 기록한다. 아니오/미확인은 개선·추가 검증하거나 미달을 보고한다. |
표는 위쪽 원인부터 내려가는 진단 순서다. 독립 방법 일치만으로 마지막 요구 정확도 판정을 생략하지 않는다.
높은 정밀도는 마지막 만능버튼이 아니다. 조건성이 요구 정확도보다 나쁘면 입력자릿수부터 부족할 수 있고, 모델이 잘못되었으면 더 정밀하게 잘못된 모델을 계산할 뿐이다. 가장 위쪽 원인부터 내려가며 비용을 쓴다.
두 방법이 같은 입력오류나 근사 가정을 공유하면 서로 일치하면서도 둘 다 틀릴 수 있다. 교차검증은 신뢰를 높이는 증거지만 원래 정한 정확도·오차예산을 만족한다는 별도 근거를 대신하지 않는다.
수치해석의 핵심 학습 논점
수치해석은 계산공식뿐 아니라 전제와 결과의 신뢰성을 설명해야 한다. 이 절과 다음 절에서 다음 여섯 가지를 점검하자.
- 수치문제를 입력·목표·가정·방법·허용오차·검증으로 명세한다.
- 절대·상대·전방·후방오차와 잔차를 구분하고 오차 전파를 설명한다.
- 문제의 조건성과 알고리즘의 수치적 안정성을 분리해 진단한다.
- 반올림·절단·이산화·반복 오차, 수렴과 종료, 실패조건을 연결한다.
- 근 찾기·선형계·보간·수치미분·수치적분의 원리와 선택기준을 적용한다.
- 잔차·섭동·해상도·정밀도·독립 계산으로 결과 신뢰성을 검증한다.
이 절에서는 공통 판단축을 배우고, 다음 절에서는 구체적인 수치해법에 적용한다. 위 5번의 해법 이름은 전체 지도를 먼저 보여 주기 위한 것이며 정의와 작동원리는 다음 절에서 설명한다. 미분방정식과 Runge–Kutta 방법은 이 두 절에서 다루지 않는다.
5. 시험 답안 전환
시험에서는 어떻게 묻는가: 10점
다음은 문제의 조건성과 계산의 안정성을 구별하는 자체 제작 문제다. 실제 기출이나 공식 채점 기준을 뜻하지 않는다.
수치해석에서 조건수와 수치적 안정성을 구분하고 계산결과의 신뢰성을 확인하는 방법을 설명하시오.
구분은 문제와 알고리즘의 소유 주체를 나누라는 요구다. 신뢰성 확인은 정의만 쓰지 말고 잔차·오차척도·섭동·정밀도 변화와 독립 대조 같은 검증행동을 요구한다. 조건수가 크다는 이유만으로 알고리즘이 불안정하다고 쓰거나, 잔차가 작으면 전방오차도 작다고 단정하면 핵심을 놓친다.
답안 목차·풀이·교정 근거 보기
10점 답안 목차
- 정의와 관계
- 조건성은 문제의 민감도, 안정성은 알고리즘의 오차통제 성질
- 오차척도
- 전방오차·후방오차·잔차, 조건수에 의한 연결
- 네 경우 비교
- 양호/불량 조건 × 안정/불안정 알고리즘
- 검증과 조치
- 잔차, 입력 섭동, 정밀도·간격 변화, 독립 방법
10점 답안 도식
상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.
위의 정확한 경로는 y=F(d), 아래 경로는 가까운 입력 d+Δd가 F를 통과해 계산값 ŷ와 일치하는 경우다. 후방오차는 이런 일치를 만드는 최소 입력 섭동을 정한 척도에서 잰다. 알고리즘 A의 반올림·절단이 있는 경로와 정확한 F의 경로는 다른 관계다. 오른쪽 점선은 원출력과 계산출력의 전방오차 비교이며 인과 흐름이 아니다. 조건성은 Δd에 대한 정확한 출력 변화, 후방 안정성은 작은 후방오차를 만드는 알고리즘의 성질이다. 국소 척도에서 전방 상대오차 ≈ 또는 ≤ 조건수×후방 상대오차라는 규모/상한은 가정·상수·고차항을 생략한 관계이며 보편적 등식이 아니다.
10점 모범답안
조건성은 입력의 작은 변화가 문제의 정확한 출력에 얼마나 크게 반영되는지를 나타내는 문제 자체의 민감도다. 상대 조건수는 정한 척도와 국소 범위에서 출력 상대변화와 입력 상대변화의 최악비율로 볼 수 있다. 조건수가 크면 안정적인 알고리즘으로 계산해도 입력오차가 결과에서 크게 증폭될 수 있으므로 입력품질과 유효자릿수를 함께 보고해야 한다.
수치적 안정성은 주어진 문제를 푸는 알고리즘이 반올림·절단 같은 계산오차를 과도하게 키우지 않는 성질이다. 후방 안정 알고리즘의 계산값은 원래 입력과 가까운 입력에 대한 정확한 답으로 해석할 수 있다. 따라서 양호 조건·안정 알고리즘은 신뢰성이 높고, 불량 조건이면 입력·모델과 민감도를 개선하며, 불안정 알고리즘이면 식·연산순서·방법을 바꾼다.
전방오차는 계산출력과 참출력의 차이, 후방오차는 계산출력을 정확하게 만드는 최소 입력섭동, 잔차는 계산값을 원래 식에 대입한 불일치다. 잔차가 작아도 불량 조건이면 해 오차가 클 수 있다. 그러므로 정규화 잔차와 조건수·오차경계를 함께 보고, 입력 섭동, 간격·정밀도 변화, 다른 알고리즘이나 고정밀도 기준값으로 결과를 교차검증한다.
시험에서는 어떻게 묻는가: 25점
다음 역시 이 절의 본문만으로 풀 수 있게 만든 자체 제작 문제다.
유한정밀도 수치계산 결과의 신뢰성 평가체계를 조건수, 전·후방오차, 잔차, 수렴·종료기준, 실패 및 검증 관점에서 설명하시오.
평가체계는 용어 여섯 개를 나열하라는 말이 아니다. 문제 명세에서 오차가 생성·증폭되는 경로, 판정척도, 실행 중 종료와 실패, 사후 검증과 조치까지 폐루프로 연결해야 한다. 특히 수렴이라는 이론적 성질과 실제 종료규칙을 분리해야 한다.
답안 목차·풀이·교정 근거 보기
25점 답안 목차
- 신뢰성의 정의와 문제 명세
- 입력·목표·가정·방법·허용오차·검증
- 오차 생성과 전파
- 입력·모델·이산화·반올림·반복 오차
- 조건성과 안정성의 분리
- 평가척도
- 절대·상대·전방·후방오차, 잔차와 조건수
- 수렴·종료·실패 통제
- 잔차·변화량·오차추정·상한·정체·비유한값
- 검증과 개선 폐루프
- 섭동, 간격·정밀도 변화, 독립해법, 증적과 오차예산
25점 답안 도식
입력·목표·가정·허용오차를 명세하고 조건성·입력품질·오차예산을 사전 평가한다. 계산에서는 알고리즘 안정성·정밀도·간격·반복을 통제하고, 잔차·변화량·오차추정·상한·실패상태로 실행을 판정한다. 입력 섭동·해상도·고정밀도·독립 방법으로 사후 검증하여 수용하고 증적을 남기거나, 입력/모델/방법/정밀도를 수정하여 재계산한다. 기존 일곱 단계, 진단 질문표, 오차경로 도식이 이 답안의 각 관계를 상세히 다룬다.
25점 모범답안
수치계산의 신뢰성은 유한정밀도 근삿값이 명시한 입력·가정·오차척도와 허용범위 안에서 목표량을 표현하고, 그 판단을 재현 가능한 증적으로 확인할 수 있는 상태다. 먼저 입력, 목표, 수학적 가정, 알고리즘, 노름과 절대·상대 허용치, 계산비용 및 검증방법을 명세한다. 출력 자릿수의 개수는 정확도 보장이 아니다.
오차원인은 입력·모델·이산화 또는 절단·반올림·반복 미완료로 나눈다. 조건성은 입력의 작은 변화가 문제의 정확한 출력에서 얼마나 증폭되는지를 나타내는 문제의 성질이고, 수치적 안정성은 알고리즘이 계산 중 오차를 불필요하게 키우지 않는 성질이다. 불량 조건 문제는 안정적인 알고리즘만으로 치유할 수 없으며, 양호 조건 문제도 불안정한 식과 연산순서로 정확도를 잃을 수 있다. 따라서 입력품질·조건수와 알고리즘·정밀도를 별도 통제로 둔다.
전방오차는 계산출력과 원래 문제의 참출력 사이 차이이고, 후방오차는 계산출력을 정확하게 만드는 최소 입력섭동이다. 잔차는 계산값을 원래 식에 넣었을 때 남는 불일치다. 예를 들어 선형계에서는 r=b-Ax̂를 계산할 수 있지만 작은 잔차만으로 작은 해 오차를 보장하지 못한다. 가역행렬의 조건수 κ(A)=||A||||A⁻¹||가 크면 x-x̂=A⁻¹r에 의해 작은 잔차도 큰 해 오차로 이어질 수 있으므로 정규화 잔차, 조건수 추정과 전방오차 경계를 함께 보고한다.
수렴은 반복 횟수 증가나 간격 감소에 따라 근삿값이 목표값으로 가는 이론적 성질이고, 종료는 유한한 실행의 판정규칙이다. 정규화 잔차, 연속 근삿값 변화, 오차추정 또는 경계, 최대 반복·시간, 정체와 비유한값을 조합한다. 변화량 하나만 작으면 갱신값은 더 움직이지 않지만 원래 식을 만족하지 않는 상태나 반올림 정체를 성공으로 오판할 수 있으므로 성공·허용 근사·실패 상태를 구분하고 반복 횟수와 경고를 남긴다.
사후 검증은 입력을 허용범위에서 섭동하고, 간격·반복 허용치·정밀도를 바꾸어 예상 수렴차수와 안정화를 확인하며, 다른 알고리즘·알려진 특수해·작은 고정밀도 기준계산과 대조한다. 실패하면 원인 순서대로 입력품질·모델·스케일, 알고리즘과 식, 간격·정밀도·종료기준을 수정한다. 입력 해시, 환경, 방법, 정밀도, 종료상태, 잔차·오차추정과 독립 검증결과를 기록하여 계산결과와 증적을 함께 인도한다.
근거와 현행성
수치표현·오차척도는 미국 국립표준기술연구소(NIST)의 Digital Library of Mathematical Functions(DLMF) 1.2.7 §3.1, 선형계·조건수·잔차는 §3.2, 반복수열의 수렴은 §3.8과 대조했다. DLMF 버전 1.2.7의 릴리스일은 2026-06-15이며 이 절의 기준 확인일은 2026-09-01이다. 조건성과 안정성의 구분·상쇄·오차종류는 NIST 기관간·내부 보고서(NIST Interagency/Internal Report, NISTIR) 4763의 §2.1과 Appendix A를 교육적 보조 근거로 사용했고, 전방·후방오차 정의는 당시 미국 국가표준국 기관간 보고서(National Bureau of Standards Interagency Report, NBSIR) 76-1094(R)의 해당 절을 레거시 직접 근거로 교차확인했다. 두 보고서는 각각 1992년·1976년 자료이며, NISTIR Appendix A의 1985년판 IEEE 설명은 현행 표준 설명에 사용하지 않았다.
부동소수점의 현행 규범의 근거는 미국 전기전자공학자협회(IEEE)의 IEEE 754-2019이며, 2026-09-01 현재 IEEE P754는 확정 표준이 아니라 개정 프로젝트다. 본문은 공개된 표준 범위를 넘어 세부 적합성을 단정하지 않는다. 2027 공개 직전에 IEEE 754의 개정 상태를 다시 확인해야 한다.
표·도식·2×2 행렬·상쇄식·오차예산·답안은 원문 문장이나 도식을 옮기지 않고 교재용으로 독자 구성하고 계산을 검산했다. 일반 종료 조합과 오차예산은 특정 표준의 의무사항이 아니라 본문의 검증 설계다. IEEE 표준 본문·표·그림은 재현하지 않았으며, 공개 범위와 레거시 교육 보고서의 근거를 구분한다.
30초 정리
- 수치해석은 근삿값뿐 아니라 입력·가정·허용오차·실패와 검증까지 다룬다.
- 조건성은 문제의 입력 민감도, 수치적 안정성은 알고리즘의 오차통제 성질이다.
- 전방오차·후방오차·잔차는 서로 다르며, 작은 잔차만으로 작은 해 오차를 보장하지 않는다.
- 수렴은 이론적 성질, 종료는 실행 규칙이므로 잔차·변화량·오차추정·상한·정체를 함께 본다.
- 입력 섭동, 간격·정밀도 변화와 독립 계산으로 확인하고 결과와 증적을 함께 남긴다.