Метод прогонки, також відомий як алгоритм Томаса, дозволяє розв'язувати СЛАР з Тридіагональною матрицею, і є спрощенням методу Гауса для таких обмежень. Працює за лінійний час.
Система має такий вигляд:
де та . В матричній формі це записується так:
В цілому, метод не є числово стійким, але є таким у декількох випадках, таких як діагонально панівна матриця або додатноозначена матриця.
Розв'язок
Розв'язок проводиться в два кроки, як і в методі Гауса, прямому, та зворотному. В прямому ході ми обчислюємо:
та
Тепер розв'язок знаходимо зворотнім ходом:
Код на C
/* Розв'язок повертається в x. c та d модифікуються!*/ void TridiagonalSolve (const double *a, const double *b, double *c, double *d, double *x, unsigned int n){ /* Modify the coefficients. */ c[0] /= b[0];/* Division by zero risk. */ d[0] /= b[0];/* Division by zero would imply a singular matrix. */ for (unsigned int i = 1; i < n; i++){ double id = 1 / (b[i] - c[i-1] * a[i]); /* Division by zero risk. */ c[i] *= id; /* Last value calculated is redundant. */ d[i] = (d[i] - d[i-1] * a[i]) * id; } /* Now back substitute. */ x[n - 1] = d[n - 1]; for (int i = n - 2; i >= 0; i--) x[i] = d[i] - c[i] * x[i + 1]; }
Доведення
Доведення методу вимагає ручного виконання деяких спеціалізованих Гаусових вилучань.
Припустимо, що невідомі - це , і що рівняння до розв'язання такі:
Розглянемо таку зміну другого () рівняння за допомогою першого рівняння:
що дасть:
у висліді маємо, що було вилучено з другого рівняння. Використовуючи подібну тактику зі зміненим другим рівнянням, щодо третього маємо:
Цього разу було вилучено якщо повторювати цю процедуру до рядка ; (змінене) рівняння міститиме лише одну змінну, . Таке рівняння ми можемо розв'язати і використати результат для того, щоб розв'язати рівняння і так далі допоки всі невідомі не знайдені.
Очевидно, що коефіцієнти у змінених рівняннях ставатимуть все більш заплутаними якщо розписувати їх явно. Але змінені коефіцієнти (з тильдою) можна виразити рекурсивно:
Для дальшого пришвидшення процесу, можна нормувати діленням (якщо немає ризику ділення на число занадто близьке до нуля), тепер змінені коефіцієнти позначені рисочкою будуть:
це дає нам наступну систему з тими самими невідомими і коефіцієнтами вираженими через початкові:
Останнє рівняння містить лише одне невідоме. Розв'язуючи його, приводимо наступне останнє рівняння до одного невідомого. І так далі:
Примітки
- Pradip Niyogi (2006). Introduction to Computational Fluid Dynamics. Pearson Education India. с. 76. ISBN .
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Metod progonki takozh vidomij yak algoritm Tomasa dozvolyaye rozv yazuvati SLAR z Tridiagonalnoyu matriceyu i ye sproshennyam metodu Gausa dlya takih obmezhen Pracyuye za linijnij chas Sistema maye takij viglyad a i x i 1 b i x i c i x i 1 d i displaystyle a i x i 1 b i x i c i x i 1 d i de a 1 0 displaystyle a 1 0 ta c n 0 displaystyle c n 0 V matrichnij formi ce zapisuyetsya tak b 1 c 1 0 a 2 b 2 c 2 a 3 b 3 c n 1 0 a n b n x 1 x 2 x 3 x n d 1 d 2 d 3 d n displaystyle begin bmatrix b 1 amp c 1 amp amp amp 0 a 2 amp b 2 amp c 2 amp amp amp a 3 amp b 3 amp ddots amp amp amp ddots amp ddots amp c n 1 0 amp amp amp a n amp b n end bmatrix begin bmatrix x 1 x 2 x 3 vdots x n end bmatrix begin bmatrix d 1 d 2 d 3 vdots d n end bmatrix V cilomu metod ne ye chislovo stijkim ale ye takim u dekilkoh vipadkah takih yak diagonalno panivna matricya abo dodatnooznachena matricya Rozv yazokRozv yazok provoditsya v dva kroki yak i v metodi Gausa pryamomu ta zvorotnomu V pryamomu hodi mi obchislyuyemo c 1 c 1 b 1 c i c i b i c i 1 a i i 2 n 1 displaystyle c 1 frac c 1 b 1 c i frac c i b i c i 1 a i i overline 2 n 1 ta d 1 d 1 b 1 d i d i d i 1 a i b i c i 1 a i i 2 n displaystyle d 1 frac d 1 b 1 d i frac d i d i 1 a i b i c i 1 a i i overline 2 n Teper rozv yazok znahodimo zvorotnim hodom x n d n displaystyle x n d n x i d i c i x i 1 i n 1 n 2 1 displaystyle x i d i c i x i 1 i n 1 n 2 ldots 1 Kod na C Rozv yazok povertayetsya v x c ta d modifikuyutsya void TridiagonalSolve const double a const double b double c double d double x unsigned int n Modify the coefficients c 0 b 0 Division by zero risk d 0 b 0 Division by zero would imply a singular matrix for unsigned int i 1 i lt n i double id 1 b i c i 1 a i Division by zero risk c i id Last value calculated is redundant d i d i d i 1 a i id Now back substitute x n 1 d n 1 for int i n 2 i gt 0 i x i d i c i x i 1 DovedennyaDovedennya metodu vimagaye ruchnogo vikonannya deyakih specializovanih Gausovih viluchan Pripustimo sho nevidomi ce x 1 x n displaystyle x 1 ldots x n i sho rivnyannya do rozv yazannya taki b 1 x 1 c 1 x 2 d 1 i 1 a i x i 1 b i x i c i x i 1 d i i 2 n 1 a n x n 1 b n x n d n i n displaystyle begin aligned b 1 x 1 c 1 x 2 amp d 1 amp i amp 1 a i x i 1 b i x i c i x i 1 amp d i amp i amp 2 ldots n 1 a n x n 1 b n x n amp d n amp i amp n end aligned Rozglyanemo taku zminu drugogo i 2 displaystyle i 2 rivnyannya za dopomogoyu pershogo rivnyannya equation 2 b 1 equation 1 a 2 displaystyle mbox equation 2 cdot b 1 mbox equation 1 cdot a 2 sho dast a 2 x 1 b 2 x 2 c 2 x 3 b 1 b 1 x 1 c 1 x 2 a 2 d 2 b 1 d 1 a 2 displaystyle a 2 x 1 b 2 x 2 c 2 x 3 b 1 b 1 x 1 c 1 x 2 a 2 d 2 b 1 d 1 a 2 b 2 b 1 c 1 a 2 x 2 c 2 b 1 x 3 d 2 b 1 d 1 a 2 displaystyle b 2 b 1 c 1 a 2 x 2 c 2 b 1 x 3 d 2 b 1 d 1 a 2 u vislidi mayemo sho x 1 displaystyle x 1 bulo vilucheno z drugogo rivnyannya Vikoristovuyuchi podibnu taktiku zi zminenim drugim rivnyannyam shodo tretogo mayemo a 3 x 2 b 3 x 3 c 3 x 4 b 2 b 1 c 1 a 2 b 2 b 1 c 1 a 2 x 2 c 2 b 1 x 3 a 3 d 3 b 2 b 1 c 1 a 2 d 2 b 1 d 1 a 2 a 3 displaystyle a 3 x 2 b 3 x 3 c 3 x 4 b 2 b 1 c 1 a 2 b 2 b 1 c 1 a 2 x 2 c 2 b 1 x 3 a 3 d 3 b 2 b 1 c 1 a 2 d 2 b 1 d 1 a 2 a 3 b 3 b 2 b 1 c 1 a 2 c 2 b 1 a 3 x 3 c 3 b 2 b 1 c 1 a 2 x 4 d 3 b 2 b 1 c 1 a 2 d 2 b 1 d 1 a 2 a 3 displaystyle b 3 b 2 b 1 c 1 a 2 c 2 b 1 a 3 x 3 c 3 b 2 b 1 c 1 a 2 x 4 d 3 b 2 b 1 c 1 a 2 d 2 b 1 d 1 a 2 a 3 Cogo razu bulo vilucheno x 2 displaystyle x 2 yaksho povtoryuvati cyu proceduru do ryadka n displaystyle n zminene rivnyannya n displaystyle n mistitime lishe odnu zminnu x n displaystyle x n Take rivnyannya mi mozhemo rozv yazati i vikoristati rezultat dlya togo shob rozv yazati rivnyannya n 1 displaystyle n 1 i tak dali dopoki vsi nevidomi ne znajdeni Ochevidno sho koeficiyenti u zminenih rivnyannyah stavatimut vse bilsh zaplutanimi yaksho rozpisuvati yih yavno Ale zmineni koeficiyenti z tildoyu mozhna viraziti rekursivno a i 0 displaystyle tilde a i 0 b 1 b 1 displaystyle tilde b 1 b 1 b i b i b i 1 c i 1 a i displaystyle tilde b i b i tilde b i 1 tilde c i 1 a i c 1 c 1 displaystyle tilde c 1 c 1 c i c i b i 1 displaystyle tilde c i c i tilde b i 1 d 1 d 1 displaystyle tilde d 1 d 1 d i d i b i 1 d i 1 a i displaystyle tilde d i d i tilde b i 1 tilde d i 1 a i Dlya dalshogo prishvidshennya procesu b i displaystyle tilde b i mozhna normuvati dilennyam yaksho nemaye riziku dilennya na chislo zanadto blizke do nulya teper zmineni koeficiyenti poznacheni risochkoyu budut a i 0 displaystyle a i 0 b i 1 displaystyle b i 1 c 1 c 1 b 1 displaystyle c 1 frac c 1 b 1 c i c i b i c i 1 a i displaystyle c i frac c i b i c i 1 a i d 1 d 1 b 1 displaystyle d 1 frac d 1 b 1 d i d i d i 1 a i b i c i 1 a i displaystyle d i frac d i d i 1 a i b i c i 1 a i ce daye nam nastupnu sistemu z timi samimi nevidomimi i koeficiyentami virazhenimi cherez pochatkovi b i x i c i x i 1 d i i 1 n 1 b n x n d n i n displaystyle begin array lcl b i x i c i x i 1 d i qquad amp amp i 1 ldots n 1 b n x n d n qquad amp amp i n end array Ostannye rivnyannya mistit lishe odne nevidome Rozv yazuyuchi jogo privodimo nastupne ostannye rivnyannya do odnogo nevidomogo I tak dali x n d n b n displaystyle x n d n b n x i d i c i x i 1 b i i n 1 n 2 1 displaystyle x i d i c i x i 1 b i qquad i n 1 n 2 ldots 1 PrimitkiPradip Niyogi 2006 Introduction to Computational Fluid Dynamics Pearson Education India s 76 ISBN 978 81 7758 764 7