Реферат

Реферат Метод Гаусса с выбором главной переменной

Работа добавлена на сайт bukvasha.net: 2015-10-28

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

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

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

от 25%

Подписываем

договор

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

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



Метод Гаусса с выбором главной переменной

(
практическая работа по компьютерной алгебре
)

Текст программы.
#include <fstream.h>

#include <math.h>

#include <conio.h>

#include <stdlib.h>
const num = 4;

int i,j,I,J;

int c[num+1];

long double x[num+1];

long double max;

long double A[num][num+1];

// -----------------------------------------------------------

void max_el(int sr, int st)

{       max = A[num+1-sr][num+2-st];

   I = num+1-sr;

   J = num+2-st;

   for (i = num+1-sr ; i<=num ; i++)

   {

               for (j = num+2-st ; j<=num ; j++)

               {

               if (fabs(A[i][j]) > fabs(max))

                           {

                           max = A[i][j];

                           I = i;

                           J = j;

                           }

               }

   }

   cout << "\n\n Max = " << max << "  I=" <<  I<< "  J=" <<  J;

}

// -----------------------------------------------------------

void print(int sr,int st)

{

  cout << "\n";

    int i,j;

   for (i = num+1-sr ; i<=num ; i++)

   {

               for (j = num+2-st ; j<=num+1 ; j++)

               {

               if (A[i][j] < 0 ) gotoxy(12*j + j - 1,i+1);

                           else gotoxy(12*j + j,i+1);

               cout << A[i][j];

               }

   }

}

// ------------------------------------------------------------------

void preob(int S)

{

  int i,j;

  long double temp;

   for (j = S; j<=num+1; j++) A[S][j] = A[S][j]/max;

    for (i = S + 1; i <= num; i++)

     {

      temp = A[i][S];

      for (j = S; j<= num+1 ; j++) A[i][j] = A[i][j] - A[S][j]*temp;

     }

}

// ------------------------------------------------------------------

void perestanovka(int sr,int st)

{

    if (J != (num+1-sr))

{

   for (i = 1; i<=num; i++) {

   A[i][J] = A[i][J] + A[i][num+1-sr];

   A[i][num+1-sr] = A[i][J] - A[i][num+1-sr];

   A[i][J] = A[i][J] - A[i][num+1-sr];

   }

   c[J] = c[J] + c[num+1-sr];

   c[num+1-sr] = c[J] - c[num+1-sr];

   c[J] = c[J] - c[num+1-sr];

   }
   if (I != (num+2-st))

   {

   for (j = 1; j<=num+1; j++) {

   A[I][j] = A[I][j] + A[num+2-st][j];

   A[num+2-st][j] = A[I][j] - A[num+2-st][j];

   A[I][j] = A[I][j] - A[num+2-st][j]; }

      }

}

// ------------------------------------------------------------------

void otvet()

{

float temp;

for (i=num; i>=1; i--)

   {

   temp = A[i][num+1];

   for(j = num; j > i; j--) temp = temp - A[i][j]*x[j];
   x[i] = temp/A[i][i];

   }

}

// ------------------------------------------------------------------

void interface()

{

       clrscr();

   print(num,num+1);

   cout << "\n Массив перестановок столбцов ";

      for (i = 1; i <= num ;i++) cout << " " << c[i];

}

// ------------------------------------------------------------------

void load_file()

{

char ch;

 ifstream in("c:\\gauss\\mat.dat");

 cout << "\n";

   for (i = 1 ; i<=num ; i++)

   {

          c[i] = i;

          while (ch != '|') in >> ch;

          ch = 'q';

          for (j = 1 ; j<=num+1 ; j++) in >> A[i][j];

   }

}

// ------------------------------------------------------------------

void main()

{

clrscr();

load_file();

int g;
for(g = num+1; g >= 3; g--)

{

    interface();  max_el(g-1,g); getch();

    perestanovka(g-1,g); interface(); getch();

               preob(num+2-g);  interface(); getch();

}

clrscr();

   print(num,num+1);

   otvet();

   print(num,num+1);

   cout << "\n\n   ";
   long double X[num];

   for (i=1; i<=num; i++) X[c[i]] = x[i];

      for (i=1; i<=num; i++) cout << " X" << i << " = " << X[i];

 getch();

}




Тестовые задания.

Задание №1 (найти неизвестные):

4.24x1 + 2.73x2  - 1.55x3 =  1.87

2.34x1 + 1.27x2 + 3.15x3 =  2.16

3.05x1  - 1.05x2  - 0.63x3  = -1.25
1.1 Результат выполнения программы:

x1 = - 0.025461 x2 = 0.915112 x3 = 0.335678
1.2 Расчёт погрешности вычисления:

4.24*(- 0.025461) + 2.73*0.915112  - 1.55*0.335678 =   1,87000022  погрешность:   2,2*10-7

