Не могу понять где ошибка в программе. Вот исходник, программа на студии 2005, в консоле вин 32:
Код: Выделить всё
#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()
{
int a,b,x;
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;
iteration(a,b,x);
for(i=0; i<N; i++)
cout<<"Rezyltat metoda iterasiy = "<<x[i]<<endl;
}