Шрифт:
Предполагается, что все матрицы прямоугольные, но это не проверяется. Если вы создадите матрицу, в которой отдельные строки или столбцы длиннее либо короче остальных, то можете получить неверные или неожиданные результаты.
Некоторые специальные матрицы, особенно квадратные, конструируются проще. Так, тождественную матрицу конструирует метод
Более общий метод
Еще более общим является метод
Метод
Понятно, что методы
Чтобы создать матрицу размерности 1xN или Nx1, воспользуйтесь методом row_vector или column_vector соответственно.
К отдельным элементам матрицы можно обращаться, указывая индексы в квадратных скобках (оба индекса заключаются в одну пару скобок). Отметим, что не существует метода
Индексация начинается с 0, как и для массивов в Ruby. Возможно, это противоречит вашему опыту работы с матрицами, но индексация с 1 в качестве альтернативы не предусмотрена. Можно реализовать эту возможность самостоятельно:
На первый взгляд, этот код должен работать. Большинство операций над матрицами даже будет давать правильный результат при такой индексации. Так в чем же проблема? В том, что мы не знаем деталей внутренней реализации класса
К тому же необходимо изменить методы
Иногда необходимо узнать размерность или форму матрицы. Для этого есть разные методы, например
Метод
Решить эту мелкую проблему можно, например, определив метод