Решение систем линейных уравнений методом Гаусса с выбором максимального элемента
Исходная матрица ai,j может в общем случае иметь на диагонали нулевые элементы. Поэтому, для применения базовой процедуры приведения к треугольному виду (***), матрицу нужно преобразовать так, чтобы на диагонали стояли ненулевые элементы.
Так, для элемента a1,1
находим в области i≥1, j≥1 максимальный по модулю элемент a(imax, jmax) и совершаем перестановку строк:
imax меняется с первой строкой местами, то есть строка с номером imax становится первой строкой, а первая строка становится строкой с номером imax.
Аналогичную перестановку делают для столбцов матрицы: столбец, содержащий максимальное значение, меняется со столбцом с первым номером.
При перестановке строк необходимо переставить и элементы вектора b:
x=b(jmax)
b(jmax)=b(1)
b(1)=1
При перестановке столбцов переставляются векторы решений:
x(jmax) x(1)
Эти перестановки необходимо запоминать, чтобы после получения вектора решений по треугольной матрице восстановить правильный порядок элементов xi.
Введем вектора:
ni(n)=(1, 2, 3, …, n) – начальный порядок строк,
nj(n)=(1, 2, 3, …, n) начальный порядок столбцов.
jmax 1
nj(1)=jmax
nj(jmax)=1
Так, если jmax =4 до перестановки nj (1, 2, 3, 4, 5, 6), после перестановки nj (4, 2, 3, 1, 5, 6).
В алгебре используется понятие характеристической функции матрицы. Характеристическая функция F(C) для матрицы A получается следующим образом:
F(C) = Det |A-E*C|,
здесь Det|A-E*C| определитель разности матрицы A и единичной матрицы E умноженной на неизвестную переменную величину C – аргумент характеристической функции. Так, например, для матрицы
характеристическая функция записывается следующим образом:
В данном случае, для матрицы 3x3 характеристическая функция представляет собой полином степени 3 и может иметь один или три действительных корня. Корни характеристического уравнения
F(C) = 0
могут быть найдены явно (в простых случаях) или численным образом при помощи методов табуляции, деления отрезка пополам, секущих и т.д. Корни характеристического уравнения называют собственными значениями соответствующей матрицы.
Пример программного кода метода Гаусса с выбором максимального элемента на языке VFP:
PROCEDURE гаусс
LPARAMETERS a2,b2,x,n
DIMENSION a2(n,n),b2(n),x(n)
LOCAL ARRAY x1(n),ix(i),a(n,n),b(n)
LOCAL i,j,k,l,m,im,jm,i1,j1,aa,s
* задаем рабочую матрицу и рабочие правые части
FOR i=1 TO n
b(i)=b2(i)
ENDFOR
FOR i=1 TO n
FOR j=1 TO n
a(i,j)=a2(i,j)
ENDFOR
ENDFOR
* массив для хранения номеров элементов вектора решений X
FOR i=1 TO n
ix(i)=i
x(i)=0
x1(i)=0
ENDFOR
FOR k=1 TO n-1
* ищем индексы максимального элемента в матрице k x k
im=k
jm=k
max_a=ABS(a(im,jm))
FOR i1 = k TO n
FOR j1 = k TO n
IF ABS(a(i1,j1))>max_a
max_a=ABS(a(i1,j1))
im=i1
jm=j1
ENDIF
ENDFOR
ENDFOR
* переставляем строки k и im
FOR l=k TO n
aa=a(k,l)
a(k,l)=a(im,l)
a(im,l)=aa
ENDFOR
aa=b(k)
b(k)=b(im)
b(im)=aa
* переставляем столбцы k и jm
FOR l=1 TO n
aa=a(l,k)
a(l,k)=a(l,jm)
a(l,jm)=aa
ENDFOR
* переставляем номера k и jm компонент вектора решений X
aa=ix(k)
ix(k)=ix(jm)
ix(jm)=aa
* приводим к треугольному виду
FOR l=k+1 TO n
p=a(l,k)/a(k,k)
FOR m=k TO n
a(l,m)=a(l,m)-a(k,m)*p
ENDFOR
b(l)=b(l)-b(k)*p
ENDFOR
ENDFOR
* вычисляем x
FOR k=n TO 1 STEP -1
s=0
FOR l=k+1 TO n
s=s+a(k,l)*x1(l)
ENDFOR
x1(k)= (b(k)-s)/a(k,k)
ENDFOR
FOR i=1 TO n
x(ix(i))=x1(i)
ENDFOR
ENDPROC
Контрольные вопросы
1. Дать определение системы линейных уравнений.
2. Дать определение вырожденной матрицы.
3. Привести алгоритм метода Гаусса.
4. Привести алгоритм метода Гаусса с выбором максимального элемента.
5. Привести алгоритм приведения матрицы к треугольному виду.
6. Привести алгоритм определения вектора решения системы линейных уравнений, приведенной к треугольному виду (обратный ход метода Гаусса).
7. Дать определение совместности системы линейных уравнений методом Гаусса.
8. Привести алгоритм табуляции характеристической функции.
Задания
Используя метод Гаусса, решить систему линейных уравнений с точностью до 0,0001.
1.
3,21x1 – 4,25x2 + 2,13x3 = 5,06;
7,09x1 + 1,17x2 – 2,23x3 = 4,75;
0,43x1 – 1,4x2 – 0,62x3 = – 1,05.
2.
0,42x1 – 1,13x2 + 7,05x3 = 6,15;
1,14x1 – 2,15x2 + 5,11x3 = – 4,16;
– 0,71x1 + 0,81x2 – 0,02x3 = – 0,17.
3.
2,5x1 – 3,12x2 – 4,03x3 = – 7,5;
0,61x1 + 0,71x2 – 0,05x3 = 0,44;
– 1,03x1 – 2,05x2 + 0,877x3 = – 1,16.
4.
7,09x1 + 1,17x2 – 2,23x3 = – 4,75;
0,43x1 – 1,4x2 – 0,62x3 = –1,05;
3,21x1 – 4,25x2 + 2,13x3 = 5,06.
5.
1,14x1 – 2,15x2 – 5,11x3= – 4,16;
– 0,71x1 + 0,81x2 – 0,02x3 = – 0,17;
0,42x1 – 1,13x2 + 7,05x3 = 6,15.
6.
0,61x1 + 0,71x2 – 0,05x3 = 0,44;
– 1,03x1 – 2,05x2 + 0,87x3 = – 1,16;
2,5x1 – 3,12x2 – 5,03x3 = – 7,5.
7.
3,11x1 – 1,66x2 – 0,60x3 = – 0.92;
– 1,65x1 + 3,51x2 – 0,78x3 = 2,57;
0,60x1 + 0,78x2 – 1,87x3 = 1,65.
8.
0,10x1 + 12x2 – 0,13x3 = 0,10;
0,12x1 + 0,71x2 + 0,15x3 = 0,26;
– 0,13x1 + 0,15x2 + 0,63x3 = 0,38.
9.
0,71x1 + 0,10x2 + 0,12x3 = 0,29;
0,10x1 + 0,34x2 – 0,04x3 = 0,32;
0,12x1 – 0,04x2 + 0,10x3 = – 0,10.
10.
0,34x1 – 0,04x2 + 0,10x3 = 0,33;
– 0,04x1 + 0,10x2 + 0,12x3 = – 0,05;
0,10x1 + 0,12x2 + 0,71x3 = 0,28.
11.
0,12x1 – 0,43x2 + 0,14x3 = –0,17;
–0,07x1 + 0,34x2 + 0,72x3 = 0,62;
1,18x1 – 0,08x2 – 0,25x3 = 1,12.
12.
1,17x1 + 0,53x2 – 0,84x3 = 1,15;
0,64x1 – 0,72x2 – 0,43x3 = 0,15;
0,32x1 + 0,43x2 – 0,93x3 = –0,48.
13.
0,66x1 – 1,44x2 – 0,18x3 = 1,83;
0,48x1 – 0,24x2 + 0,37x3 = – 0,84;
0,86x1 + 0,43x2 + 0,64x3 = 0,64.
14.
0,82x1 + 0,43x2 – 0,57x3 = 0,48;
–0,35x1 + 1,12x2 – 0,48x3 = 0,52;
0,48x1 + 0,23x2+0,37x3 = 1,44.
15.
1,6x1 + 0,12x2 + 0,57x3 = 0,18;
0,38x1 + 0,25x2 – 54x3 = 0,63;
0,28x1 + 0,46x2 – 1,12x3 = 0,88.
16.
1,16x1 + 1,3x2 – 1,14x3 = 0,43;
0,83x1 – 0,48x2 – 2,44x3 = –0,15;
2x1 – 0,16x2 + 1,3x3 = 1,5.
17.
0,10x1 – 0,04x2 – 0,13x3 = – 0,15;
– 0,04x1 + 0,34x2+0,05x3 = 0,31;
–0,13x1 + 0,05x2 + 0,63x3 = 0,37.
18.
0,63x1 + 0,05x2 + 0,15x3 = 0,34;
0,05x1 + 0,34x2 + 0,10x3 = 0,32;
0,15x1 + 0,10x2 + 0,71x3 = 0,42.
19.
1,20x1 – 0,20x2 + 0,30x3 = –0,60;
– 0,20x1 + 1,60x2 – 0,10x3 = 0,30;
– 0,30x1 + 0,10x2 – 1,5x3 = 0,40.
20.
0,30x1 + 1,20x2 – 0,20x3 = –0,60;
– 0,10x1 – 0,20x2 + 1,60x3 = 0,30;
–1,50x1 – 0,30x2 + 0,10x3 = 40.
21.
0,20x1 + 0,44x2 + 0,81x3 = 0,74;
0,58x1 – 0,29x2 + 0,05x3 = 0,02;
0,05x1 + 0,34x2 + 0,10x3 = 0,32.
22.
6,36x1 + 11,75x2 + 10x3 = –41,70;
7,42x1 + 19,03x2 + 11,75x3 = –49,49;
5,77x1 + 7,42x2 + 6,36x3 = –27,67.
23.
0,40x1 + 0,11x2 + 0,18x3 = 0,47;
0,28x1 – 0,59x2 + 0,03x3 = 0,01;
0,02x1 + 0,24x2 + 0,10x3 = 0,22.
24.
0,18x1 + 0,25x2 – 0,44x3 = 1,15;
0,42x1 – 0,35x2 + 1,12x3 = 0,86;
1,14x1 + 0,12x2 – 0,83x3 = 0,68.
25.
1,2x1 + 0,18x2 – 0,42x3 = 1,5;
0,44x1 + 0,36x2 + 0,12x3 = 1,16;
0,36x1 – 0,42x2 – 0,22x3 = 0,15.
26.
0,64x1 – 0,43x2 + 0,57x3 = 0,43;
0,56x1 + 0,12x2 – 0,27x3 = 0,88;
0,63x1 – 0,83x2 + 0,43x3 = – 0,12.
27.
1,60x1 + 2,18x2 – 0,72x3 = 1,15;
0,43x1 – 0,16x2 + 0,53x3 = 0,83;
0,34x1 + 0,57x2 – 0,83x3 = – 0,42.
28.
0,8x1 – 0,13x2 + 0,63x3 = 1,15;
0,42x1 + 0,57x2 + 0,32x3 = 0,84;
0,54x1 + 0,62x2 – 0,32x3 =0,25