A'A 및 AA '제제의 조건 수


9

(Yousef Saad, 스파 스 선형 시스템에 대한 반복 방법 , p. 260)이 나와 있습니다.cond(AA)cond(A)2

이 마찬가지입니다 뿐만 아니라?AA

케이스에 인 와 , 그 관찰AN×MNMcond(AA)cond(AA)

이것이 관점에서 제형 이 바람직 하다는 것을 의미 하는가?AA


2
크기가 매우 다른 두 행렬의 조건 수를 비교하고 있습니다. 이유에 대한 설명이 없으면 비교가 의미가없는 것 같습니다. 훨씬 더 작은 매트릭스를 사용하여 필요한 것을 달성 할 수 있다면 (컨디셔닝이 비슷하더라도)해야합니다.
David Ketcheson

1
아래 Stefano M의 새로운 답변이 맞습니다. 그것을 읽고 투표하십시오.
David Ketcheson

답변:


6

만약 함께 후 이므로 전체 순위가 될 수 없습니다 . 즉, 단수입니다.ARN×MN<M

rank(ATA)=rank(AAT)=rank(A)N<M
ATARM×M

따라서 조건 번호는 입니다. 유한 정밀도 산술로 인해 matlab에서 계산 하면 큰 숫자가 아닙니다 .κ2(ATA)=cond(A'A)Inf


@OscarB : 의 특이 값 은 단지 이고 번째 특이 값 과 같은 것은 없습니다 ! 도출은 정확하지만 , 이 의 sv 인 경우 반면, 과 후행 0. ANMσii=1NASST=diag(σ12,,σn2)STS=diag(σ12,,σn2,0,,0)MN
Stefano M

8

글쎄, 왜 보자 ATA 대략 제곱 된 조건 번호가 A. SVD 분해 사용A=USVTURN×N, SRN×M, VRM×M, 우리는 표현할 수 있습니다 ATA 같이

ATA=(USVT)TUSVT=VSTUTUSVT=VSTSVT

우리는 그것을 주목함으로써 도착 U 직각이 정상이므로 UTU=I. 또한 우리는S 대각 행렬이므로 최종 분해 ATA 로 표현 될 수있다 VS2VTS2 의미 STS에서 첫 번째 N 특이 값을 갖는 대각 행렬을 생성합니다. S대각선으로 제곱합니다. 이는 조건 번호가 첫 번째와 마지막 특이 값의 비율이므로cond(A)=s1sN ...에 대한 ARN×M,

cond(ATA)=s12sM2=(s1sM)2=cond(A)2

이제 우리는 같은 운동을 할 수 있습니다 AAT:

AAT=USVT(USVT)T=USVTVSTUT=US2UT

결과가 나옵니다 cond(AAT)=s12sN2, 이후 S2 여기 의미 SST위의 표기법과 미묘한 차이가 있습니다.

그러나 그 미묘한 차이에 주목하십시오! 에 대한ATA조건 번호는 분모에서 M 번째로 특이 값을 갖지만 AATn 번째 특이 값을가집니다. 조건 번호에 큰 차이가있는 이유를 설명합니다.AAT 실제로보다 더 나은 조건이 될 것입니다 ATA.

그러나 David Ketcheson은 정확했습니다. 두 개의 서로 다른 행렬 사이의 조건 수를 비교하고 있습니다. 특히, 당신이 달성 할 수있는 것ATA 당신이 달성 할 수있는 것과 같지 않을 것입니다 AAT.


좋은 설명입니다! 나는 지금 그 차이를 분명히 본다. 행렬 A는 정규 방정식을 만드는 데 사용되며 약간의 변경으로 다음과 같이 공식화 할 수도 있습니다.AA고전이 아닌 AA. 정규 방정식을 푸는 대신 LSQR과 같은 솔버를 사용하는 것이 유리한지 알 수 있습니까? LSQR은이 제품을 전혀 구축 할 필요가 없기 때문입니다.
Alexander

이해가되어 기쁘다. 일반적으로 문제의 컨디셔닝을 고려해야합니다. 그러나 이것이 문제가되지 않는다면, 문제의 크기 (다른 것들 중에서)에 따라 정규 방정식 / QR- 인수 분해 (A) / LSQR을 사용할 수 있습니다. 귀하의 문제가 크거나 조건이 좋지 않은 한, 아마도 QR- 인수 분해를 적용 할 것입니다, 그러나 당신이 해결하려는 문제에 대한 더 많은 지식이 없다면, 말하기 어렵습니다. 더 많은 경험을 가진 사람들이 더 자세한 조언을 제공 할 수 있다고 확신합니다.
OscarB

A 자체는 상태가 좋지 않습니다 (조건 번호가 107), 밀도가 높고 큽니다. QR은 옵션이 아닙니다. 조건이 좋지 않기 때문에 어쨌든 정규화를 추가해야합니다. 이제 간단한 Tikhonov 정규화로 충분합니다. 요점은cond(A)<cond(AAT)<cond(ATA) (내 경우에는 N<M) 그런 다음 LSQR을 사용하는 것은 제품을 전혀 형성 할 필요가 없으므로 항상 선호되는 것 같습니다. 문제는 정규 방정식과 LSQR로 얻은 솔루션이 동일한 지 여부입니다.
Alexander

글쎄, LSQR은 "정확히 많은 수의"반복을 반복 한 후에 일반 방정식에 대해 동일한 솔루션을 제공 할 것입니다. 그러나 잘못된 문제의 경우 정규 방정식 솔루션이 원하는 솔루션이 아닙니다. 대신 LSQR을 사용하여 반 수렴에 도달 할 때까지 반복하려고합니다. 그러나 잘못된 문제에서 반복 알고리즘을 제어하는 ​​것은 다른 볼 게임입니다. 또한 행렬-벡터 제품의 비용과 필요한 반복 횟수 (따라서 matvec)에 따라 2 각형 화를 사용하는 직접 tikhonov 솔루션이 더 나을 수 있습니다.
OscarB

멋진 설명입니다. 선생님 +1
meawoppl

2

그 주장 condA2condATA질문에 (제곱 행렬의 경우) Artan의 답변에서 [편집 : 잘못 읽음]은 의미가 없습니다. 반례

A=(ϵ10ϵ),ϵ1

이를 쉽게 확인할 수 있습니다 condATA=O(ϵ4) 동안 condA2=O(ϵ2).


그것을 강조하기 위해 좋아 A2ATA eigs, svds, cond number와 관련하여 일반적으로 매우 유사하지 않습니다. 그러나 내 의견으로는 질문의 주장은 [cond(A)]2.
Stefano M

@StefanoM 고마워, 토론에서 오해는 없었지만, 유일한 것은 아닙니다.
제드 브라운

1

정확한 산술 cond (A ^ 2) = cond (A'A) = cond (AA '), 예를 들어 참조하십시오. Golub and Van Loan, 3 판, p70. A의 순위가 거의없는 경우 부동 소수점 산술에서는 그렇지 않습니다. 가장 좋은 방법은 최소 제곱 문제를 해결할 때 위의 책 레시피를 따르는 것입니다. 가장 안전한 것은 SVD 접근법입니다 (p257). SVD를 계산할 때 \ varepsilon-rank를 대신 사용하십시오. 여기서 \ varepsilon은 행렬 데이터의 해상도입니다.


죄송합니다. Golub과 Van Loan 3rd ed p를 보았습니다. 70, cond (A ^ 2) = cond (A ^ TA) = cond (AA ^ T) 문을 백업하는 항목을 찾을 수 없습니다. 좀 더 구체적으로 설명해 주시겠습니까?
OscarB

거기에는 진술이 없지만, 정리 2.5.2와 의사 역, 섹션 5.5.4 (cond (AA ') = cond (A'A))에서 파생 될 수 있습니다. 내가 의사 역수를 취하는 이유는 이것이 가장 작은 제곱 문제에 중요하기 때문입니다. cond (A ^ 2) 후의 등식은 \ approx 여야합니다. 오타가 유감입니다.
Artan

아니요,이 답변은 완전히 틀립니다. 내 반례를 참조하십시오.
제드 브라운

Saad는 특정 상황을 지적해야합니다. 당면한 문제와 관련이있는 것은 진행중인 논쟁입니다.
Artan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.