Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

ЛАБОРАТОРНАЯ РАБОТА №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.  Квартира 16 000 р
11. реферат дисератції на здобуття наукового ступеня кандидата економічних наук Харків ~ Дис
12. Доклад- Максим Грек
13. Организационно-экономическая характеристика ОАО Гачевская сельхозтехника
14. Принципиальной конструктивной особенностью жилого комплекса в кантоне Цуг является прод
15. Запад Франции славящийся своей кухней.
16. а Индекс уникален для любого экземпляра книги среди всех книг в библиотеках города Автор строка Назв
17. 85 Стр 54
18. яйцо; куколка; имаго; личинка; кокон
19. 2005 Дисертацією є рукопис
20. ТЕМА 5 Оборотные средства План 1