- •Содержание
- •1. Численные методы в электротехнических задачах
- •1.1. Численные методы решения систем линейных алгебраических уравнений (слау)
- •1.1.1. Классификация методов
- •1.1.2. Обусловленность системы уравнений
- •1.1.3. Собственные значения и собственные векторы матриц
- •1.1.4. Векторные нормы
- •1.1.5. Методы решения некорректных задач
- •1.1.6. Точные методы расчёта слау
- •1.1.6.1. Классический метод Гаусса
- •I, j, k : IntType;
- •1.1.6.2. Метод Гаусса с выбором главного элемента
- •I,j,k: IntType;
- •I, j, k : IntType;
- •1.1.6.3. Гауссово исключение и lu-разложение
- •1.1.6.4. Матрично-векторные формы - разложения
- •1.1.6.5. Алгоритм Донгарры-Айзенштата.
- •Var I,j,k,s : Integer;
- •Var I,j,k : Integer;
- •1.1.6.6. Метод вращения
- •I, j, k : IntType;
- •I, j, k : IntType;
- •1.1.6.7. Схема Жордана
- •I,j,k : IntType;
- •I, j, k : IntType;
- •1.1.6.8. Факторизация
- •1.1.6.9. Метод квадратных корней (Холесского)
- •I, j, k : IntType;
- •1.1.6.10. Итерационное уточнение
- •1.1.6.11. Особенности решения слау для ленточных симметричных и несимметричных матриц
- •Алгоритм классического метода Гаусса для ленточной симметричной матрицы
- •I, j, k,k1, n , Jend : IntType;
- •I, j, k,k1, n , Jend, c : IntType;
- •1.1.7. Итерационные методы слау
- •1.1.7.1. Решение слау методом простых итераций
- •I, j, k : IntType;
- •X0 : tVector;
- •1.1.7.2. Решение слау методом Гаусса-Зейделя
- •I, j, k : IntType;
- •X0 : tVector;
- •1.1.7.3. Метод релаксации
- •I, j, k : IntType;
- •X0 : tVector;
- •Литература
Алгоритм классического метода Гаусса для ленточной симметричной матрицы
Рис. 1.3а. Алгоритм ввода ленточной матрицы для классического метода Гаусса.
Рис. 1.3б. Алгоритм прямого хода для классического метода Гаусса.
Рис. 1.3в. Алгоритм обратного хода для классического метода Гаусса.
Рассмотрим несимметричную ленточную матрицу и применительно к ней классический метод Гаусса.
Исходная ленточная несимметричная матрица [9x9]. Ширина полосы=5 |
|
Способ хранения ленточной несимметричной матрицы [9x5]. Ширина полосы=5 |
||||||||||||||||||
Коэффициенты матрицы |
|
Коэффициенты матрицы |
|
|||||||||||||||||
9 |
1 |
2 |
3 |
4 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
9 |
1 |
2 |
3 |
4 |
1 |
|
1 |
9 |
1 |
2 |
3 |
4 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
1 |
9 |
1 |
2 |
3 |
4 |
2 |
|
1 |
1 |
9 |
1 |
2 |
3 |
4 |
0 |
0 |
3 |
0 |
0 |
1 |
1 |
9 |
1 |
2 |
3 |
4 |
3 |
|
1 |
1 |
1 |
9 |
1 |
2 |
3 |
4 |
0 |
4 |
0 |
1 |
1 |
1 |
9 |
1 |
2 |
3 |
4 |
4 |
|
1 |
1 |
1 |
1 |
9 |
1 |
2 |
3 |
4 |
5 |
1 |
1 |
1 |
1 |
9 |
1 |
2 |
3 |
4 |
5 |
|
0 |
1 |
1 |
1 |
1 |
9 |
1 |
2 |
3 |
6 |
1 |
1 |
1 |
1 |
9 |
1 |
2 |
3 |
0 |
6 |
|
0 |
0 |
1 |
1 |
1 |
1 |
9 |
1 |
2 |
7 |
1 |
1 |
1 |
1 |
9 |
1 |
2 |
0 |
0 |
7 |
|
0 |
0 |
0 |
1 |
1 |
1 |
1 |
9 |
1 |
8 |
1 |
1 |
1 |
1 |
9 |
1 |
0 |
0 |
0 |
8 |
|
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
9 |
9 |
1 |
1 |
1 |
1 |
9 |
0 |
0 |
0 |
0 |
9 |
Пример 1.12 (для несимметричных матриц).
program GAUSSLe;
{Решение СЛАУ классическим методом Гаусса }
{ЛЕНТОЧНАЯ НЕСИММЕТРИЧНАЯ МАТРИЦА, хранится в виде прямоугольника}
{Прямой ход исключения переменных}
For k:= 1 to N-1 do
begin
Imin:= k+1;
Imax:= k+C-1;
If Imax > N Then Imax:= N;
For i:= Imin to Imax do
begin
Jmin:= C-(i-k);
Jmax:= 2*C-1-(i-k);
Q:= - a[i,k+C-i]/a[k,C];
For j:= Jmin to Jmax do
a[i,j]:= a[i,j] + a[k,j+(i-k)] * Q;
b[i]:= b[i] + b[k] * Q;
end;
end;
{Обратный ход: последовательное нахождение корней }
x[N]:= b[N]/a[N,C];
For i:= N-1 downto 1 do
begin
Jmin:= C+1;
Jmax:= 2*C-1;
If i > N-C Then Jmax:= N+C-i;
Summa:= 0;
For j:= Jmin to Jmax do Summa:= Summa + x[j+i-C]*a[i,j];
x[i]:= (b[i]-Summa)/a[i,C];
end;
Рассмотрим симметричную ленточную матрицу и применительно к ней метод Холесского.
Исходная ленточная симметричная матрица [9x9]. Ширина полосы=5 |
|
Способ хранения ленточной симметричной матрицы [9x5]. Ширина полосы=5 |
||||||||||||||
Коэффициенты матрицы |
|
Коэффициенты матрицы |
|
|||||||||||||
9 |
1 |
2 |
3 |
4 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
9 |
1 |
|
1 |
9 |
1 |
2 |
3 |
4 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
1 |
9 |
2 |
|
2 |
1 |
9 |
1 |
2 |
3 |
4 |
0 |
0 |
3 |
0 |
0 |
2 |
1 |
9 |
3 |
|
3 |
2 |
1 |
9 |
1 |
2 |
3 |
4 |
0 |
4 |
0 |
3 |
2 |
1 |
9 |
4 |
|
4 |
3 |
2 |
1 |
9 |
1 |
2 |
3 |
4 |
5 |
4 |
3 |
2 |
1 |
9 |
5 |
|
0 |
4 |
3 |
2 |
1 |
9 |
1 |
2 |
3 |
6 |
4 |
3 |
2 |
1 |
9 |
6 |
|
0 |
0 |
4 |
3 |
2 |
1 |
9 |
1 |
2 |
7 |
4 |
3 |
2 |
1 |
9 |
7 |
|
0 |
0 |
0 |
4 |
3 |
2 |
1 |
9 |
1 |
8 |
4 |
3 |
2 |
1 |
9 |
8 |
|
0 |
0 |
0 |
0 |
4 |
3 |
2 |
1 |
9 |
9 |
4 |
3 |
2 |
1 |
9 |
9 |
Рассмотрим метод Холесского применительно к полностью хранимой матрице.
Пример 1.13 (для симметричных матриц).
program Cholessky;
{Решение СЛАУ методом Холесского }
{ЛЕНТОЧНАЯ МАТРИЦА, хранится полностью}
Uses CRT;
Const
NameFile = 'D:\PASCAL\PRIMER\CHOLES\Sim.dat';
NameOut = 'D:\PASCAL\PRIMER\CHOLES\CholKlas.out';
Type
RealType = Real;
IntType = Byte;
Var
a, a1 : array [1..9,1..9] of RealType;
b, b1, x : array [1..9] of RealType;
sum, eps : RealType;