РГЗ по дисциплине: Компьютерное моделирование
Программа - Тензорный калькулятор
Разработал: Кохно К.С.
Проверил: Усольцев Н.В.
Новосибирск 2011г.
Описание программы:
Программа предназначена для выполнения операций над матрицами, векторами, тензорами совокупность таких операций составляет тензорный калькулятор.
В программе основной единицей данных является матрица. Для программы нет различия между матрицей, вектором и тензором, так как вектор, это матрица, у которой вторая размерность равна единице, а тензоры могут быть представлены в матричной или векторной форме. На языке программы вектор, матрица или тензор называется просто данными и имеет единый класс для представления данных (KMatrix), он же и передается в функции-операции. Поэтому обработку ошибок типа умножение матриц не соответствующих размерностей должны осуществлять сами функции операций. Например, функция для умножения 2-х матриц выведет код ошибки =1 при несоответствии размерностей матриц и далее ошибку обработает система. Или преобразование тензора второго ранга от матричной формы к одноиндексной выполняет класс данных (KMatrix) причем при преобразовании он определяет возможность того или иного преобразования исходя из данных внутри него и возвращает код ошибки.
Структура KMatrix – это класс для описания матрицы, вектора тензора и работы с ними.
Преимущества данного класса:
1) Возможность безграничного массива – размер данных неограничен
2) Легкий доступ к данным – за счет перегрузки операторов можно к данным класса обратиться как к обыкновенному масиву: KMatrix[i][j]. (данные класса имеют тип double) или в случае с ссылкой на класс KMatrix[0][i][j].
3) Чтобы создать массив данных с любой размерностью не нужно знать про динамическое распределение памяти и другие премудрости программирования, а всего лишь нужно написать new KMatrix(количество сторк, количество столбцов);. или изменить размерность существующих данных: ResizeMatrix();
4) Также в класс встроены функции для работы с файлами:
Двоичными – можно сохранить/загрузить данные из двоичного файла. Формат файла: [unsigned int количество строк], [unsigned int количество столбцов], [double данные[i][j]].
Текстовыми - можно сохранить/загрузить данные из текстового файла. Поскольку почти все программы, работающие с данными, умеют работать с таким типом файлов это удобно для обмена и конвертирования данных (импорт/экспорт).
5) За счет применения данного класса, который может иметь любую размерность упрощается написание некоторых операций, таких как умножение матриц или векторов: нет необходимости писать свою функцию для каждой размерности матрицы или вектора, а все эти операции может выполнить функция “MULLMat”
Возможности программы и работа с ней:
1) Для создания новых данных наберите вверху окна программы имя новых данных и их размерность, нажмите кнопку +. Или выберите файл->новые данные. Имена данных принимают нужный индекс автоматически для исключения повтора имен данных.
2) Есть возможность сохранения и загрузки полученных данных (сохраняются также все настройки ввода/вывода и формы с данными). Таким образом можно создать какие-нибудь тензорные или матричные константы.
В файл сохраняется: данные, установленный множитель, формат ввода/вывода, размеры колонок в таблице с данными, размеры окна с данными, имя данных.
3) Возможность экспорта/импорта матрицы в текстовый файл (формат *.dat), которые понимают многие программы, например Origin, для дальнейшей обработки результатов. Или для ввода данных, созданных другими программами. В данном случае все остальные параметры, такие как размер окна или формат ввода вывода не сохраняются. Данные сохраняются с учетом выставленного множителя.
4) Возможность ввести множитель – чтобы изменить множитель нужно дважды кликнуть по полю внизу окна с данными. Если поле пустое, то множитель равен единице и наоборот.
5) Матрицу можно представить не выводя нули (вывод – не отображать нули)
6) Представить данные в тензорной форме можно, нажав по ней правой кнопкой мыши - тензор.
7) Быстрый поиск нужной матрицы из списка матриц – необходимо, при работе с большим количеством матриц: выберите в форме калькулятора (кнопка Calc наверху для отображения) из списка нужную матрицу или вектор – правая кнопка мыши – отобразить и поверх всех окон отобразится выбранная вами матрица.
Или просто нажмите дважды по списку данных на форме-калькуляторе.
8) Каждую матрицу можно переименовать, нажав правую кнопку мыши.
Также можно заранее ввести имя будущих данных вверху.
9) Система организована таким образом, что функциональность программы можно легко дополнить.
10) Если Вы хотите работать с тензорами, то следует помнить, что программа может воспринимать как тензор данные (матрицу или вектор), которые можно принять за тензор. Поэтому если Вы в процессе работы получили матрицу или вектор, то с ней можно работать как с тензором, если она соответствующего размера и характера данных (в противном случае программа укажет на ваши ошибки).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.