PealehtKasulik infoKüsiViimased muudatused
HomeUseful StuffAskRecent Changes
ГлавнаяПолезноеСпроситьИзменения
ENGESTRUS
#SUBTITLE Süsteemiteooria #SUBURL [Course:31211 〔Õppeaine ÕIS-is〕] ==Информация * http://staff.ttu.ee/~bgordon/oppetegevus/systeooria/ - Вся важная информация. * http://www.dcc.ttu.ee/las/materjalid.htm - Пригодится ближе к лабораторным. * http://forum.ee/t73681/ssteemiteooria/ - обсуждение на forum.ee ==Лекции (Гордон) Говорят, что раньше г-ин Гордон превосходно вел свои лекции. Вероятнее всего, энтузиазма за несколько лет поубавилось. Однако информация все равно интересная и полезная, особенно пригодится при написании контрольной по теории. ==Харьютусы (Гордон) На харьютусах подробно разжевывается решение всех задач. Если на них не ходить, то велика вероятность, что вы вообще не поймете, о чем идет речь на контрольной. С другой стороны, все решения есть в задачнике, поэтому можно и самом разобраться. В последний харьютус перед контрольной г-ин Гордон сообщает, какие типы задач будут на контрольной. Поскольку харьютусов 8 (после которых идут лабораторные), а лекций 16, материал на лекциях значительно отстает от того, что вы будете делать на харьютусах. Некоторый материал с практик: [[File:systeooria_material1.pdf]] [[File:systeooria_material2.pdf]] Пример контрольных работ: [[File:systeooria_kt_1.jpg]] [[File:systeooria_kt_2.jpg]] [[File:systeooria_kt_3.jpg]] ==Лабораторные Лабораторные заключаются в решение различных задач в MATLAB. По сути теперь вы узнаете, что всё, что вы делали вручную на бумаги, можно за несколько секунд сделать в MATLAB... Огромный минус в том, что MATLAB вы вряд ли легко сможете поставить себе на компьютер. Другие альтернативы описаны ниже. Примеры лабораторных работ: [[File:lab_1.pdf]] [[File:lab_2.pdf]] [[File:lab_3.pdf]] ==Экзамен На экзамен идут только те, кто не смог получить общую оценку выше 1 (что на самом деле довольно сложно). Все правила допуска к экзамену довольно подробно описаны на страничке у г-на Гордона. Примеры экзамена: [[File:systeooriaexample1.jpg]] [[File:systeooriaexample2.jpg]] [[File:systeooriaexample3.jpg]] ==Свободное программное обеспечение (Лабораторные) Есть несколько программ, о которых вам будет полезно знать: * [[http://www.sagemath.org/ sage]] - отлично подходит для различных вычислений, в чем-то функциональность пересекается с MATLAB, но для теории систем мало подходит, так как для этого там ничего нет. * [[http://sourceforge.net/projects/python-control/ python-control]] - тут все понятно, вещь заточена именно для систем, но для всего остального подходит мало, да и всех приятных фишек sage тут нет. * **[[http://www.scilab.org/ Scilab]]** - для нас практически полная альтернатива MATLAB. Если вас интересует только выполнение лабораторных, то можете не читать про sage и python-control === sage ====Установка Скачать можно с [[http://sagemath.org/ официального сайта]]. Если для вашей платформы есть бинарник, то всё чудесно - качаете и используетсе. Для Debian почему-то его нет, придется компилировать... Нет ничего страшного, весь процесс автоматизирован, но занимает несколько часов, поэтому оставляйте его на ночь. На моем средненьком лаптопе весь процесс длился около 8 часов. ====Занятие 0 Отличия от MATLAB |= MATLAB |= sage | |help command|help(command)| |%|# коментарии, как и все остальное, как в python| |v = [1 2 3 4 3 2 1]|v = vector([1, 2, 3, 4, 3, 2, 1]) Если без vector(), тогда это список, а не вектор| |v + 3|v + vector([3] * len(v))| |A = [9 2 3; -1 3 4; 0 2 1]|A = matrix([[9, 2, 3], [-1, 3, 4], [0, 2, 1]])| |A = [9 2 3; -1 3 4; 0 2 1]|A = matrix(3, [9, 2, 3, -1, 3, 4, 0, 2, 1])| |At = A'|At = A.transpose()| |A(1,1)|A[0,0] - нумерация с нуля| |A(3,3) = 4|A[2,2] = 4| |row1 = 2:5|row1 = range(2, 6) - второе число не включается. Осторожнее с типом| |row2 = 6:-0.5:3.5|[x * -0.5 + 6 for x in range(6)]| |row2 = 6:-0.5:3.5|from numpy import arange; arange(6,3.5,0.5) # так себе вариант| |A(2:3,1:2)|A[1:3,0:2] # да, именно с такими индексами| |inv(A)|A.inverse()| |diag(A)|A.diagonal()| |eig(A)|A.eigenvalues()| |p1 = poly(A)|p1 = A.charpoly()| |roots(p1)|p1.complex_roots()| |p2 = [1 -2 0 5]|p2 = x^3 -2*x^2 + 5 только перед этим нужно задать x вот так: R.<x> = QQ[]| |conv(p1,p2)|p1*p2| Поскольку практически всё является объектом, можете смело ставить точку и нажимать TAB для автодополнения. Стоит отметить, что это довольно полезная фича, так как помнить названия всех функций нереально. Но, к сожалению, в **Scilab** большая часть функций живет сама по себе, такой метод не сработает, а жаль. ====Занятие 1 На этом нужная нам функциональность sage исчерпана, на следующих занятиях придется использовать что-то другое :) ===python-control В целом работает сам по себе, но для некоторых действий (таких как tf) вам понадобится slicot. Я слабо понимаю, что творится в голове автором slicot. С одной стороны, его исходный код открыт, с другой стороны, разработчик хочет деньги в том случае, если вы используете slicot в коммерческих целях. При этом версия 4.5 выложена под лицензией GPL, что дает возможность распространять программу в любых целях, не платя автору ни цента. И тут вроде бы все логично, но в debian репозитории последняя версия - 5.0. Ладно, не суть. Устанавливаем [[http://slicot.org/ slicot]]: {{{bash sudo apt-get install libslicot0 libslicot-dev libslicot-doc }}} Устанавливаем [[https://github.com/avventi/Slycot slycot]]: {{{bash sudo apt-get build-dep python-scipy # для этого в /etc/apt/sources.list должен быть соответствующий deb-src репозиторий sudo python setup.py install }}} Вроде бы все, теперь python-control должен быть полнофункциональным. Запускаем: {{{bash ipython -pylab }}} Внутри {{{python from control.matlab import * }}} Если все прошло без ошибок, то можно начинать рассматривать занятия :) ====Занятие 0 Нет информации... ====Занятие 1 Матрицы для систем можно вписывать так: {{{python sys = ss('-1 2;0 -4', '1;2', '1 0;0 1', '0;0') # или sys = ss([[-1, 2],[0, -4]], [[1],[2]], [[1, 0],[0, 1]], [[0],[0]]) }}} Отличия от MATLAB |= MATLAB |= python-control | |rank(m)|**matrix_rank(m)**, не путать с rank(m)| |ss(A, B, C, D)|ss(A, B, C, D)| |rss(n, m, r)|нет, в любом случае чаще всего матрицы нам известны| |ctrb(sys)|ctrb(sys.A, sys.B)| |obsv(sys)|obsv(sys.A, sys.C)| |eig(sys)|eig(sys.A)| |tf(sys)|tf(sys), а также может пригодиться tfdata(sys)| |ltiview(sys)|Строить графики можно, но не так просто...| |dcgain(sys)|dcgain(sys)| | |sys.inputs - довольно удобно, можно узнать кол-во входов не глядя на матрицы| | |sys.outputs| | |sys.states| ====Занятие 2 Поскольку подобия simulink в python-control конечно же нет, на следующих занятиях придется использовать **Scilab**. ===Scilab Большая часть функций совпадает в той или иной мере с MATLAB, что на самом деле обидно, все-таки лучше бы они в чем-то брали пример с Sage. ====Установка {{{bash apt-get install scilab # что может быть проще? :) }}} ===Занятие 0 Если что-то здесь не указано, значит оно полностью совпадает с синтаксисом MATLAB (ну или я просто забыл что-то написать). Все следующие команды перечислены относительно PDF файлов занятий, выложенных [[http://www.dcc.ttu.ee/las/materjalid.htm здесь]]. |= MATLAB |= scilab | |eig(A)|spec(A)| |poly(A)|poly(A, 'x')| |p2 = [1 -2 0 5]|p2 = poly([5 0 -2 1], 'x', 'c') - коэффициенты в обратную сторону. Если не указать третим параметром 'c', тогда первый массив является списком корней| |conv(p1, p2)|p1*p2| ===Занятие 1 |= MATLAB |= scilab | |ss(A, B, C, D)|syslin('c',A,B,C[,D]) для непрерывных, syslin('d',A,B,C[,D]) для дискретных| |rss(n, m, r)|ssrand(**m, r, n**) - обратите внимание на порядок параметров| |ctrb(sys)|cont_mat(sys)| |obsv(sys)|obsv_mat(sys)| |eig(sys)|spec(sys.A)| |tf(sys)|ss2tf(sys)| |dcgain(sys)|?| |ltiview(sys)|? Смотри ниже| Построить графики можно примерно так: {{{python t=0:0.01:15 y1 = csim('stem', t, sys) plot(t, y1) }}} ===Занятие 2 |eye(4)|eye(4,4)| |eig(sys)|spec(sys.A)| |c2d(sys,0.1)|cls2dls(sys,0.1)| |place|ppol| |simulink|xcos| ===xcos Код можно писать в **Simulation/Set context**, как использовать переменные из основного окна - я не понял. Всё остальное так же, как и в MATLAB. Вот некоторые жлементы, которые могут вам пригодиться: * Continuous time systems/CLSS - очевидно * Discrete time systems/DLSS - тоже очевидно * Mathematical Operations/GAIN_f - пригодится при обратной связи. * Sources/CLOCK_c для тактирования CSCOPE и дискретных систем. * Sinks/CSCOPE для просмотра * Signal Routing/MUX и DEMUX - вряд ли пригодятся, но если что, то они тут. * Continuous time systems/TIME_DELAY и Discrete time systems/DELAY_f - Иногда при использовании обратной связи можно увидеть ошибку "Algebraic loop". Чтобы её обойти, поставьте небольшой delay в обратную связь. Сразу советую в Simulation/Setup выставить маленький Final integration time, например 30, так как нас будет интересовать лишь начало симуляции. ===Занятие 3 Всё примерно то же самое, что и в занятии 2. ---- К сведению, в "лабораторных" текстовых ответах довольно много бреда, так что очень не рекомендую бездумно сдувать его оттуда. Преподаватели не дураки и могут обидеться, что вы юзаете бред вместо разрешенных официальных материалов (лекций и т.п.). -- Anonymous 2016-05-17 09:09:35 Прикрепить файл:
Описание:
Это изменение является незначительной правкой.
Чтобы сохранить эту страницу вы должны ответить на вопрос:
Please type here the name of our university (three letters)
Имя пользователя:
Заменить этот текст файлом