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

2016-07-31СтудИзба

Описание файла

Документ из архива "Метод Гаусса с выбором главной переменной", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "45969"

Текст из документа "45969"

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

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

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

#include

#include

#include

#include

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> 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 Таблица значений.

abОтветы:

00X1 = -12.660899

X2 = -16.107649

X3 = 5.273899

X4 = 66.299137

1X1 = -12.132586

X2 = -14.858407

X3 = 5.186943

X4 = 63.347289

2X1 = -11.604272

X2 = -13.609166

X3 = 5.099988

X4 = 60.39544

3X1 = -11.075957

X2 = -12.359925

X3 = 5.013031

X4 = 57.443595

4X1 = -10.547642

X2 = -11.110685

X3 = 4.926076

X4 = 54.491746

5X1 = -10.019327

X2 = -9.861445

X3 = 4.839121

X4 = 51.539901

10X1 = 13.959632

X2 = -39.106359

X3 = 7.324007

X4 = -27.756765

1X1 = 16.668562

X2 = -46.672114

X3 = 8.73446

X4 = -33.605312

2X1 = 19.377489

X2 = -54.237864

X3 = 10.144913

X4 = -39.453861

3X1 = 22.086416

X2 = -61.803618

X3 = 11.555367

X4 = -45.30241

4X1 = 24.795347

X2 = -69.369373

X3 = 12.96582

X4 = -51.150959

5X1 = 27.504276

X2 = -76.935127

X3 = 14.376274

X4 = -56.999508

20X1 = 1.033843

X2 = -1.696273

X3 = 0.997951

X4 = -0.211727

1X1 = 1.191176

X2 = -2.016845

X3 = 1.183171

X4 = -0.486773

2X1 = 1.348508

X2 = -2.337417

X3 = 1.36839

X4 = -0.761819

3X1 = 1.505841

X2 = -2.657989

X3 = 1.55361

X4 = -1.036865

4X1 = 1.663174

X2 = -2.978561

X3 = 1.73883

X4 = -1.311911

5X1 = 1.820507

X2 = -3.299134

X3 = 1.92405

X4 = -1.586957

30X1 = 0.772977

X2 = -0.794749

X3 = 0.762146

X4 = 0.13016

1X1 = 0.872765

X2 = -0.954303

X3 = 0.902687

X4 = -0.008559

2X1 = 0.972553

X2 = -1.113856

X3 = 1.043229

X4 = -0.147278

3X1 = 1.072341

X2 = -1.27341

X3 = 1.18377

X4 = -0.285998

4X1 = 1.172129

X2 = -1.432964

X3 = 1.324311

X4 = -0.424717

5X1 = 1.271917

X2 = -1.592518

X3 = 1.464853

X4 = -0.563436

40X1 = 0.675128

X2 = -0.476895

X3 = 0.645225

X4 = 0.196021

1X1 = 0.754634

X2 = -0.580642

X3 = 0.763131

X4 = 0.105936

2X1 = 0.83414

X2 = -0.68439

X3 = 0.881037

X4 = 0.015852

3X1 = 0.913647

X2 = -0.788137

X3 = 0.998942

X4 = -0.074233

4X1 = 0.993153

X2 = -0.891884

X3 = 1.116848

X4 = -0.164317

5X1 = 1.072659

X2 = -0.995631

X3 = 1.234754

X4 = -0.254402

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5155
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее