작은 선형 시스템의 수치 적으로 안정적인 명시 적 솔루션


11

불균일 선형 시스템이 있습니다

Ax=b

여기서 n 4 인 실수 n x n 행렬입니다 . nullspace의 (A)는 식 고유 역 갖도록 제로 치수되도록 보장된다 X = - 1 개 (B)를 . 결과는 적응 방법을 사용하여 해결하려는 ODE의 오른쪽에 들어가므로 솔루션이 Ab 요소의 작은 변형에 대해 매끄럽게하는 것이 중요합니다 . 이 요구 사항과 작은 차원 때문에 A - 1 b에 대한 명시 적 수식을 구현할 것이라고 생각했습니다.An×nn4Ax=A1bAbA1b. 요소는 정확히 0이거나 매우 다른 값을 가질 수 있습니다. 내 질문은 이것이 당신에게 의미가 있고 이것에 대한 안정적인 표현이 있는지입니다. x86 시스템을 C로 코딩하고 있습니다.


나는 이것이 매우 늦다는 것을 알고 있지만 여기에 내 제안이 있습니다. 총 피벗을 사용한 가우시안 제거는 안정적인 것으로 알려져 있으므로 작은 크기의 알고리즘을 하드 코딩하는 것이 좋습니다. 있기 때문에 회전식 복잡 중요 연속 피벗을 선택하는 방법을,로 이어지는 ( N ! ) 이 개 공식의 다른 세트; 교환해야 할 사항을 교체하여 사례 수를 1 2 + 2 2 + n 2로 줄임으로써 이러한 복잡성을 줄일 수 있습니다 . (n!)2(n!)212+22+n2
Yves Daoust

답변:


6

명시적인 수식을 구현하기 전에 "가치가 있습니까?"라는 질문을합니다.

  • 고전적인 가우시안 제거를 사용하는 BLAS + LAPACK에 쉽게 연결할 수있는 동안 이러한 명시 적 수식을 작성, 디버깅 및 검증하는 데 시간을 투자 할 가치가 있습니까?
  • 안정성을 기대하십니까? Cramer의 규칙과 같은 명시 적 수식을 프로그래밍하면 안정성이 향상되지는 않을 것이라고 생각합니다.
  • 속도를 기대하십니까? 이미 전체 프로그램을 프로파일 링했습니까? hese 4x4 시스템을 해결하는 데 어느 정도의 시간이 소요됩니까?
  • 1 년 후 모형을 개선하고 4 개 대신 5 개의 방정식이 필요할 확률은 얼마입니까?

내 충고 : BLAS / LAPACK 조합을 먼저 사용하고, 그것이 작동하는지 확인하고, 전체 프로그램을 프로파일 링하고, 학생에게 명시 적 수식을 구현하도록 요청하십시오 (죄송하지만, 냉소적 임). 속도와 견고성을 비교하십시오.


구현하는 데 걸리는 노력은 약 15 분입니다. 일반적인 1x1, 2x2, 3x3 및 4x4 행렬을 CAS (Maple for me)에 입력하고 뒤집기 때문에 간단합니다. 명시적인 (C와 같은) 결과를 반환해야합니다 (크 래머 규칙에 따라). 두 번째 요점은 정확히 내 관심사입니다. 결과적으로 매트릭스 요소의 고차 곱이 발생합니다. 분명히 이것은 다른 용어의 '거의 취소'로 인해 오류가 발생할 수 있습니다. 그러나 문제가 발생하지 않는 형태로 결과를 작성할 수 있다면 문제입니다. 여기서 속도는 주요 관심사가 아닙니다.
highsciguy

6

내가 아는 유일한 명백한 역 결과는 Cramer 's Rule 이며, 최근 시간에 가우시안 제거와 같은 계산 가능한 것으로 나타났습니다 .O(n3)

AAx b x Adet(A)0xbxA

안전을 위해 가 수치 적으로 순위가 부족하지(예 : 작은 특이 값이 없음).A

