ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Реализация алгоритма Гаусса на языке Turbo Pascal
Введем двумерный массив
const n_max=20; type dim2=array[1..n_max, 1..n_max] of real;
и запишем процедуру решения СЛАУ методом исключения Гаусса:
procedure Gauss_01(var a:dim2; n:integer); var i,j,k,np,kp:integer; s:real; begin np:=n+1; for k:=1 to n do { прямой ход} begin kp:=k+1; for j:=kp to np do { нормировка на единицу диагонального элемента } a[k,j]:=a[k,j]/a[k,k]; for i:=kp to np do { последовательное исключение всех элементов в к-ом столбце} for j:=kp to np do a[i,j]:=a[i,j]-a[i,k]*a[k,j]; end; for i:=n-1 downto 1 do {обратный ход} begin s:=a[i,n+1]; for j:=i+1 to n do s:=s+a[i,j]*a[j,np]; a[i,np];=s end end;
Обратите внимание, где размещены результаты вычислений. Прежде всего, необходимо отладить программу и произвести тестовые расчеты. Для тестирования можно рассмотреть различные способы формирования матрицы . Приведем, простую процедуру:
procedure Data (var a:dim2; var n:integer); var i, j:integer; begin n:=4; for i:=1 to n do begin for j:=1 to n do if i=j then a[i,j]:=4.0 else a[i,j]:=1.0; a[i, n+1]:=i*1.0 end end;
Таким образом, формируется исходная система уравнений: , (1.7) результатом вычислений которой является вектор Прямой ход метода Гаусса строится на трех вложенных циклах (см. листинг подпрограммы), следовательно общее число арифметических операций, требуемых для приведения матрицы к верхнетреугольному виду, будет пропорционально Эту оценку принято записывать как Обратный ход метода исключения Гаусса требует на порядок меньше операций Для сравнения отметим, что в методе Крамера на вычисление только одного определителя требуется порядка n! операций. Так, при n=100 по формуле Стирлинга получим Эта вычислительная проблема, связанная с использованием метода Крамера, названа математиками «проклятием размерности». Алгоритм Гаусса требует всего порядка операций. Он прост, нагляден и является одним из лучших алгоритмов решения линейных систем.
Не нашли, что искали? Воспользуйтесь поиском:
|