수치 분석 분야에서 수치 안정성은 수학적 알고리즘의 매우 바람직한 속성입니다. 안정성의 정확한 정의는 특히 수치 선형 대수학 및 이산 근사법으로 상미분 방정식과 편미분 방정식을 풀기 위한 알고리즘의 상황에 따라 달라집니다.
"안정성은 입력 데이터에 작은 변화가 있어도 최종 결과가 크게 변동하지 않도록 보장합니다."
수치 선형 대수학에서는 매우 작거나 거의 일치하는 고유값과 같이 특이점에 가까운 문제 근처에서 발생하는 불안정성에 중점을 둡니다. 미분 방정식을 풀기 위한 수치 알고리즘에서는 초기 데이터의 반올림 오류나 작은 변동으로 인해 최종 답과 정확한 해 사이에 큰 편차가 발생할 수 있다는 우려가 있습니다. 일부 수치 알고리즘은 입력 데이터의 작은 변동과 오류를 완화할 수 있지만 다른 알고리즘은 이러한 오류를 증폭시킬 수 있습니다. 근사 오류를 증폭시키지 않는 것으로 표시된 계산은 수치적으로 안정적이라고 합니다.
디지털 분석의 일반적인 작업은 강력한 알고리즘을 선택하는 것입니다. 즉, 입력 데이터에 작은 변화가 있어도 결과가 크게 변하지 않습니다. 반대 현상은 알고리즘 불안정성입니다. 알고리즘에는 근사 방법이 포함되는 경우가 많으며, 경우에 따라 부동 소수점 숫자가 아닌 실수를 사용할 때 알고리즘이 올바른 솔루션에 접근하는 것으로 나타날 수 있습니다. 그러나 이 경우 부동소수점 수의 반올림이나 잘림 오류가 증폭되어 올바른 해와의 편차가 기하급수적으로 커질 수 있으므로 올바른 해로 수렴된다는 보장은 없습니다.
수치선형대수학에서 안정성의 개념은 여러 가지 방법으로 공식화될 수 있습니다. 일반적으로 사용되는 순방향, 역방향 및 혼합 안정성의 정의가 이 분야에 자주 나타납니다. 함수 f가 데이터 x를 해 y에 매핑하는 수치 알고리즘으로 해결된 문제를 고려해 보겠습니다. 알고리즘의 결과 y*는 일반적으로 "참" 솔루션 y에서 벗어납니다. 오류의 주요 원인은 반올림 오류와 잘림 오류입니다.
"알고리즘의 순방향 오류는 결과와 해의 차이입니다. 반면 역방향 오류는 f(x + Δx) = y*가 되는 가장 작은 Δx입니다."
순방향 오류는 y*와 y의 차이입니다. 역방향 오류는 f(x + Δx) = y*에서 가장 작은 Δx입니다. 순방향 오류와 역방향 오류 사이에는 조건수 관계가 있습니다. 순방향 오류의 크기는 기껏해야 조건수와 역방향 오류의 곱입니다. 많은 경우 상대 오차를 고려하는 것이 더 자연스럽습니다. 모든 입력 x에 대해 역방향 오류가 작을 때 알고리즘을 역방향 안정이라고 부릅니다. 물론, "작다"는 상대적인 용어이고, 그 정의는 구체적인 맥락에 따라 달라질 것입니다.
일반적으로 수치 안정성에 대한 보다 일반적인 정의는 순방향 오류와 역방향 오류를 결합한 하이브리드 안정성이라고 합니다. f(x + Δx) - y*도 작도록 작은 Δx가 있도록 인접 문제를 대략적으로 풀 수 있으면 알고리즘이 안정적입니다. 따라서 역방향 안정 알고리즘은 항상 안정적입니다. 순방향 안정성과 관련하여 알고리즘의 순방향 오류를 문제의 조건수로 나눈 값이 상대적으로 작으면 해당 알고리즘은 순방향 안정성을 갖습니다.
미분 방정식을 풀 때 안정성은 다르게 정의됩니다. 수치 상미분 방정식에는 A-안정성과 같은 다양한 수치 안정성 개념이 있습니다. 이러한 개념은 동적 시스템의 특정 안정성 개념, 특히 Lyapunov 안정성과 관련되는 경우가 많습니다. 경직성 방정식을 풀 때는 안정적인 방법을 사용하는 것이 중요합니다.
"계산 시 반올림 오류가 위험한 수준으로 누적되지 않도록 보장하는 수치 확산을 도입하여 안정성을 달성하는 경우도 있습니다."
선형적으로 전개되는 편미분 방정식을 풀기 위한 알고리즘은 단계 크기가 0에 가까워질 때 수치 솔루션의 전체 변화가 제한된 상태로 유지되는 경우 안정적인 것으로 간주됩니다. Lax의 등가 정리(Lax's Equivalence Theorem)는 알고리즘이 일관되고 안정적이면 수렴할 것이라고 말합니다. 그러나 비선형 편미분 방정식의 경우 비선형 방정식의 많은 속성이 선형 방정식에 존재하지 않기 때문에 안정성의 정의가 훨씬 더 복잡합니다.
2의 제곱근(약 1.41421)을 계산하는 것은 잘 정의된 문제입니다. 많은 알고리즘은 x0 = 1.4와 같은 초기 근사값 x0으로 시작한 다음 지속적으로 향상된 추측 x1, x2 등을 계산하여 이 문제를 해결합니다. 유명한 바빌로니아 방법은 공식 xk+1 = (xk + 2/xk) / 2와 함께 사용될 수 있는 일반적인 방법입니다.
다른 방법은 "방법 X"라고 하며 공식은 xk+1 = (xk^2 − 2)² + xk입니다. 각 방법의 몇 가지 반복이 표 아래에 기록되어 있으며 바빌로니아 방법은 초기 추측에 관계없이 빠르게 수렴되는 반면 방법 X는 x0 = 1.4에서 매우 느리게 수렴하고 x0 = 1.42에서 이상하게 발산하는 것을 볼 수 있습니다. 따라서 바빌로니아식 방법은 수치적으로 안정적이라고 하고, 방법 X는 수치적으로 불안정하다고 합니다.
수치 안정성은 기계에 저장된 유효 자릿수에도 영향을 받습니다. 식별성 상실로 인해 발생할 수 있는 결과에 대한 좋은 예는 유효 숫자 4자리만 유지하는 기계에서 찾을 수 있습니다. 예를 들어 동등한 함수 f(x)와 g(x)를 생각해 보세요. f(500)과 g(500)을 계산할 때 두 함수가 동일하더라도 매우 다른 결과를 제공하여 작은 오류가 얼마나 큰 변화로 이어질 수 있는지 보여줍니다.
간단히 말하면, 수치해석에서는 수치적 안정성이 매우 중요하며, 이는 문제 해결의 정확성과 효율성에 영향을 미칩니다. 하지만, 불안정한 조건에서도 안정성을 유지할 수 있는 알고리즘이나 방법은 무엇이라고 생각하시나요?