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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2014, 14:14   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Метод зейделя

Ребята, помогите найти программу решения систем алгебраических уравнений методом Зейделя. Код нужен на С++ или на С#. Переделывать с паскаля, с джавы или еще с чего-то нет не времени не сил. Нашел десяток разных реализаций и чуть ли не каждая выдавала свой уникальный ответ на разные входные данные. При этом в интернет онлайн-калькуляторе выдавался еще один уникальный ответ. Я иссяк уже

Последний раз редактировалось Praud; 16.08.2014 в 14:23.
Praud вне форума Ответить с цитированием
Старый 16.08.2014, 14:58   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Так вы не ищите готовую реализацию, а найдите алгоритм и сами его реализуйте... Вот тогда будет самый правильный ответ....
Шикарная ссылка: http://shpora.gixx.ru/shpory/%D0%9C%...0%BB%D1%8F.htm
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 16.08.2014, 16:03   #3
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Код:
const int n = 3;

using namespace std;

int main()
{
   double A[n][n]; // входная матрца
   double b[n]; // свободные члены
   double x[n]; // решение
   double eps; // требуемая точность вычисления
   double c = 0;
   double p = 0;
   
   cout<<"eps: ";
   cin>> eps;

   cout<<"Matrix:"<<endl;

   for(int i=0;i<n;i++)
	   for(int j=0;j<n;j++)
		   cin>>A[i][j];
   
   cout<<"Koef:"<<endl;
   for(int i=0;i<n;i++)
	   cin>>b[i];

   for(int i = 0; i < n; i++)
   {
		p = 0;
		for(int j = 0; j < n; j++)
		{
			if(i!=j)
				p = p+fabs(A[i][j]/A[i][i]);
		}
		if(c < p)
			c = p;
   }

   for(int i = 0; i < n; i++)
	   x[i] = b[i] / A[i][i];
	
   do{
		p = 0;
		for(int j = 0; j < n; j++)
		{
			c = x[j];
			x[j] = b[j];
			for(int i = 0; i < n; i++)
			{
				if(i!=j)
					x[j]=x[j]-A[j][i]*x[i];
			}
			x[j] = x[j] / A[j][j];
			if(abs(c - x[j]) > (1 - c) / c * eps)
				p+=1;
		}
   }while(p > 1);
	
   cout<<endl<<"Results:"<<endl;
   for(int i = 0; i < n; i++)
	   cout<< x[i]<< endl;

   _getch();
    return 0;
}
Вот по предоставленному выше методу решения попытался написать код и я вишу в бесконечном цикле.
Входные данные брал из того же источника.
Praud вне форума Ответить с цитированием
Старый 16.08.2014, 17:13   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Praud
На каких данных ты "висишь в бесконечном цикле"?
МБ ты данные будешь с файла вводить - там тестировать проще (не надо каждый раз матрицы руками вводить) и можно файл с матрицей нам скинуть... (мы тоже попробуем).
rrrFer вне форума Ответить с цитированием
Старый 19.08.2014, 11:40   #5
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Интернета не было, не мог ответить.

Код:
// входная матрца
	double A[n][n] = {
						{4.2 , 2.3 , 1.3}, 
						{-1.3 , 7.2, 5.4},
						{2.3 , 5.1, 11.2}
					};
   double b[n] = {6.1 , 8.6 , 8.2 };  // свободные члены
Praud вне форума Ответить с цитированием
Старый 20.08.2014, 12:12   #6
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Рабочий код нашелся) Помогите написать достаточное условие сходимости метода или может у кого-то имеется. Заранее спасибо.
Praud вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Зейделя manyak666 Помощь студентам 0 26.03.2013 18:15
метод Зейделя. c++ Онечка Помощь студентам 0 14.01.2013 09:11
метод простых операций и метод гаусса зейделя tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 1 23.09.2012 14:46
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40