У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА 6 Методы решения систем линейных уравнений

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 11.4.2025

ЛАБОРАТОРНАЯ РАБОТА №6 «Методы решения систем линейных уравнений ».

Студента группы ПВ-22 Малютина Максима.

Задание. Решить систему линейных уравнений методом Гаусса с выбором максимального элемента по столбцу  с точностью до 0,001.

Вариант 8.

При решении системы уравнений методом Гаусса используются следующие формулы:

Шаг № I: (i:=1, n-1)

Среди элементов i столбца (начиная с i-ой строки до n-ой) выбираем max по  модулю элемент. Если их несколько, выбираем первый. Меняем местами i-ое уравнение и отмеченное.

Далее проводим i-ый шаг метода Гаусса:

j:=i+1,n  mj = aji / aii; Вычисляем mj

Далее исключаем xi:

Вычитаем из строк i+1..n i-ую строку, помноженную на m:

k:=i+1,n  

j:=1,n   akj = akj - aij * mk

   bk = bk – bi * mk

Далее осуществляется обратный ход метода Гаусса:


program
gauss_max;

const size=10;

type vector=array[1..size] of real;

    matrix=array[1..size] of vector;

Procedure InputVector(var a:vector;n:byte);

var i:byte;

begin

 for i:=1 to n do

   begin

     writeln('Введите ',i,'-ый элемент ');

     readln(a[i]);

   end;

end;

Procedure InputMatrix(var a:matrix;n:byte);

var i:byte;

begin

 for i:=1 to n do

   begin

     writeln('Введите ',i,'-ую строку матрицы ');

     InputVector(a[i],n)

   end;

end;

Procedure OutputVector(var a:vector;n:byte);

var i:byte;

begin

 for i:=1 to n do write(a[i]:10:5);

 writeln

end;

Procedure OutputMatrix(var a:matrix;n:byte);

var i:byte;

begin

 for i:=1 to n do outputvector(a[i],n)

end;

Procedure MulVector(a:matrix;ma,na:byte;b:vector;nb:byte;var c:vector;var nc:byte);

var i,j:byte;

   s:real;

begin

 if na=nb then

   begin

     nc:=nb;

     for i:=1 to nc do

       begin

         s:=0;

         for j:=1 to nc do s:=s+a[i,j]*b[j];

         c[i]:=s

      end;

   end

     else

       begin

          writeln('Неверные размеры матриц !!! ');

          halt

       end;

end;

Procedure SwapVector(var a,b:vector);

var n:vector;

begin

 n:=a;

  a:=b; 

  b:=n

end;

Procedure Swap(var a,b:real);

var n:real;

begin

 n:=a;

  a:=b;

  b:=n

end;

Procedure GetMaxEl(a:matrix;n,i:byte;var l:byte);

var k:byte;

   max:real;

begin

 max:=abs(a[i,i]);l:=i;

 for k:=i to n do

   if abs(a[k,i])>max then

     begin

       max:=abs(a[k,i]);

       l:=k

     end;

end;

Procedure GetAm(var a:matrix;var b:vector;n:byte);

var i,j,k,l:byte;

   m:vector;

begin

 for i:=1 to n-1 do

   begin

     GetMaxEl(a,n,i,l);

     SwapVector(a[i],a[l]);

     Swap(b[i],b[l]);

     for j:=i+1 to n do m[j]:=a[j,i]/a[i,i];

     for k:=i+1 to n do

       begin

         for j:=1 to n do a[k,j]:=a[k,j]-a[i,j]*m[k];

         b[k]:=b[k]-b[i]*m[k]

       end;

   end;

end;

Procedure GetX(a:matrix;b:vector;n:byte;var x:vector);

var k,l:byte;

   s:real;

begin

 x[n]:=b[n]/a[n,n];

 for k:=n-1 downto 1 do

 begin

   s:=0;

   for l:=k+1 to n do s:=s+a[k,l]*x[l];

   x[k]:=(b[k]-s)/a[k,k]

 end;

end;


var a,am:matrix;

   b,x,x2:vector;

   n:byte;

begin

 writeln('Введите размерность матрицы коэффициентов ');readln(n);

 writeln('Введите элементы матрицы коэффициентов ');

 InputMatrix(a,n);

 writeln('Введите вектор свободных членов ');

 InputVector(b,n);

 am:=a;

 GetAm(am,b,n);

 writeln('Матрица Am ');

 outputmatrix(am,n);

 GetX(am,b,n,x);

 writeln('Вектор X ');

 outputvector(x,n);

 MulVector(a,n,n,x,n,x2,n);

 writeln('Проверка: Вектор X2 - умножение матрицы Am на X ');

 outputvector(x2,n)

end.

Матрица А:      Вектор B:

  10.00000   6.00000   2.00000   0.00000      25.00000   8.00000   2.50000   1.50000

   0.00000   6.00000  -2.00000   2.00000

   0.00000   3.20000   0.40000  -1.00000

   0.00000  -2.00000  -3.00000   4.00000

Матрица Am

 10.00000   6.00000   2.00000   0.00000

  0.00000   6.00000  -2.00000   2.00000

  0.00000   0.00000  -3.66667   4.66667

  0.00000  -0.00000  -0.00000  -0.20000

Вектор X

  2.00000   1.00000  -0.50000   0.50000

Проверка: Вектор X2 - умножение матрицы Am на X

 25.00000   8.00000   2.50000   1.50000




1. Метаморфизм Метаморфические горные породы
2. Тема снижения затрат всегда является актуальной
3. Найти определители матриц АВС
4. Нагаев Алексей Иванович
5.  Введение Символ Символ Одноминутного Менеджера изображение одной минуты на циферблате современных эл
6. Введение в вирусологию
7. УТВЕРЖДАЮ РЕСТОРАН СТАНДАРТ СЕРВИРОВКИ СТОЛА НА ОБСЛУЖИВАНИЕ БАНКЕТОВ ФУРШЕТО
8. Экология и природопользование специализация Экспертиза экологической безопасности Что явля
9. Понятие задачи и виды обыска Конституция Российской Федерации гарантирует гражданам неприкосновенность
10. 0162001 РД 1533400315000 СОГЛАСОВАНО Федерация Независимых Профсоюзов Р