• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 12
KM.RU
Рефераты
Главная → Рефераты → Информатика, программирование
  • Новости
  • В России
  • В мире
  • Экономика
  • Наука и техника
  • Недвижимость
  • Авто
  • Туризм
  • Здоровье
  • Спорт
  • Музыка
  • Кино
  • Стиль
  • Телевидение
  • Спецпроекты
  • Книги
  • Telegram-канал

Поиск по рефератам и авторским статьям

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

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

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

Текст программы.

#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

Дата добавления: 15.05.2001

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


официальный сайт © ООО «КМ онлайн», 1999-2025 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.


Организации, запрещенные на территории Российской Федерации
Telegram Logo

Используя наш cайт, Вы даете согласие на обработку файлов cookie. Если Вы не хотите, чтобы Ваши данные обрабатывались, необходимо установить специальные настройки в браузере или покинуть сайт.