Загвоздка в результате. Зараннее благодарен за скорый ответ.
Вот код:
Код: Выделить всё
#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();
}