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


11

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

Ax=b

여기서 는 n ≤ 4 인 실수 n x n 행렬입니다 . nullspace의 (A)는 식 고유 역 갖도록 제로 치수되도록 보장된다 X = - 1 개 (B)를 . 결과는 적응 방법을 사용하여 해결하려는 ODE의 오른쪽에 들어가므로 솔루션이 A 및 b 요소의 작은 변형에 대해 매끄럽게하는 것이 중요합니다 . 이 요구 사항과 작은 차원 때문에 A - 1 b에 대한 명시 적 수식을 구현할 것이라고 생각했습니다.An×nn≤4Ax=A−1bAbA−1b. 요소는 정확히 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.