Помогите найти ошибку в коде С++
Надо решить СЛАУ методом Якоби
вот код: #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n = 4; int A[4][4] = {{2, 0, 7, 1},{0, 2, 0, 0},{1, 2, -1, -1},{-1, -2, 1, 2}}; int C[4] = {11, 6, 2, 0}; float X[4] = {1, 1, 1, 1}, X1[4]; float delta = 0.05; float maxdelta = 1; while ( maxdelta >= delta ) { for (int i = 0; i < n; i++) { X1[i] = -C[i]; for (int j = 0; j < n; j++) { if (i != j) { X1[i] += A[i][j] * X[j]; } } X1[i] /= -A[i][i]; } maxdelta = fabs(X[0] - X1[0]); for (int i = 0; i < n; i++) { if (maxdelta < fabs(X[i] - X1[i])) maxdelta = fabs(X[i] - X1[i]); X[i] = X1[i]; } } for (int i = 0; i < n; i++) printf("X[%i] = %5.2f\n", i+1, X[i]); system ("pause"); } никак не могу найти ошыбку....... |
напиши задание подробнее...
так то, код правильный, компилируется и работает! |
он компилируется, но работает не правильно (выдает результат: -1.#J). Вот задание: решить СЛАУ методом Якоби:
2*x1+7*x3+x4=11 2*x2=6 x1+2*x2-x3-x4=2 -x1-2*x2+x3+2*x4=0 |
Код:
int A[4][4] = {{2, 0, 7, 1},{0, 2, 0, 0},{1, 2, -1, -1},{-1, -2, 1, 2}}; Код:
double A[4][4] = {{2, 0, 7, 1},{0, 2, 0, 0},{1, 2, -1, -1},{-1, -2, 1, 2}}; |
не помогает, теперь выдает результат: 0.
|
Код:
printf("X[%i] = %5.2f\n", i+1, X[i]); Код:
printf("X[%d] = %5.2lf\n", i+1, X[i]); |
Отформатировал вот результат:
Код:
#include <stdio.h> |
Код:
if (maxdelta < fabs(X[h] - X1[h])) Код:
if (maxdelta < fabs(X[h] - X1[h])) Код:
if (maxdelta < fabs(X[h] - X1[h])) и да, верните обратно int n=4; |
Код:
if (maxdelta < fabs(X[h] - X1[h])) Код:
if (maxdelta < fabs(X[h] - X1[h])) Код:
if (maxdelta < fabs(X[h] - X1[h])) |
Метод Якоби — Википедия
- готовая реализация метода Якоби. Обратите внимание на то, что перед осуществлением итераций требуется выполнить преобразования матрицы в вектора правой части. |
Часовой пояс GMT +4, время: 18:13. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.