>
Виносимо елемент за знак визначника
зануляется всі елементи першого стовпчика за винятком першого елемента.
Нехай пророблений (k - 1) крок:
де.
Якщо то й крок
. 1.
Якщо .2. Якщо, міняємо місцями k-ю і рядки.
. 3. Якщо міняємо і k-й стовпці.
Виносимо елемент за знак визначника
зануляется всі елементи k-го стовпця починаючи з (k + 1) -го елемента.
й крок:
.
Метод Гаусса з вибором головного або провідного елементу матриці в рядку
Розглянемо k-й крок:
k.1.
Якщо
k.2. Див. Попередній метод..3. Див. Попередній метод..4. Див. Попередній метод..5. Див. Попередній метод.
Метод Гаусса з вибором головного або провідного елементу матриці в стовпці
Розглянемо k-й крок:
k.1.
Якщо
. 2. Див. Попередній метод..3. Див. Попередній метод..4. Див. Попередній метод..5. Див. Попередній метод.
Лістинг програми
# include stdafx.h
# include lt; iomanip gt;
# include lt; iostream gt;
# include lt; math.h gt; namespace std; int n=4; Print (double array [n] [n])
{(int i=0; i lt; n; i ++)
{(int j=0; j lt; n; j ++)
{(% .4f , array [i] [j], );
} lt; lt; endl;
}
} buldMatrA (double A [n] [n])
{(int i=0; i lt; n; i ++)
{(int j=0; j lt; n; j ++)
{
A [0] [0]=0.11; [0] [1]=- 0.17; [0] [2]=0.72; [0] [3]=- 0.34; [1] [0]=0.81; [1] [1]=0.12; [1] [2]=- 0.91; [1] [3]=0.17; [2] [0]=0.17; [2] [1]= - 0.18; [2] [2]=1; [2] [3]=0.28; [3] [0]=0.13; [3] [1]=0.17; [3] [2]=- 0.99; [ 3] [3]=0.35;
}
}
} Gauss_Matr (double A [n] [n], double f [n])
{P [n]; (int i=0; i lt; n; i ++) [i]=i; max=- 1; line=0, column=0; d, x [ n], r [n], Ax [n];
double A_1 [n] [n + 1];//створюємо розширену матрицю
for (int i=0; i lt; n; i ++)
{(int j=0; j lt; n; j ++)
{_ 1 [i] [j]=A [i] [j];
} _ 1 [i] [n]=f [i];
} lt; lt; endl; lt; lt; This is a matrix A_1 [n] [n + 1] lt; lt; endl; (int i=0; i lt; n; i ++)
{(int j=0; j lt; n + 1; j ++)
{(% .4f raquo ;, A_1 [i] [j], );
} lt; lt; endl;
} (int k=0; k lt; n; k ++)
{= fabs (A_1 [k] [k]);=k;=k; (int i=k; i lt; n; i ++)
{(int j=k; j lt; n; j ++)
{(fabs (A_1 [i] [j]) gt; max)
{= fabs (A_1 [i] [j]);
line=i;//знаходження макс елемента і його позиції=j;
}
}
} (line!=k)//міняємо рядки місцями
{(int j=k; j lt; n + 1; j ++)
{(A_1 [k] [j], A_1 [line] [j]);
}
} (column!=k)//міняємо стовпці місцями
{(int i=0; i lt; n; i ++)
{(A_1 [i] [k], A_1 [i] [column]);
} (P [k], P [column]);
}=A_1 [k] [k]; (int j=k; j lt; n + 1; j ++)//поділ к-го рядка на макс елемент
{_ 1 [k] [j]=(double) A_1 [k] [j]/d;
} (int i=0; i lt; n; i ++)
{(i!=k)
{= A_1 [i] [k]; (int j=k; j lt; n + 1; j ++)
{_ 1 [i] [j] -=d * A_1 [k] [j];
}
}
}
} lt; lt; endl; (int i=0; i lt; n; i ++)
{[P [i]]=A_1 [i] [n];
} lt; lt; Root lt; lt; endl; (int i=0; i lt; n; i ++)
{(% .4f raquo ;, x [i], ); lt; lt; endl;
} (A); lt; lt; endl; (int i=0; i lt; n; i ++)
{s=0; (int j=0; j lt; n; j ++)
{+=A [i] [j] * x [j];
} [i]=s; [i]=Ax [i] -f [i];
} lt; lt; Nevazka lt; lt; endl; (int i=0; i lt; n; i ++)
{(% 1.17f...