Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- matrix Matrix::inversion(matrix m, int size)
- {
- matrix a = new float*[];
- for (int i = 0; i < size; i++)
- {
- a[i] = new float[size];
- for (int j = 0; j < size; j++)
- {
- a[i][j] = m[i][j];
- }
- }
- matrix e = new float*[];
- for (int i = 0; i < size; i++)
- {
- e[i] = new float[size];
- for (int j = 0; j < size; j++)
- {
- e[i][j] = i == j ? 1 : 0;
- }
- }
- float temp;
- for (int k = 0; k < size; k++)
- {
- temp = a[k][k];
- //делим каждый столбец строки на temp
- for (int j = 0; j < size; j++)
- {
- a[k][j] /= temp;
- e[k][j] /= temp;
- }
- for (int i = k + 1; i < size; i++)
- {
- temp = a[i][k];
- for (int j = 0; j < size; j++)
- {
- a[i][j] -= a[k][j] * temp;
- e[i][j] -= e[k][j] * temp;
- }
- }
- }
- for (int k = size - 1; k > 0; k--)
- {
- for (int i = k - 1; i >= 0; i--)
- {
- temp = a[i][k];
- for (int j = 0; j < size; j++)
- {
- a[i][j] -= a[k][j] * temp;
- e[i][j] -= e[k][j] * temp;
- }
- }
- }
- for (int i = 0; i < size; i++)
- for (int j = 0; j < size; j++)
- a[i][j] = e[i][j];
- del(e, size);
- return a;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement