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

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

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


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


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


#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 << "nn 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:gaussmat.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 << "nn ";


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


<
/td>

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




Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:2191
Символов:20011
Размер:39.08 Кб.