Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- double* solveMatrix (int n, double *bot, double *mid, double *top, double *d)
- {
- double* P = new double[n];
- double* Q = new double[n];
- double* res = new double[n];
- P[0] = -top[0] / mid[0];
- Q[0] = d[0] / mid[0];
- for (int i = 1; i < n; i++)
- {
- P[i] = -top[i] / (mid[i] + bot[i] * P[i-1]);
- Q[i] = (d[i] - bot[i] * Q[i-1]) / (mid[i] + bot[i] * P[i-1]);
- }
- res[n-1] = Q[n-1];
- for (int i = n - 2; i >= 0; i--)
- res[i] = P[i] * res[i+1] + Q[i];
- return res;
- }
- int main()
- {
- setlocale(LC_ALL, "RUS");
- int n;
- cout << "Количество переменных:" << endl;
- cin >> n;
- cout << endl;
- double** mat = new double*[n];
- double* matRes = new double[n];
- for (int i = 0; i < n; i++)
- mat[i] = new double[n+1];
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n + 1; j++)
- mat[i][j] = 0;
- cout << "Введите СЛАУ:" << endl;
- for (int i = 0; i < n; i++)
- {
- cout << "Строка " << i + 1 << ": " << endl;
- if (i > 0)
- cin >> mat[i][i-1];
- cin >> mat[i][i];
- if (i < n - 1)
- cin >> mat[i][i+1];
- cin >> mat[i][n];
- }
- cout << endl;
- double* diagTop = new double[n];
- double* diag = new double[n];
- double* diagBot = new double[n];
- double* rightPath = new double[n];
- diagTop[n - 1] = 0;
- for (int i = 0; i < n - 1; i++)
- diagTop[i] = mat[i][i+1];
- for (int i = 0; i < n; i++)
- diag[i] = mat[i][i];
- diagBot[0] = 0;
- for (int i = 1; i < n; i++)
- diagBot[i] = mat[i][i-1];
- for (int i = 0; i < n; i++)
- rightPath[i] = mat[i][n];
- double* res = solveMatrix(n, diagBot, diag, diagTop, rightPath);
- cout << "Результат" << endl;
- for (int i = 0; i < n; i++)
- cout << res[i] << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement