Kaksikonjugaattigradienttimenetelmä
On matematiikka , tarkemmin sanoen numeerinen analyysi , biconjugate kaltevuus menetelmä on algoritmi , jonka avulla voidaan ratkaista lineaarisen yhtälöryhmän
ATx=b.{\ displaystyle Ax = b. \,}Toisin kuin konjugaattigradienttimenetelmä , tämä algoritmi ei vaadi matriisin olevan itsestään liitetty, toisaalta menetelmä vaatii kertomuksia viereisen matriisin kanssa .
AT{\ displaystyle A} AT∗{\ displaystyle A ^ {*}}
Algoritmi
- Valitse , esikostuttimeen säännöllisesti (usein käytetty ) ja ;x0{\ displaystyle x_ {0}}y0{\ displaystyle y_ {0}}M{\ displaystyle M}M-1=1{\ displaystyle M ^ {- 1} = 1}vs.{\ displaystyle c}
-
r0←b-ATx0,s0←vs.-AT∗y0{\ displaystyle r_ {0} \ vasen nuoli b-Axe {0}, s_ {0} \ vasen nuoli cA ^ {*} y_ {0} \,};
-
d0←M-1r0,f0←M-∗s0{\ displaystyle d_ {0} \ vasen nuoli M ^ {- 1} r_ {0}, f_ {0} \ vasen nuoli M ^ {- *} s_ {0} \,};
- for Dok=0,1,...{\ displaystyle k = 0,1, \ pistettä \,}
-
ak←sk∗M-1rkfk∗ATdk{\ displaystyle \ alpha _ {k} \ vasen nuoli {s_ {k} ^ {*} M ^ {- 1} r_ {k} \ yli f_ {k} ^ {*} Ad_ {k}} \,};
-
xk+1←xk+akdk{\ displaystyle x_ {k + 1} \ vasen nuoli x_ {k} + \ alpha _ {k} d_ {k} \,} (yk+1←yk+ak¯fk){\ displaystyle \ left (y_ {k + 1} \ leftarrow y_ {k} + {\ overline {\ alpha _ {k}}} f_ {k} \ right) \,};
-
rk+1←rk-akATdk{\ displaystyle r_ {k + 1} \ vasen nuoli r_ {k} - \ alpha _ {k} Ad_ {k} \,}, ( Ja ovat tähteet);sk+1←sk-ak¯AT∗fk{\ displaystyle s_ {k + 1} \ vasen nuoli s_ {k} - {\ yliviiva {\ alpha _ {k}}} A ^ {*} f_ {k} \,}rk=b-ATxk{\ displaystyle r_ {k} = b-Ax_ {k}}sk=vs.-AT∗yk{\ displaystyle s_ {k} = cA ^ {*} y_ {k}}
-
βk←sk+1∗M-1rk+1sk∗M-1rk{\ displaystyle \ beta _ {k} \ vasen nuoli {s_ {k + 1} ^ {*} M ^ {- 1} r_ {k + 1} \ yli s_ {k} ^ {*} M ^ {- 1} r_ {k}} \,};
-
dk+1←M-1rk+1+βkdk{\ displaystyle d_ {k + 1} \ vasen nuoli M ^ {- 1} r_ {k + 1} + \ beta _ {k} d_ {k} \,}, .fk+1←M-∗sk+1+βk¯fk{\ displaystyle f_ {k + 1} \ vasen nuoli M ^ {- *} s_ {k + 1} + {\ overline {\ beta _ {k}}} f_ {k} \,}
Keskustelu
Menetelmä on numeerisesti epävakaa , mutta se korjataan kaksikonjugaattigradientin (en) stabiloidulla menetelmällä , ja se on teoreettisesta näkökulmasta edelleen erittäin tärkeä: määritämme iteraation ja ( ) seuraavilla ennusteilla :
xk: =xj+PkAT-1(b-ATxj){\ displaystyle x_ {k}: = x_ {j} + P_ {k} A ^ {- 1} \ vasen (b-Ax_ {j} \ oikea)}yk: =yj+AT-∗Pk∗(vs.-AT∗yj){\ displaystyle y_ {k}: = y_ {j} + A ^ {- *} P_ {k} ^ {*} \ vasen (cA ^ {*} y_ {j} \ oikea)}j<k{\ displaystyle j <k}
Pk: =uk(vk∗ATuk)-1vk∗AT{\ displaystyle P_ {k}: = \ mathbf {u_ {k}} \ vasen (\ mathbf {v_ {k}} ^ {*} A \ mathbf {u_ {k}} \ oikea) ^ {- 1} \ mathbf {v_ {k}} ^ {*} A},
Kanssa ja . Voimme toistaa ennusteet itse, kuten
uk=(u0,u1,...uk-1){\ displaystyle \ mathbf {u_ {k}} = \ vasen (u_ {0}, u_ {1}, \ pisteitä u_ {k-1} \ oikea)}vk=(v0,v1,...vk-1){\ displaystyle \ mathbf {v_ {k}} = \ vasen (v_ {0}, v_ {1}, \ piste v_ {k-1} \ oikea)}
Pk+1=Pk+(1-Pk)uk⊗vk∗AT(1-Pk)vk∗AT(1-Pk)uk{\ displaystyle P_ {k + 1} = P_ {k} + \ vasen (1-P_ {k} \ oikea) u_ {k} \ otimes {v_ {k} ^ {*} A \ vasen (1-P_ { k} \ oikea) \ yli v_ {k} ^ {*} A \ vasen (1-P_ {k} \ oikea) u_ {k}}}.
Uudet laskeutumissuunnat ja ovat sitten kohtisuorassa jäännösten kanssa: ja , jotka tyydyttävät saman ja ( ).
dk: =(1-Pk)uk{\ displaystyle d_ {k}: = \ vasen (1-P_ {k} \ oikea) u_ {k}}fk: =(AT(1-Pk)AT-1)∗vk{\ displaystyle f_ {k}: = \ vasen (A \ vasen (1-P_ {k} \ oikea) A ^ {- 1} \ oikea) ^ {*} v_ {k}}vi∗rk=fi∗rk=0{\ displaystyle v_ {i} ^ {*} r_ {k} = f_ {i} ^ {*} r_ {k} = 0}sk∗uj=sk∗dj=0{\ displaystyle s_ {k} ^ {*} u_ {j} = s_ {k} ^ {*} d_ {j} = 0}rk=AT(1-Pk)AT-1rj{\ displaystyle r_ {k} = A \ vasen (1-P_ {k} \ oikea) A ^ {- 1} r_ {j}}sk=(1-Pk)∗sj{\ displaystyle s_ {k} = \ vasen (1-P_ {k} \ oikea) ^ {*} s_ {j}}i,j<k{\ displaystyle i, j <k}
Bikonjugaattigradienttimenetelmä tarjoaa sitten seuraavan valinnan:
uk: =M-1rk{\ displaystyle u_ {k}: = M ^ {- 1} r_ {k}}ja .
vk: =M-∗sk{\ displaystyle v_ {k}: = M ^ {- *} s_ {k}}Tämä erityisesti valinta sitten tekee mahdolliseksi välttää suoran arvioinnin ja , ja siten nopeuttaa algoritmin suorituksen.
Pk{\ displaystyle P_ {k}}AT-1{\ displaystyle A ^ {- 1}}
Ominaisuudet
- If on itsekytkentä , ja siten , ja konjugaattigradienttimenetelmä tuottaa saman tuloksen .AT=AT∗{\ displaystyle A = A ^ {*}}y0=x0{\ displaystyle y_ {0} = x_ {0}}vs.=b{\ displaystyle c = b}rk=sk{\ displaystyle r_ {k} = s_ {k}}dk=fk{\ displaystyle d_ {k} = f_ {k}}xk=yk{\ displaystyle x_ {k} = y_ {k}}
- Lopullisissa mitoissa viimeistään, kun : Kaksikonjugaattigradienttimenetelmä antaa ratkaisulle tarkan koko tilan peittämisen jälkeen ja on siten suora menetelmä.xei=AT-1b{\ displaystyle x_ {n} = A ^ {- 1} b}Pei=1{\ displaystyle P_ {n} = 1}
- Algoritmin tuottama sekvenssi on biortogonaalinen (in) : ja for .fi∗ATdj=0{\ displaystyle f_ {i} ^ {*} Ad_ {j} = 0}si∗M-1rj=0{\ displaystyle s_ {i} ^ {*} M ^ {- 1} r_ {j} = 0}i≠j{\ displaystyle i \ neq j}
- IF on polynomi , jossa on , sen jälkeen . Siksi algoritmi koostuu projektioista Krylovin alatiloissa (en) ;sj′{\ displaystyle p_ {j '}}deg(sj′)+j<k{\ displaystyle deg \ vasen (p_ {j '} \ oikea) + j <k}sk∗sj′(M-1AT)uj=0{\ displaystyle s_ {k} ^ {*} p_ {j '} \ vasen (M ^ {- 1} A \ oikea) u_ {j} = 0}
- IF on polynomi , jonka kanssa .si′{\ displaystyle p_ {i '}}i+deg(si′)<k{\ displaystyle i + deg \ vasen (p_ {i '} \ oikea) <k}vi∗si′(ATM-1)rk=0{\ displaystyle v_ {i} ^ {*} p_ {i '} \ vasen (AM ^ {- 1} \ oikea) r_ {k} = 0}
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">