Յակոբիի մեթոդ

**Յակոբիի մեթոդը** գծային հանրահաշվում հավասարումների համակարգերի լուծման պարզ իտերացիայի տարատեսակներից է։ Այն անվանվել է ի պատիվ Կարլ Գուստավ Յակոբիի։

## Խնդրի դրվածքը
Վերցնենք գծային հավասարումների համակարգը.

A\vec{x}=\vec{b}, где A=\left(
\begin{array}{ccc}
a_{11} & \ldots & a_{1n} \\
\vdots & \ddots & \vdots \\
a_{n1} & \ldots & a_{nn} 
\end{array} \right),\quad \vec{b}=\left(
\begin{array}{c}
b_1 \\
\vdots \\
b_n 
\end{array} \right)

կամ

\left\{
\begin{array}{rcl}
a_{11}x_1 + \ldots + a_{1n}x_n& = & b_{1} \\
\ldots ~~~~~~~~~~~~~~~~~~~~~ \\
a_{n1}x_1 + \ldots + a_{nn}x_n & = & b_{n} 
\end{array} \right.

## Մեթոդի նկարագրությունը
Որպեսզի կառուցենք Յակոբիի մեթոդի իտերատիվ ընթացակարգը, անհրաժեշտ է իրականացնել A\vec{x}=\vec{b} հավասարումների համակարգի նախնական ձևափոխում \vec{x}=B\vec{x}+\vec{g} իտերացիոն տեսքին։ Այն կարող է կատարվել հետևյալ կանոններից որևէ մեկի համաձայն՝
*: B = E-D^{-1}A = D^{-1}(D - A),\quad \vec{g}=D^{-1}\vec{b};
*: B = -D^{-1}(L + U) = -D^{-1}(A - D),\quad \vec{g}=D^{-1}\vec{b}
*: D^{-1}_{ii} = 1 / D_{ii}, D_{ii} \neq 0,\, i = 1,2, ..., n\quad, 

որտեղ ըստ ընդունված նշանակումների D-ն մատրից է, որի գլխավոր անկյունագծի վրա գտնվում են A մատրիցի համապատասխան էլեմենտները, իսկ մնացած բոլոր էլեմենտները զրոներ են, այնինչ U և L մատրիցները պարունակում են A մատրիցի վերևի և ներքևի եռանկյունային մասերը, որոնց գլխավոր անկյունագծի վրա զրոներ են, իսկ E-ն միավոր մատրից է։

Այդ դեպքում լուծման գտնելու ընթացակարգը ունիայսպիսի տեսք՝
:  \vec{x}^{(k+1)}  = B \vec{x}^{(k)}+\vec{g},
կամ ըստ էլեմենտային բանաձևի տեսքով՝
:  x^{(k+1)}_i  = \frac{1}{a_{ii}} \left(b_i -\sum_{j\ne i}a_{ij}x^{(k)}_j\right),\quad i=1,2,\ldots,n, 
որտեղ k-ն իտերացիայի հաշվիչն է։

Ի տարբերություն Զեյդելի մեթոդի մենք չենք կարող փոխարինել x^{(k)}_i-ը x^{(k+1)}_i-ի իտերացիայի գործընթացի ընթացքում, քանի որ այդ արժեքները անհրաժեշտ են մյուս հաշվարկների համար։

Սա ամենաէական տարբերությունն է գծային հանրահաշվական հավասարումների համակարգի լուծման Յակոբիի և Գաուս-Զեյդել մեթոդների միջև։ Այսպիսով, յուրաքանչյուր իտերացիայի ժամանակ անհրաժեշտություն է առաջանում մոտարկումների երկու վեկտորները՝ հին և նոր, պահպանել։

## Զուգամիտության պայման
Բերենք զուգամիտության մեթոդի բավարար պայման։

## Դադարեցման պայմանը
Իտերացիոն գործընթացի ավարտի պայմանը անհրաժեշտ \varepsilon  ճշգրտության դեպքում ունի այսպիսի տեսք՝
: \parallel x^{(k+1)}-x^{(k)}\parallel \le \frac{1-q}{q}\varepsilon։
B (երբ \parallel B\parallel = q ) մատրիցի համար առավել լավ այն կատարվում է, երբ
: \parallel x^{(k+1)}-x^{(k)}\parallel \le \varepsilon։
Այս չափանիշը չի պահանջում մատրիցի նորմայի հաշվարկ և գործնականում հաճախ է օգտագործվում։ Այդ դեպքում կրկնվող գործընթացի ավարտի ճշգրիտ պայմանը ունի այսպիսի տեսք՝
: \parallel Ax^{(k)}-b\parallel \le \varepsilon
և պահանջում է լրացուցիչ բազմապատկում մատրիցն վեկտորին յուրաքանչյուր իտերացիայում, որը մոտավորապես երկու անգամ մեծացնում է ալգորիթմի հաշվարկային բարդությունը։
## Ալգորիթմ
Ներքևում բերենք ալգորիթմի իրականացումը С++ -ում։


```cpp
#include <math.h>
const double eps = 0.001; ///< ցանկալի ճշտությունը

..........................

/// N - մատրիցի չափը; A[N][N] - գործակիցների մատրիցն, F[N] - ազատ անդամների սյունը,
/// X[N] - սկզբնական մոտարկումը, պատասխանը նույնպես գրվում է X[N]-ում;
void Jacobi (int N, double** A, double* F, double* X)
{
	double* TempX = new double[N];
	double norm; // նորման, որոշված որպես ամենամեծ տարբերությունը հարևան իտերացիաների սյուների միջև

	do {
		for (int i = 0; i < N; i++) {
			TempX[i] = F[i];
			for (int g = 0; g < N; g++) {
				if (i != g)
					TempX[i] -= A[i][g] * X[g];
			}
			TempX[i] /= A[i][i];
		}
        norm = fabs(X[0] - TempX[0]);
		for (int h = 0; h < N; h++) {
			if (fabs(X[h] - TempX[h]) > norm)
				norm = fabs(X[h] - TempX[h]);
			X[h] = TempX[h];
		}
	} while (norm > eps);
	delete[] TempX;
}
```

## Տես նաև
* Գաուս-Զեյդելի մեթոդ
## Ծանոթագրություններ

Կատեգորիա:Մաթեմատիկա
Կատեգորիա:Թվային մեթոդներ
Կատեգորիա:Գծային հանրահաշիվ
Կատեգորիա:Գիտություն