Задача такая была:
читать дальшена С++ запрограммировать итерации методов Якоби и Зейделя, по курсу методов вычисления. Простейшим вариантом, без всяких наворотов и классов - лишь бы работало и выдавало результаты на каждой итерации, проверочный пример: система линейных алгебраических уравнений:
6х(1) - 2х(2) +х(3)=11
х(1) + 2х (2) - 5х(3) = -1
-2х(1) + 7 х(2) + 2х(3) = 5
В скобках указала нижние индексы. Точное решение: х = (2,1,1)Т. Там вроде вложенный цикл, внешний - по n, внутренний - по i, но майн не осилил. Помогите пожалуйста, буду очень обязана и благодарна.Спасибо
TigerCat, написал код - но у меня: во-первых, этот код не работает (почему-то), во-вторых - условие остановки цикла чуть другое. На основе этого кода и другой инфы попробовала написать более простой вариант, на корректность пока не проверяла, ибо выдает одну ошибку на этапе компиляции. Собственно, далее приведен код программы и выдаваемая ошибка - может кто-нибудь укажет ошибку и что с ней делать.
Код файла .срр
#include
#include
#include
#include
#include
#include "1.h"
using namespace std;
#define eps 0.0001 //òðåáóåìàÿ òî÷íîñòü âû÷èñëåíèé
int main()
{ void iteration(double **a,double *b,double *x);
int n;
cout << "Enter number of equations in system ";
cin >> n;
cout << endl;
double **mainMatrix;
double *rightMatrix;
double *res;
mainMatrix = new double *[n];
rightMatrix = new double [n];
res = new double [n];
for(int k = 0; k < n; k++)
{
mainMatrix[k] = new double [n];
}
for(int k = 0; k < n; k++)
{
cout << "Enter " << n + 1 << " coefficients " << k + 1 << "-th equation ";
for(int l = 0; l < n; l++)
{
cin >> mainMatrix[k][l];
}
cin >> rightMatrix[k];
}
for (int r = 0; r < n; r++)
{
res[r] = 0;
}
iteration(mainMatrix,rightMatrix,res);
getch();
}
Код файла .h
void iteration(double **a,double *b,double *x)
{
int i,j;
double norma; //чебышевская норма вектора
double xn[n]={0}; //вектор текущей итерации
do{ cout << endl;
norma=0.0;
for(i=0;i < n;i++)
{
cout << "Number of iteration" << i << endl;
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];
}
cout << "Approximation " << xn[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;
}
C:\Documents and Settings\...\...\...\Makefile.win [Build Error] [Безымянный1.o] Error 1 - ошибка.
ЗЫ: за дибильные ошибки, просьба, тапки в меня не кидать - программист из меня убийственный.