Форум программистов, компьютерный форум CyberForum.ru

метод Зейделя. c++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.69
Онечка
Сообщений: n/a
14.01.2013, 09:32     метод Зейделя. c++ #1
В цикле 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 ();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 09:32     метод Зейделя. c++
Посмотрите здесь:

C++ метод Зейделя
Метод Зейделя C++
C++ Метод итераций и метод Зейделя
C++ Метод Зейделя
C++ Метод Зейделя в С++
Метод Зейделя C++
C++ Метод Зейделя
C++ СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
14.01.2013, 10:30     метод Зейделя. c++
  #2

Не по теме:

забавно, что из 90 строк программы прокомментировано лишь 4, и эти 4 самые очевидные!

Yandex
Объявления
14.01.2013, 10:30     метод Зейделя. c++
Ответ Создать тему
Опции темы

Текущее время: 00:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru