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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2009, 12:46   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию Последний метод итераций

Здравсвуйте программисты! Спасибо за ответы на предыдущие посты. Осталось решить методом итераций систему уравнений. Вчера Сазари мне подсказал как делать методом Зейделя, осталось методом итераций. Вот попробывал собрать код методом итераций, но дело в том,что результат системы уравнений равен по -1, все 4 уравнения, подскжаите пожалуйста где в данном коде мождет быть проблемма.
Загвоздка в результате. Зараннее благодарен за скорый ответ.


Вот код:

Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#define eps 0.0001 //требуемая точность вычислений
#define N 4
using namespace std;


void iteration(double a[N][N],double b[N],double x[N])
{
 int i,j;
 double norma; //чебышевская норма вектора
 double xn[N]={0};//вектор для текущей итерации, начальное значение
       //должно быть равно начальному приближению

 do{
norma=0.0;  
 for(i=0;i < N;i++)  
 {
 xn[i]=-b[i];   
 for(j=0;j < N;j++)   
 {   
 if(i!=j)   
 xn[i]+=a[i][j]*x[j];  
 }  
 xn[i]/=-a[i][i];  
 }  
 for(i=0;i < N;i++) 
 {   
if(fabs(x[i]-xn[i]) > norma)   
 norma=fabs(x[i]-xn[i]); //Вычисление нормы вектора  
 x[i]=xn[i];  
   }  
 } 
 while(norma > eps); //проверка на необходимую точность вычислений 
 return;
 }
//------------------------------------------
int main()
{
cout<<"Metod Iterasii"<<endl<<endl;
double a[N][N],b[N],x[N];
int i;

a[0][0] = -1.01; a[0][1] = 0.02; a[0][2] = -0.62; a[0][3] = 0.08; b[0] = 1.3;
a[1][0] = -1.03; a[1][1] = 0.28; a[1][2] = 0.33; a[1][3] = -0.07; b[1] = -1.1;
a[2][0] = -1.09; a[2][1] = 0.13; a[2][2] = 0.42; a[2][3] = 0.28; b[2] = 1.7;
a[3][0] = -1.19; a[3][1] = -0.23; a[3][2] = 0.08; a[3][3] = 0.37; b[3] = 1.5;

for(i=0; i<N; i++)
 x[i] = 0;

iteration(a,b,x);
for(i=0; i<N; i++)
 cout<<x[i]<<endl;
 
cin.get(); 
}
prikolist вне форума Ответить с цитированием
Старый 19.06.2009, 14:29   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Сам алгоритм, вроде, верен.

Здесь норма на каждой итерации увеличивается (вместо того, чтоб уменьшаться) и иксы становятся все больше и больше. В итоге получаем переполнение типа.

Только вот почему так...
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.06.2009, 22:39   #3
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

сложна задачка!

Последний раз редактировалось Golovastik; 21.06.2009 в 23:18.
Golovastik вне форума Ответить с цитированием
Старый 22.06.2009, 19:46   #4
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

ВСё, не нужно, задача уже решена, предмет сегодня сдал на отлично. Спасибо всем за терпение и на ответы, в прдыдущих постах. С уважением prikolist
prikolist вне форума Ответить с цитированием
Старый 23.06.2009, 12:34   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от prikolist Посмотреть сообщение
предмет сегодня сдал на отлично.prikolist
Ужас какой
Это, как я понимаю, вычислительная математика, или численные методы? Я с этим предметом мучился целый семестр, а потом еле-еле экзамен сдал.
А у вас на халяву все ставят, что за универ такой?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод простых итераций в Delphi Tomoyo Помощь студентам 21 26.12.2009 19:11
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40
Метод итераций и комбинированный метод prikolist Общие вопросы C/C++ 2 16.06.2009 20:51
Метод простых итераций church Общие вопросы C/C++ 3 06.06.2009 15:26
Решение СЛАУ (метод простых итераций) XeN0N Помощь студентам 2 15.02.2009 21:33