Cramer 's Rule의 문제점은 제외하고는 안정성 특성을 알 수 없다는 것입니다 (정방향으로 안정적이지만 역방향으로는 안정적이지 않음). ( N. Higham 의 Numerical Algorithms , 2 판 의 정확성과 안정성을 참조하십시오 .) 신뢰할 수있는 알고리즘으로 간주되지 않습니다. 부분 피벗 (GEPP)을 통한 가우시안 제거가 선호됩니다.n=2

BLAS + LAPACK을 사용하여 ODE 해결에서 GEPP를 수행 할 때의 문제점은 암시 적 ODE 방법에 사용되는 유한 차분 일 것으로 예상합니다. 나는 사람들이 오른쪽 평가의 일환으로 선형 프로그램을 해결했으며, 순진하게 (단순 알고리즘을 호출하여 선형 프로그램을 오른쪽에 연결하면) 알고리즘의 정확성을 크게 떨어 뜨렸다는 것을 알고 있습니다. 계산 된 솔루션 실질적으로는 문제를 해결하는 데 소요되는 시간을 증가. 내 연구실 직원은 이러한 문제를 훨씬 더 효율적이고 정확하게 해결하는 방법을 알아 냈습니다. 그의 출판물이 아직 출시되었는지 확인해야합니다. GEPP를 사용하든 Cramer 's Rule을 사용하든 관계없이 비슷한 문제가 발생할 수 있습니다.

문제에 대한 분석적인 야 코비 행렬을 계산할 수있는 방법이 있다면 수치 두통을 피하기 위해 그렇게 할 수 있습니다. 유한 차분 근사값보다 평가하는 것이 더 저렴하고 더 정확할 것입니다. 행렬 역함수의 미분에 대한 식은 필요한 경우 여기 에서 찾을 수 있습니다 . 역행렬의 미분을 평가하는 것은 적어도 2 개 또는 3 개의 선형 시스템 해를 취하는 것처럼 보이지만 모두 동일한 행렬과 다른 오른쪽을 가지므로 단일 선형 시스템보다 상당히 비싸지 않습니다. 풀다.

그리고 계산 된 솔루션을 알려진 매개 변수 값을 가진 솔루션과 비교할 수있는 방법이 있다면이 방법을 사용하여 이러한 수치 적 함정에 빠졌는지 진단 할 수 있습니다.


여기에 smooth를 쓸 때 유한 정밀도, 즉 안정적인 (즉, 내가 말하려고했던 것)으로 평가 할 때도 부드럽다는 것을 의미합니까? GertVdE의 답변에 대한 내 의견도 참조하십시오. 나는 거의 단수의 행렬을 제외 할 수 있다고 생각합니다 (이러한 경우 내 물리적 문제의 분석을 재구성해야한다고 가정합니다).
highsciguy

1
Adet(A)0

nA

-2

그것이 도움이 될 수는 없지만 안정적인 솔루션에 대해 이야기 할 때 근사 방법에 대해 이야기하고 있다고 생각합니다. 명시 적으로 계산할 때 안정성에는 의미가 없습니다. 즉, 안정성을 얻으려면 근사 솔루션을 수락해야합니다.


5
부동 소수점 근사치 (반올림, 취소 등)는 모두 안정성과 관련하여 계산됩니다. 답에 대한 공식이 있더라도 유한 정밀도 산술에서 정확하게 계산할 수 있는지 여부를 계산해야합니다.
Bill Barth

다른 사람들이 보는 것처럼이 대답을 부정적으로 보지 않습니다. 물론 안정성 문제는 명백한 결과에도 존재합니다. 그러나 ctNGUYEN은 소량의 확장과 같은 대략적인 솔루션이 실제로 정확한 결과 전체보다 더 정확할 수 있다고 말하고 싶었습니다. 어떤 의미에서 나는 수식이 항상 안정적 이도록 어려운 경우를 처리하는 명확한 해결책을 요구합니다.
highsciguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.