2.34*(- 0.025461) + 1.27*0.915112 + 3.15*0.335678 =   2,1599992    погрешность:   8,0*10-7

3.05*(- 0.025461)  - 1.05*0.915112  - 0.63*0.335678 =  -1,25000079  погрешность:   7,9*10-7
средняя погрешность вычисления: 6,0*10-7
Задание №2 (найти неизвестные):

3.81x1 +         0.25x2 +      1.28x3 + (0.75+a)x4 = 4.21

       2.25x1 +         1.32x2 + (4.5+a)x3 +        0.49x4 = 6.47+b

       5.31x1 + (0.28+a) x2 +      0.98x3 +        1.04x4 = 2.38

(9.39+a)x1 +         2.45x2 +      3.35x3 +        2.28x4 = 10.48+b
a = (0,1,2,3,4) b = (0,1,2,3,4,5)
2.1 Таблица значений.


a

b

Ответы:

0

0

X1 = -12.660899





X2 = -16.107649





X3 = 5.273899





X4 = 66.299137



1

X1 = -12.132586





X2 = -14.858407





X3 = 5.186943





X4 = 63.347289



2

X1 = -11.604272





X2 = -13.609166





X3 = 5.099988





X4 = 60.39544



3

X1 = -11.075957





X2 = -12.359925





X3 = 5.013031





X4 = 57.443595



4

X1 = -10.547642





X2 = -11.110685





X3 = 4.926076





X4 = 54.491746



5

X1 = -10.019327





X2 = -9.861445





X3 = 4.839121





X4 = 51.539901

1

0

X1 = 13.959632





X2 = -39.106359





X3 = 7.324007





X4 = -27.756765



1

X1 = 16.668562





X2 = -46.672114





X3 = 8.73446





X4 = -33.605312



2

X1 = 19.377489





X2 = -54.237864





X3 = 10.144913





X4 = -39.453861



3

X1 = 22.086416





X2 = -61.803618





X3 = 11.555367





X4 = -45.30241



4

X1 = 24.795347





X2 = -69.369373





X3 = 12.96582





X4 = -51.150959



5

X1 = 27.504276





X2 = -76.935127





X3 = 14.376274





X4 = -56.999508

2

0

X1 = 1.033843





X2 = -1.696273





X3 = 0.997951





X4 = -0.211727



1

X1 = 1.191176





X2 = -2.016845





X3 = 1.183171





X4 = -0.486773



2

X1 = 1.348508





X2 = -2.337417





X3 = 1.36839





X4 = -0.761819



3

X1 = 1.505841





X2 = -2.657989





X3 = 1.55361





X4 = -1.036865



4

X1 = 1.663174





X2 = -2.978561





X3 = 1.73883





X4 = -1.311911



5

X1 = 1.820507





X2 = -3.299134





X3 = 1.92405





X4 = -1.586957

3

0

X1 = 0.772977





X2 = -0.794749





X3 = 0.762146





X4 = 0.13016



1

X1 = 0.872765





X2 = -0.954303





X3 = 0.902687





X4 = -0.008559



2

X1 = 0.972553





X2 = -1.113856





X3 = 1.043229





X4 = -0.147278



3

X1 = 1.072341





X2 = -1.27341





X3 = 1.18377





X4 = -0.285998



4

X1 = 1.172129





X2 = -1.432964





X3 = 1.324311





X4 = -0.424717



5

X1 = 1.271917





X2 = -1.592518





X3 = 1.464853





X4 = -0.563436

4

0

X1 = 0.675128





X2 = -0.476895





X3 = 0.645225





X4 = 0.196021



1

X1 = 0.754634





X2 = -0.580642





X3 = 0.763131





X4 = 0.105936



2

X1 = 0.83414





X2 = -0.68439





X3 = 0.881037





X4 = 0.015852



3

X1 = 0.913647





X2 = -0.788137





X3 = 0.998942





X4 = -0.074233



4

 X1 = 0.993153





X2 = -0.891884





X3 = 1.116848





X4 = -0.164317



5

X1 = 1.072659





X2 = -0.995631





X3 = 1.234754





X4 = -0.254402





1. Реферат на тему The House Of Bernarda Alba A Contribution
2. Контрольная работа на тему Административно правовой статус общественных объединений
3. Контрольная работа на тему Информационные технологии на транспорте 2
4. Реферат на тему Human CloningArgumentative Essay Research Paper Lomax 1Lance
5. Реферат Мальтийский пресноводный краб
6. Курсовая Розробка плану покриття комірковим звязком
7. Реферат на тему Психология разрешения конфликтов между руководителем и подчиненными
8. Курсовая Русская свадебная обрядность в контексте русской культуры история и современность
9. Реферат Анализ стиля руководства на примере ООО Сибинпэкс
10. Курсовая Корпоративная культура в международных компаниях и пути ее совершенствования