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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2013, 09:11   #1
Онечка
Новичок
Джуниор
 
Регистрация: 14.01.2013
Сообщений: 1
Восклицание метод Зейделя. c++

В цикле do while есть ошибка, из-за неё программа не правильно считает Xold и Xnew. Помогите, пожалуйста, найти ошибку...
Код:
#pragma once

#include <iostream>//Подключение библиотеки стандартного ввода-вывода;
#include<conio.h>//Подключение библиотеки консольного ввода-вывода;
#include<iostream>//Подключение библиотеки потокового ввода-вывода;
#include<math.h>//Подключение библиотеки математических функций;

using namespace std;
void main()
{
	int i,j,m,n;
	double a[10][10],c[10][10],b[10],d[10],Xold[3], Xnew[3], eps, max;

	eps=0.00001;

	
 cout<<endl<<"Vvedite matricu A postrochno"<<endl;
  for (i=0; i<=2; i++)     
	  for (j=0; j<=2; j++)
	  {
	    cin>>a[i][j];
		  while ((i==j)&&(a[i][i]==0.0))
     	{		
	    	cout<<"Error! Enter a[i][i] again!";
		    cin>>a[i][j];
	    }
	  }

        
 
cout<<endl<<"Vasha matrica"<<endl;
   for (i=0; i<=2; i++) 
      { cout << "\n stroka" << (i+1) << ":";
       for (j=0; j<=2; j++)
       cout<<"\t"<<a[i][j];
      }

  
   
    cout<<endl<<"Vvedite matricu B postrochno"<<endl;
   for (int i=0; i<3; i++)
	   cin>>b[i];

   cout<<endl<<"Vash stolbec"<<endl;
   for (i=0; i<3; i++) 
             cout<<"\t"<<b[i]<<endl;


  
   
   for(i=0;i<=2;i++)
   {
	   for(j=0;j<=2;j++)
	   {
		   c[i][j]=-a[i][j]/a[i][i];
		   if(i==j)c[i][j]=0;
		  cout<<"c="<<c[i][j]<<endl;
		  
	   }
	      
	    d[i]=b[i]/a[i][i];
        cout<<"d="<<d[i]<<endl;
	   
   }

   Xnew[0]=1.1;   
   for(i=1;i<3;i++)Xnew[i]=0.9;
   
do 
{
  for (i=0;i<3;i++)Xold[i]=Xnew[i];
  Xnew[0]=0.0;
  for (j=0;j<3;j++)Xnew[0]+=c[0][j]*Xold[j];
  max=fabs(Xnew[0]-Xold[0]);
  for (i=1;i<3;i++)
  {
      Xnew[i]=0.0;
	  for (j=0;j<=(i-1);j++)Xnew[i]+=c[i][j]*Xnew[j];
      for (j=i;j<3;j++)Xnew[i]+=c[i][j]*Xold[j];
	  if( max<fabs(Xnew[i]-Xold[i]))
		  max=fabs(Xnew[i]-Xold[i]);
  } 
  

}
while(max>eps);

for (i=0;i<3;i++)cout<<"Xold="<<Xold[i]<<endl;
cout<<"max="<<max<<endl;

getch ();
}
Онечка вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Зейделя ксю03 Помощь студентам 1 10.12.2012 00:14
метод простых операций и метод гаусса зейделя tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 1 23.09.2012 14:46
метод Зейделя SeregaTihonov Общие вопросы C/C++ 0 12.12.2011 20:17
Метод Зейделя True_girl Помощь студентам 1 19.04.2010 16:16
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40