#define N 5 #define MLI 30 double E = 0.0001; void b(double alfa[N][N], double beta[N]); void c(double alfa[N][N], double beta[N]); int main() { double alfa[N][N], beta[N]; b(alfa, beta); c(alfa, beta); } void b(double alfa[N][N], double beta[N]) { double A[N][N] = { { 10, 1, 1, 1, 2 }, { 3, 20, 4, 2, 1 }, { 5, 1, 40, 9, 5 }, { 3, 0, 1, 10, 1 }, { 6, 2, 1, 1, 20 } }; double B[N] = { 15, 30, 60, 15, 30 }; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j) { if (alfa[i][j] == 0) { std::cout << "Dzielenie przez ZERO/n"; system("Pause"); return; }else{ beta[i] = B[i] / A[i][i]; alfa[i][j] = 0; } } else if (A[i][i]!=0) { alfa[i][j] = -A[i][j] / A[i][i]; } } } } void c(double alfa[N][N], double beta[N]) { int licznik_iteracji = 0; double *Xnowy = beta; double *Xstary; double norma = 0; do{ Xstary = Xnowy; licznik_iteracji++; for (int i = 0; i < N; i++) { for (int j = 0; j < i-1; j++) { Xnowy[i] += Xnowy[j] * alfa[i][j]; } for (int j = i; j < N; j++) { Xnowy[i] += alfa[i][j] * Xstary[j]; } Xnowy[i] += Xstary[i]; for (i = 0; i < N; i++) { if (abs(Xnowy[i] - Xstary[i])>norma) { norma = abs(Xnowy[i] - Xstary[i]); } } } } while (norma > E && MLI < licznik_iteracji); for (int i = 0; i < N; i++) { std::cout << " " << Xnowy[i]; } std::cout << std::endl << " " << licznik_iteracji << std::endl;