11) Чтобы создать тензор, то создайте данные, соответствующего размера (тензор готов). Далее по желанию отформатируйте вывод под тензор (следующий пункт).
12) Есть возможность ввода/вывода данных в разных режимах для работы с тензорами:
Обычный режим – выводит данные в исходном виде (как они есть).
Треугольный режим – ввод/вывод данных в треугольной форме. Установите, если Вы например решили, что текущие данные являются тензором в матричном представлении. Данный режим доступен только если исходные данные имеют вид квадратной матрицы и симметричны относительно главной диагонали. Ввод данных в этом режиме осуществляется только в ячейках, которые выше, либо находятся на главной диагонали, ввести данные в остальные ячейки в данном режиме не возможно.
Выполнение операций над данными
1) Перейдите в окно калькулятора (можно перейти нажав на панели вверху кнопку Calc)
2) Выберите нужную команду и затем дважды нажимая в списке данных (список справа) выберите данные-аргументы или (если требуется) введите числа в появившееся поле и нажмите ENTER или кнопку ОК. Т.Е. вводите запрашиваемые аргументы.
3) После того, как все аргументы будут введены, автоматически посчитается результат и выведется на экран в виде окна данных. В случае числового результата будет просто выведено число-результат в поле логов.
Примечание: При выполнении тензорных операций данные могут иметь как одноиндексный вид, так и матричный (операции распознают вид тензора), но при выполнении матричных операций Вам необходимо следить за размерностью данных.
Усовершенствование программы:
Программа имеет универсальную основу в дальнейшем система, которая позволяет легко расширить ее функциональность путем занесения новых операций над матрицами или векторами.
Алгоритм добавления операции:
1) Объявление новой операции:
В файле CalcForm.h или Defines.h объявите константу с именем новой операции как это сделано до Вас. Например:
#define TEST_FUNCTION "ТЕСТ ОПЕРАЦИЙ"
2) В файле CalcForm.cpp в функции void OperList() вставьте в список команд вашу операцию
Например:
lb1->AddItem(TEST_FUNCTION,this);
3) В файле CalcForm.cpp в функции void InitOperation () инициализируйте Вашу операцию путем добавления if;
Зная что в этой функции:
String OperName=имя выбранной пользователем операции
Int ARGS= количество матричных аргументов у операции(если нет, то 0).
Int DARGS= количество числовых аргументов у новой операции(если нет, то 0).
Затем инициализируйте вывод подсказок:
String ANames[MAXARGS]= подсказки пользователю для ввода(имена матриц-аргументов)
String DANames[MAXARGS]= подсказки пользователю для ввода(имена числовых аргументов)
Пример:
if(OperName==TEST_FUNCTION){
ARGS=3;
DARGS=3;
ANames[1]="Матрица 1: ";
ANames[2]=" Матрица 2: ";
ANames[3]=" Матрица 3: ";
DANames[1]="число 1: ";
DANames[2]=" число 2: ";
DANames[3]=" число 3: ";
}
Этот этап обеспечит выбор пользователем операции и далее с помощью системы пользователь сможет ввести нужные аргументы для выбранной операции
double DA[MAXARGS]; - аргументы типа double нумерация с 1
TfmMatrix *MFA[MAXARGS]; - передаваемые аргументы (формы данных с матрицами) нумерация с 1
TfmMatrix – форма, содержащая матрицу для ввода/вывода TfmMatrix->Matrix
Также на этой форме есть
String DataName; // имя тензора/матрицы
int NameIndex; // индекс имени тензора/матрицы
String FullDataName; // полное имя тензора/матрицы (имя+индекс)
KMatrix *Matrix; // матрица данных
4) В том же файле в функции void exeOperation(); пропишите команды, которые будут выполнены когда будут введены все аргументы вашей операции.
Помните, что err-код ошибки, void NewMatrix(1,1,NewDataName); -создать новую форму данных с матрицей, где первые 2 индекса – размерность данных (1,1 потомучто всеравно маняется операциями) NewDataName – имя новой создаваемой формы данных в поле вверху программы (можно написать свое имя) ссылка на созданную форму таким образом хранится в MR
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.