Skip to content

Symbolic computation

Kirill Artemov edited this page Oct 14, 2017 · 1 revision

Что использовалось:

  • Основной язык: python
  • Библиотека символьных вычислений: sympy
  • Круглосуточный компьютер

Содержание этой страницы:

  1. Структура директории с модулями
  2. Расчет регрессора
  3. Идентификация coming soon...
  4. Расчет матриц M,C,G для системы управления coming soon...

1. Структура директории с модулями

Все модули располагаются в директории: robotics_report/symbolic_computation/.

  • make_regressor.py -- содержит расчет компонент регрессора, упрощение и оформление каждого элемента в виде отдельного модуля xi_IJ.py, где J = [0..4] -- номер строки, I = [0..4] -- номер столбца;
  • libs/equations.py -- тут описываются в виде функций математический выражения;
  • libs/example_module.py -- пример модуля-шаблона для компонент регрессора;
  • libs/initialization.py -- модуль с инициализацией переменных и функций;
  • libs/regexps.py -- модуль для трансформации рассчитанных символьных выражений в python/cpp/scilab код. Для получения более подробной информации нужно сходить в конкретный модуль и почитать комментарии.

2. Расчет регрессора

Алгоритм:

  • n = 5; nL = 10;
  • Создать нулевой массив regressor_zeros размерности [n * nL]
  1. j = 0..(n-1);
  2. i = 0..(n-1);
  3. Открыть файл на запись с именем 'xi/xi_%d%d.py'% (j, i);
  4. Записать в файл начало шаблона-модуля (libs/example_module.py);
  5. Закрыть файл;
  6. k = 0..(nL-1);
  7. Открыть тот же файл;
  8. Вычислить k-ый элемент j-ой строки, i-ого столбца;
  9. Упростить полученное выражение;
  10. Сгенерировать python код;
  11. Вставить полученный код в шаблон-функцию из шаблона-модуля;
  12. Добавить в открытый файл;
  13. Закрыть файл;
  14. Если k < (nL-1), перейти в п. 6;
  15. Открыть файл;
  16. Записать конец шаблона модуля;
  17. Закрыть файл;
  18. Если i < (n-1), перейти в п. 2;
  19. Если j < (n-1), перейти в п. 1;