Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2010, 15:03   #1
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию Метод Зейделя

Ув. программисты! Есть код решающий СЛАУ методом Зейделя, но ответ выдается странный. Что не так? Как исправить? Помогите исправить код.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
#define N               3     // size of matrix
#define N1              N+1
float matrix[N][N1]=
      {{4,1,-5,11},
       {3,4,2,1},
       {1,5,5,-10}
      };
	
float z[N]={11.0/4.0,4.0/1.0,5.0/-10.0};    // first iteration
double epsilon=0.001;  // required accuracy
            

/*void GetMatrix (void)
{
	float r;
	for (int i=0; i<N; i++)
		for (int j=0; j<N1; j++)
		{
			scanf("%f", &r);
			matrix[i][j]=r;

		}
}*/
void ShowMatrix(void)
{
  for (int i=0;i<N;i++)
  {
       for (int j=0;j<N;j++)
            printf("%+f*x%d",matrix[i][j],i+1);
       printf("=%f\n",matrix[i][N]);
  }
}

void main(void)
{
  // Variables declaration

  float x[N];
  short int i,j;
  int iterations=0,finish=0;
  // Printing given matrix
//GetMatrix();
  ShowMatrix();
  while (!finish)
  {
     finish=1;
     for (i=0;i<N;i++)
    {
        x[i]=-matrix[i][N];
        for (j=0;j<N;j++) x[i]+=matrix[i][j]*z[j];
       // don't stop iterations until required accuracy is reached
       if (fabs(x[i]/matrix[i][i])>=epsilon) finish=0;
       x[i]=z[i]-x[i]/matrix[i][i];
      // next iteration
      z[i]=x[i];
    }
    iterations++;
	if (iterations==20) printf("20 iter"); 
	if (iterations==100) printf("100 iter");
	if (iterations==2000) printf("2000 iter");
  }
  // Printing solution
  printf("\nSolution:\n");
  for (i=0;i<N;i++)
      printf("x%d=%f\n",i+1,x[i]);
  printf("%d iterations were made",iterations);
}
True_girl вне форума Ответить с цитированием
Старый 19.04.2010, 16:16   #2
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию

ПОМОГИТЕ! ПОЖАЛУЙСТА!
True_girl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СЛАР метод Зейделя maloy-rom Общие вопросы C/C++ 4 17.02.2010 23:03
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40
метод Зейделя на Паскале(график) Neznau Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2009 20:02