Fabritseeritud lahendite meetod

Fabritseeritud lahendite meetod (inglise keeles Method of Manufactured Solutions) on metodoloogia osatuletistega diferentsiaalvõrrandite süsteemi analüütiliste lahendite leidmiseks. Fabritseeritud lahendite meetodit kasutatakse diferentsiaalvõrrandite süsteeme lahendavate numbriliste algoritmide verifitseerimisel. Osatuletistega diferentsiaalvõrrandisüsteemide numbriline lahendamine arvutiprogrammide abil on tänapäevaste teadusarvutuste oluline osa. Sealjuures on oluline kontrollida, kas kasutatav numbriline algoritm on korrektselt implementeeritud. Viimane tegevus nõuab omakorda teadaolevalt korrektset, analüütilisel kujul lahendit. Selle leidmine praktikas esilekerkivate keerulisemate võrrandite, määramispiirkondade ning ääretingimuste korral ei pruugi võrrandit "toore jõuga" lahendades võimalikuks osutuda. Sümmeetrilistest erijuhtudest tuletatud analüütilised lahendid võivad sealjuures jätta tuvastamata olulisi koodis esinevaid vigu. Fabritseeritud lahendite meetod lahendab "lahendi leidmise probleemi", fikseerides lahendi ning leides seejärel viimase jaoks sobiva, kuid algse ülesandega piisavalt sarnase diferentsiaalvõrrandi. Meetodi kasutamine reaalse arvutiprogrammi puhul võib seega nõuda väiksemaid muudatusi programmi koodis, tõstes seevastu oluliselt hinnangut koodi (matemaatilise) korrektsuse osas. Fabritseeritud lahendite meetodi idee võib esitada järgmiselt. Olgu meil diferentsiaalvõrrand kujul L [ u ( x , y , z , t ] = 0 , {\displaystyle L[u(x,y,z,t]=0,\,} millele otsitakse numbriliselt korrektset, kuid mitte ilmtingimata sisulise (füüsikalise) tähendusega lahendit u = M ( x , y , z , t ) {\displaystyle u=M(x,y,z,t)} . Selleks valime diferentsiaalvõrrandi operaatori L {\displaystyle L} asemele viimasega sarnase operaatori L ′ {\displaystyle L'} nii, et eelnevalt valitud lahend oleks saadud diferentsiaalvõrrandi lahendiks: L ′ [ u ( x , y , x , t ] = 0. {\displaystyle L'[u(x,y,x,t]=0.\,} Lihtsaim viis L ′ {\displaystyle L'} leidmiseks on teisendus: L ′ = L − Q , {\displaystyle L'=L-Q,\,} kus Q = L [ M ] {\displaystyle Q=L[M]} . Ääre- ja algtingimused määratakse fabritseeritud lahendi M {\displaystyle M} pidevust arvestades. Näitena vaatleme meetodi rakendamist ajast sõltumatu kahemõõtmelise difusioonivõrrandi u x x + u y y = 0 {\displaystyle u_{xx}+u_{yy}=0} lahendamisele Jacobi iteratsioonimeetodiga. Valime fabritseeritud lahendiks M ( x , y ) = 2 x 4 − y 3 {\displaystyle M(x,y)=2x^{4}-y^{3}} . Diferentsiaalvõrrandi operaatoriks on L = ∂ x x + ∂ y y {\displaystyle L=\partial _{xx}+\partial _{yy}} seega L [ M ( x , y ) ] = L [ 2 x 4 − y 3 ] = 24 x 2 − 6 y . {\displaystyle L\left[M(x,y)\right]=L\left[2x^{4}-y^{3}\right]=24x^{2}-6y.\,} Seega on funktsioon M ( x , y ) {\displaystyle M(x,y)} järgmise diferentsiaalvõrrandi lahendiks. u x x + u y y − ( 24 x 2 − 6 y ) = 0. {\displaystyle u_{xx}+u_{yy}-\left(24x^{2}-6y\right)=0.} Kui ruudukujulistest elementidest küljepikkusega h {\displaystyle h} koosneval võrel Jacobi meetodiga algset diferentsiaalvõrrandit lahendav iteratsioonireegel on järgmine: u i , j ( k + 1 ) = 1 4 ( u i + 1 , j ( k ) + u i − 1 , j ( k ) + u i , j + 1 ( k ) + u i , j − 1 ( k ) ) , {\displaystyle u_{i,j}^{(k+1)}={\frac {1}{4}}\left(u_{i+1,j}^{(k)}+u_{i-1,j}^{(k)}+u_{i,j+1}^{(k)}+u_{i,j-1}^{(k)}\right),\,} siis fabritseeritud lahendite meetodi kasutamiseks tuleb iteratsioonireeglisse lisada jääkliige q ( x , y ) {\displaystyle q(x,y)} u i , j ( k + 1 ) = 1 4 ( u i + 1 , j ( k ) + u i − 1 , j ( k ) + u i , j + 1 ( k ) + u i , j − 1 ( k ) − h 2 q ( i h , j h ) ) . {\displaystyle u_{i,j}^{(k+1)}={\frac {1}{4}}\left(u_{i+1,j}^{(k)}+u_{i-1,j}^{(k)}+u_{i,j+1}^{(k)}+u_{i,j-1}^{(k)}-h^{2}q(ih,jh)\right).\,} Fabritseeritud lahendiga testimisel seatakse jääkliikme väärtuseks q ( x , y ) = 24 x 2 − 6 y {\displaystyle q(x,y)=24x^{2}-6y} , algset ülesannet lahendades seevastu q ( x , y ) = 0 {\displaystyle q(x,y)=0} . Patrick J. Roache. Building PDE Codes to be Verifiable and Validatable. Computing in Science and Engineering, vol. 6, no. 5, pp. 30-38, Sep./Oct. 2004, doi:10.1109/MCSE.2004.33 Kambiz Salari and Patrick Knupp. Code Verification by the Method of Manufactured Solutions. Technical report. Sandia National Laboratories, June 2000.