JavaRush/Java блог/Архив info.javarush/need Help на возведение матриц в степень
terranum
28 уровень

need Help на возведение матриц в степень

Статья из группы Архив info.javarush
участников
need Help на возведение матриц в степень - 1 Всем привет! Возникли трудности с возведением матрицы в степень. Помогите пожалуйста! Дан двумерный массив, необходим возвести в степень n. int[][] matrix = {{1, 1}, {1, 0}};
Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Vash_the_Stampede
Уровень 11
28 сентября 2014, 20:06
Этой функции хватит? Если нужно и в отрицательную степень возводить, то нужно еще и обратную матрицу находить
public static int[][] prod(int[][] a, int[][] b) {
    // предполагается, что a и b - квадратные матрицы одного размера
    int n = a.length;
    int[][] c = new int[n][n];

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }

    return c;
}
terranum
Уровень 28
28 сентября 2014, 20:54

        int[][] resFirst = {{1, 0},{0, 1}};
        int[][] res = {{1, 0},{0, 1}};
        int[][] c = prod(res, resFirst);
        System.out.println(c[0][0] + " " + c[0][1]);
        System.out.println(c[1][0] + " " + c[1][1]);


вывод:
«C:\Program…
1 0
0 1

а должно быть:
1 1
1 0
terranum
Уровень 28
28 сентября 2014, 20:57
С умножением вроде как разобрался, подтолкнул на мысль, спасибо!
Vash_the_Stampede
Уровень 11
28 сентября 2014, 21:05
так-то это Е * Е = Е. Так что вывод правильный(E — единичная матрица)
terranum
Уровень 28
28 сентября 2014, 19:39
Это для примера, предположим матрицы 2x2, 3x3, 4x4...
Vash_the_Stampede
Уровень 11
28 сентября 2014, 19:44
а n — натуральное число? целое неотрицательное? просто целое?
Vash_the_Stampede
Уровень 11
28 сентября 2014, 19:25
только эту матрицу, или она для примера?