- •Рабочее задание
- •Варианты заданий к лабораторной работе 1
- •Отделение корней уравнения
- •Результат
- •Уточнение корней методом половинного деления
- •Текст программы
- •Текст программы
- •Текст программы
- •Результат
- •Определитель
- •Обратные матрицы
- •Текст процедуры обращения матриц
- •Метод Гаусса-Жордана
- •Текст процедуры
- •Текст процедуры
- •Метод Зейделя
- •Текст процедуры метода Зейделя
- •Расчет определенного интеграла методом Симпсона
- •Текст функции расчета определенного интеграла
- •Расчет определенного интеграла с эаданной точностью
- •Текст программы
- •Текст программы
- •Интерполяционный многочлен Лагранжа
- •Текст функции расчета многочлена Лагранжа
Текст процедуры обращения матриц
procedure obrash(n:integer; a:mat; var aa:mat);
var i,j,k:integer; max:real; c:mat2;
begin { формирование расширенной матрицы}
for i:=1 to n do
begin for j:=1 to n do
begin c[i,j]:=a[i,j];c[i,j+n]:=0
end; c[i,i+n]:=1
end; { превращение левой половины расширенной}
{ матрицы в единичную матрицу}
for i:=1 to n do
begin max:=c[i,i];
for k:=1 to 2*n do c[i,k]:=c[i,k]/max;
for j:=1 to n do
if i<>j then
for k:=2*n downto 1 do
c[j,k]:=c[j,k]-c[j,i]*c[i,k];
end;
{ перезапись правой части расширенной}
{ матрицы в обратную матрицу}
for i:=1 to n do
for j :=1 to n do
aa[i, j]:=c[i, n+j];
end;
Процедура может быть усовершенствована организацией выбора главного элемента.
Метод Гаусса-Жордана
Метод Гаусса-Жорданв является одной из модификаций метода Га-усса, легко программируемой на ЭВМ. Метод основан на приведении матрицы системы к диагональной единичной матрице. Это достигается последовательным исключением неизвестных из уравнений системы.
Сначала нормируется первое уравнение делением его на диагональ-ный коэффициент a1 1. Затем нормированное первое уравнение умножа-ют на первые коэффициенты ai 1 всех других уравнений и последователь-но вычитают из всех остальных уравнений. В результате первая неизве-стная будет исключена из всех уравнений кроме первого.
На втором этапе нормируется второе уравнение делением его на диа-гональный коэффициент a2 2. После этого второе уравнения последова-тельно умножается на вторые коэффициенты ai 2 всех других уравнений и вычитается из всех уравнений кроме второго. В результате из этих урав-нений исключается вторая неизвестная.
Повторяя эти вычисления для всех уравнений получают решение сис-темы записанное в векторе-столбце свободных членов.
Уравнение или строка коэффициентов, нормируемые на каждом этапе, называются ведущей или главной строкой, а нормирующий коэф-фициент называется ведущим или главным элементом.
В описанной последовательности вычислений главный элемент не выбирался, а полагался равным диагональному ai i, и поэтому изложен-ный вариант получил название метода Гаусса-Жордана без выбора глав-ного элемента. Блок-схема процедуры, дополненная расчетом определи-теля, показана на рис. 3.1.
Текст процедуры
метода Гаусса-Жордана без выбора главного элемента
procedure gj1(n:integer; a:matr; var x:vec; var det:real);
var i,j,k:integer; max:real;
begin det:=1; for i:=1 to n do
begin max:=a[i,i]; det:=det*max;
for k:=1 to n+1 do a[i,k]:=a[i,k]/max;
for j:=1 to n do
if i<>j then
for k :=n+1 downto 1 do
a[j,k]:=a[j,k]-a[j,i]*a[i,k];
end; for i:=1 to n do x[i]:=a[i, n+1]
end;
det=1
i=1, n
max=ai i
det=det*max
k=1, n+1
ai k=ai k/max
j=1, n
нет
i j
да
k=n+1, 1, -1
aj k=aj k-aj i ai k
i=1, n
xi=ai n+1
конец процедуры
Рис 3.1 Блок-схема
процедуры метода Гаусса-Жордана
без выбора главного элемента
det=1
i=1, n
ri=i
i=1, n
max=ai i , nomj=i, nomk=i i=1, n
j=i+1, n xri=ai n+1
k=i+1, n
нет конец процедуры
|max|<|aj k|
да
max=aj k, nomj=j, nomk=k
да
nomji det=-det
нет
да
nomki det=-det
нет
m=rnomk, rnomk=ri, ri=m, det=det*max
j=1, n
u=aj nomk, aj nomk=aj i, aj i=u
k=1, n+1
u=anomj k, anomj k=ai k, ai k=u/max
j=1, n
нет
j i
да
k=n+1, 1, -1
aj k=aj k-aj i*ai k
Рис. 3.2 Блок-схема процедуры метода Гаусса-Жордана
с выбором главного элемента
Применение метода становится затруднительным или невозможным, если на каком-либо этапе диагональный коэффициент ai i становится равным или близким к нулю. Во многих случаях эту трудность можно обойти изменив последовательность записи неизвестных в уравнениях и порядок, в котором расположены уравнения. Для этого из всех оставших-ся в матрице системы элементов нужно найти наибольший по модулю элемент и переставить неизвестные и уравнения так, чтобы этот элемент оказался на месте диагонального элемента ai i. Благодаря выбору наи-большего по модулю главного элемента уменьшаются множители, используемые для преобразования уравнений, что способствует сниже-нию погрешностей вычислений. Блок-схема метода Гаусса-Жордана с выбором главного элемента в матрице системы и перестановкой строк и столбцов представлена на рис. 3.2. Для запоминания последовательно-сти неизвестных в уравнениях введен дополнительный массив ri , значе-ниями элементов которого являются номера неизвестных. Через max, nomj и nomk обозначены наибольший элемент и номера занимаемых им строки и столбца.