Пояснение за матрици и вектори:

A=(({{10, 2, -1.2}, {0.8, 30π, -0.2}, {-1.8, 2.1, 20E}}))

A[[1]]

A[[2]]

A[[2]]

A[[2,2]]

A[[3,1]]

f = {3,4,9}
2*f

Пояснение за използване на функции:

B//MatrixForm

MatrixForm[B]

MatrixForm@B

Sin[x]

x//Sin

Sin@x

A=(({{10, 2, -1.2}, {0.8, 30π, -0.2}, {-1.8, 2.1, 20E}}));b = {5,0.34,-3};
n=Length[A];
(* дефинираме структурата на матрицата  B и вектора (OverTilde[b]) *)
B = (({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}}));bv = {0,0,0};
For[i=1, i≤n,i++,
B[[i]]=- ((A[[i]])/(A[[i,i]]));
B[[i,i]]=0;
bv[[i]] = ((b[[i]])/(A[[i,i]]))

]
N[B//MatrixForm]
N@bv
x = {-10000000,200,-40000};
Print["k = ",0," (x^((k))) = ",x]
For[k=1,k≤10,k++,
x = B.x+bv;
Print["k = ",k," (x^((k))) = ",x]
]

((-0.8)/(30Pi))

LinearSolve[A,b]

Проверка на условията на метода ( ||B|| < 1 )

Подготовка на матрицата B за итерационния процес

A=(({{10, 2, -1.2}, {0.8, 30π, -0.2}, {-1.8, 2.1, 20E}}));b = {5,0.34,-3};
n=Length[A];
(* дефинираме структурата на матрицата  B и вектора (OverTilde[b]) *)
B = (({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}}));bv = {0,0,0};
For[i=1, i≤n,i++,
B[[i]]=- ((A[[i]])/(A[[i,i]]));
B[[i,i]]=0;
bv[[i]] = ((b[[i]])/(A[[i,i]]))

]
N[B//MatrixForm]
N@bv

Поверка за нормите на матрицата B

първа норма

Max[(∑_(j=1)^n)Abs[B[[1,j]]],(∑_(j=1)^n)Abs[B[[2,j]]],(∑_(j=1)^n)Abs[B[[3,j]]]]

втора норма

Max[(∑_(i=1)^n)Abs[B[[i,1]]],(∑_(i=1)^n)Abs[B[[i,2]]],(∑_(i=1)^n)Abs[B[[i,3]]]]

трета норма

(Sqrt[(∑_(i=1)^n)(∑_(j=1)^n)((B[[i,j]])^2)])

Извод: Всички изчислени норми (достатъчно е ПОНЕ една да е) на матрицата B са по-малки от 1 => процесът ще е сходящ при всеки избор на начално приближение (x^((0))). Избираме по-нататък да работим с втора норма.

NormB = Max[(∑_(i=1)^n)Abs[B[[i,1]]],(∑_(i=1)^n)Abs[B[[i,2]]],(∑_(i=1)^n)Abs[B[[i,3]]]]

Итерации

A=(({{10, 2, -1.2}, {0.8, 30π, -0.2}, {-1.8, 2.1, 20E}}));b = {5,0.34,-3};
n=Length[A];
(* дефинираме структурата на матрицата  B и вектора (OverTilde[b]) *)
B = (({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}}));bv = {0,0,0};
For[i=1, i≤n,i++,
B[[i]]=- ((A[[i]])/(A[[i,i]]));
B[[i,i]]=0;
bv[[i]] = ((b[[i]])/(A[[i,i]]))

]
N[B//MatrixForm]
N@bv
x = {-10000000,200,-40000};
Print["k = ",0," (x^((k))) = ",x]
For[k=1,k≤10,k++,
x = B.x+bv;
Print["k = ",k," (x^((k))) = ",x]
]

Итерации с пресмятане на текущата грешка

Подготовка за пресмятане на текущата грешка

NormB = Max[(∑_(i=1)^n)Abs[B[[i,1]]],(∑_(i=1)^n)Abs[B[[i,2]]],(∑_(i=1)^n)Abs[B[[i,3]]]]

Normbv = (∑_(i=1)^n)Abs[bv[[i]]]

Програмен код с пресмятане на текущата грешка

A=(({{10, 2, -1.2}, {0.8, 30π, -0.2}, {-1.8, 2.1, 20E}}));b = {5,0.34,-3};
n=Length[A];
(* дефинираме структурата на матрицата  B и вектора (OverTilde[b]) *)
B = (({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}}));bv = {0,0,0};
For[i=1, i≤n,i++,
B[[i]]=- ((A[[i]])/(A[[i,i]]));
B[[i,i]]=0;
bv[[i]] = ((b[[i]])/(A[[i,i]]))

]
N[B//MatrixForm]
N@bv
NormB = Max[(∑_(i=1)^n)Abs[B[[i,1]]],(∑_(i=1)^n)Abs[B[[i,2]]],(∑_(i=1)^n)Abs[B[[i,3]]]];
Normbv = (∑_(i=1)^n)Abs[bv[[i]]];
x = {-10000000,200,-40000};
Normx0 = (∑_(i=1)^n)Abs[x[[i]]];
eps = (NormB^0)(Normx0+(Normbv/(1-NormB)));
Print["k = ",0," (x^((k))) = ",x, " (Subscript[e, k]) = ", eps]
For[k=1,k≤10,k++,
x = B.x+bv;
eps = (NormB^k)(Normx0+(Normbv/(1-NormB)));
Print["k = ",k," (x^((k))) = ",x, " (Subscript[e, k]) = ", eps]
]

пускаме с друго начално приближение:

A=(({{10, 2, -1.2}, {0.8, 30π, -0.2}, {-1.8, 2.1, 20E}}));b = {5,0.34,-3};
n=Length[A];
(* дефинираме структурата на матрицата  B и вектора (OverTilde[b]) *)
B = (({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}}));bv = {0,0,0};
For[i=1, i≤n,i++,
B[[i]]=- ((A[[i]])/(A[[i,i]]));
B[[i,i]]=0;
bv[[i]] = ((b[[i]])/(A[[i,i]]))

]
N[B//MatrixForm]
N@bv
NormB = Max[(∑_(i=1)^n)Abs[B[[i,1]]],(∑_(i=1)^n)Abs[B[[i,2]]],(∑_(i=1)^n)Abs[B[[i,3]]]];
Normbv = (∑_(i=1)^n)Abs[bv[[i]]];
x = {-10,2,-4};
Normx0 = (∑_(i=1)^n)Abs[x[[i]]];
eps = (NormB^0)(Normx0+(Normbv/(1-NormB)));
Print["k = ",0," (x^((k))) = ",x, " (Subscript[e, k]) = ", eps]
For[k=1,k≤10,k++,
x = B.x+bv;
eps = (NormB^k)(Normx0+(Normbv/(1-NormB)));
Print["k = ",k," (x^((k))) = ",x, " (Subscript[e, k]) = ", eps]
]

Предварителна оценка на нужния брой итерации за достигане на дадена точност (например (10^(-3)))

((Log10[((10^(-3))/(Normx0+(Normbv/(1-NormB))))])/(Log10[NormB]))