Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод простой итерации решения СЛАУ на C++

.cpp
Скачиваний:
24
Добавлен:
02.05.2014
Размер:
1.33 Кб
Скачать
//Метод простой итерации решения СЛАУ

#include <stdio.h>
#include <conio.h>
#include <math.h>


	const n = 5;

	float A[n][n] = {
					{ 79.2,   0,  35, 19.8,  24 },
					{ 39.6,  85,   0, 19.8,  25 },
					{ 19.8, -15,  45,    0,  10 },
					{ 49.5,  18,  20, 89.1,   0 },
					{  9.9,  15,  20,-49.5,  95 },
					};

	float  B[n]  = { 86, 55, 77, 5, -64};

	float  X[30][n] = {0};
	float  TEST[n];
    float  summ;
	float  eps;
	int    k = 0;


bool ExitFunc(float eps)
{
    if(k == 0) return true;
    for(int i=0; i<n; i++){
    if( fabs(X[k][i]-X[k-1][i]) > eps )
        return true;       
    }return false;      
}

void main(void)
	{	
	printf("Enter eps:");
    scanf("%f",&eps);
	do 
	{
	for(int i=0; i<n; i++)        
	    {
        summ = 0;
        for(int j=0; j<n; j++)
           if(i!=j)
              summ += A[i][j] * X[k][j];			   		    
		X[k+1][i] = (1/A[i][i]) * (B[i] - summ);			
		}
    k++;    
	}while(ExitFunc(eps));

	//Проверка
    printf("\nResult:\n");
    for(int j=0; j<n; j++)
	   printf("%4.8f   ",X[k][j]); 

    printf("\nTest:\n");
	for(int i=0; i<n; i++)
	    {
	    for(int j=0; j<n; j++)
		   TEST[i] +=(A[i][j] * X[k][j]);
		printf("%4.8f  ", TEST[i]);
		}
               
	printf("\nIterations:\n%i",k);	
    getch();
	}