{"id":4929,"date":"2013-05-03T12:59:04","date_gmt":"2013-05-03T11:59:04","guid":{"rendered":"http:\/\/www.walkingrandomly.com\/?p=4929"},"modified":"2013-05-04T20:10:57","modified_gmt":"2013-05-04T19:10:57","slug":"software-for-the-teaching-of-and-tinkering-with-control-theory-and-control-systems","status":"publish","type":"post","link":"https:\/\/walkingrandomly.com\/?p=4929","title":{"rendered":"Software for the teaching of (and tinkering with) Control Theory and Control Systems"},"content":{"rendered":"<p>I recently picked up a few <a href=\"http:\/\/en.wikipedia.org\/wiki\/Control_theory\">control theory<\/a> books from the University library to support a project I am involved with right now and was interested in the seemingly total dominance of <a href=\"http:\/\/www.mathworks.co.uk\/products\/matlab\/\">MATLAB<\/a> in this subject area.\u00a0 Since I&#8217;m not an expert in control systems, I&#8217;m not sure if this is because MATLAB is genuinely the best tool for the job or if it&#8217;s simply because it&#8217;s been around for a very long time and so has become entrenched.\u00a0 Comments from anyone who works in relevant fields would be most welcome.<\/p>\n<p>On its own, MATLAB is insufficient to teach introductory control systems courses &#8212; you also need the <a href=\"http:\/\/www.mathworks.co.uk\/products\/control\/\">control systems toolbox<\/a> as a bare minimum but most books and courses also seem to require <a href=\"http:\/\/www.mathworks.co.uk\/products\/simulink\/\">Simulink<\/a> and the <a href=\"http:\/\/www.mathworks.co.uk\/products\/symbolic\/\">symbolic math toolbox<\/a>.\u00a0 All of these are included in the <a href=\"http:\/\/www.mathworks.co.uk\/academia\/student_version\/\">student edition of MATLAB<\/a> which is very reasonably priced.<\/p>\n<p>If you are not a registered student, however, and don&#8217;t work for someone who can provide you with MATLAB it&#8217;s going to be very expensive!\u00a0 As far as I can tell, your only option would be to purchase commercial licenses which are very expensive (as in thousands of dollars\/pounds for MATLAB and a few toolboxes).<\/p>\n<p><strong>What else is out there?<\/strong><\/p>\n<p>I have a strong interest in mathematical software and so I know that there are several products that have support for control theory. Here are some that I know of and have access to myself<\/p>\n<ul>\n<li><a href=\"http:\/\/www.wolfram.co.uk\/mathematica\/\">Mathematica<\/a> &#8211; Its symbolic math support far exceeds that of MATLAB and it is on an equal footing numerically but its <a href=\"http:\/\/www.wolfram.co.uk\/solutions\/industry\/control-systems\/\">control systems support<\/a> is much more recent and I don&#8217;t know of a textbook that utilizes it.\u00a0 One benefit of Mathematica is that it doesn&#8217;t separate functionality out into toolboxes &#8211; <a href=\"https:\/\/www.walkingrandomly.com\/?p=4679\">everything is just built in.<\/a>\u00a0 Another benefit to tinkerers is the <a href=\"http:\/\/www.wolfram.co.uk\/mathematica-home-edition\/\">home edition<\/a> which gives you the full product at a much lower price than commercial licenses.<\/li>\n<li><a href=\"http:\/\/www.maplesoft.com\/products\/maple\/\">Maple<\/a> &#8211; This also has very strong symbolic and numeric math support.\u00a0 It also comes with some <a href=\"http:\/\/www.maplesoft.com\/products\/maple\/features\/feature_detail.aspx?fid=127742\">Control Systems<\/a> support built in.\u00a0 Like Mathematica, it has a <a href=\"http:\/\/www.maplesoft.com\/products\/Maple\/personal_edition\/\">home edition<\/a> for non-commercial tinkering and learning.<\/li>\n<li><a href=\"http:\/\/www.ni.com\/labview\/\">Labview <\/a>&#8211; A graphical programming language that I&#8217;m only just starting to get used to.\u00a0 It has lots of users and advocates in my employers electrical and mechanical engineering departments.\u00a0 There is no support for symbolic computing as far as I know.<\/li>\n<li><a href=\"http:\/\/www.python.org\/\">Python<\/a> &#8211; Python is a superb general purpose scripting language that&#8217;s also completely free.\u00a0 Numerics are taken care of by <a href=\"http:\/\/www.numpy.org\/\">Numpy<\/a>, symbolics by <a href=\"http:\/\/sympy.org\/en\/index.html\">Sympy<\/a> and there is a <a href=\"http:\/\/www.cds.caltech.edu\/~murray\/wiki\/index.php\/Control_Systems_Library_for_Python\">control theory module<\/a>, the development of which is coordinated by Richard Murray of Caltech (The same Richard Murray that co-wrote the book <a href=\"http:\/\/www.cds.caltech.edu\/~murray\/amwiki\/index.php\/Main_Page\">Feedback Systems: An Introduction for Scientists and Engineers<\/a>).<\/li>\n<li><a href=\"http:\/\/octave.sourceforge.net\/control\/index.html\">Octave<\/a> &#8211; Octave is a free implementation of the MATLAB .m language.\u00a0 It also has a <a href=\"http:\/\/octave.sourceforge.net\/control\/index.html\">free control package<\/a>.<\/li>\n<li><a href=\"https:\/\/www.scilab.org\/\">Scilab<\/a> &#8211; Scilab is a free numerical environment that also has a <a href=\"http:\/\/help.scilab.org\/docs\/5.4.1\/en_US\/section_64a8529216e858b335b0e6c058385350.html\">free control package<\/a>.<\/li>\n<\/ul>\n<p>I haven&#8217;t mentioned <a href=\"https:\/\/www.walkingrandomly.com\/?p=4379\">Simulink alternatives<\/a> in this post since I&#8217;ve discussed them before.<\/p>\n<p><strong>Questions<\/strong><\/p>\n<p>Some questions that arise are<\/p>\n<ul>\n<li>Are there any other alternatives to those listed above?<\/li>\n<li>Do these alternatives have sufficient functionality to support undergraduate courses in control systems and control theory?<\/li>\n<li>What would be the best language to use if you were teaching control systems as a Massively Open Online Course (MOOC)?<\/li>\n<li>Does it matter to employers which computational language you learned your control systems in as an undergraduate?<\/li>\n<\/ul>\n<p>I find that the final point is very divisive among people I discuss it with.\u00a0 On the one hand you have those who say &#8216;It&#8217;s the concepts that matter, the language you choose to implement them in is much less important&#8217; and on the other hand you have those who say &#8216;It&#8217;s gotta be MATLAB, my father used MATLAB and his grandfather before him. Industry uses MATLAB, I only know MATLAB, we must teach MATLAB.&#8217;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently picked up a few control theory books from the University library to support a project I am involved with right now and was interested in the seemingly total dominance of MATLAB in this subject area.\u00a0 Since I&#8217;m not an expert in control systems, I&#8217;m not sure if this is because MATLAB is genuinely [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[71,4,11],"tags":[],"class_list":["post-4929","post","type-post","status-publish","format-standard","hentry","category-control-theory","category-math-software","category-matlab"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3swhs-1hv","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/4929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4929"}],"version-history":[{"count":11,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/4929\/revisions"}],"predecessor-version":[{"id":4941,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/4929\/revisions\/4941"}],"wp:attachment":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}