Hi SymPy community , I have surfed over the ideas that I mentioned previously and started drafting the backbone of my proposal .I would be glad if mentors ,specially Jason Moore would review them, so that I can progress towards making the proposal more concrete .All suggestions and comments are welcome. Thanks!
PS. I have observed that in such a large group with so many incoming mails there are chances that mails get lost and maybe don't get the attention they require .Hence I having been mailing a few people/ potential mentors ,specially in the physics module .I have got positive replies from some of them :) . I have shared an email of ideas with them personally ,I will be obliged if it is looked into ! Sorry for any inconvenience this might have caused . Regards, Anurag Bhat On Friday, March 18, 2022 at 7:09:41 PM UTC+5:30 Anurag Surendra Bhat (B20CS097) wrote: > Hi , > Previously on this thread ,I had talked about some ideas regarding the > control module as a project for GSOC'22 .I have done some research on them > and come up with Broad Ideas In Scope To Work On . I request the community > to comment on it and add to it .I would also request potential mentors > Jason K Moore , Akshansh Bhatt to name a few to have a look at it and > review it .I think there is a good scope of improvement in the control > package. Once I am certain with the priority order of these ideas I will > start drafting a concrete proposal . > > These are the ideas that I have accumulated by observing work done in > previous years and checking out other CST frameworks .Implementation of all > ideas would take extensive discussions with mentors along with a bunch of > new unit tests to check their functioning. > 1. Complete pending work from previous years in the control package . > Making a well documented module with examples and illustrations was one of > Naman’s objectives .It was because people always tend to use softwares with > top notch documentation. So PR #22124 > <https://github.com/sympy/sympy/pull/22124> will be completed with more > examples from documentation of MATLAB and python-control .I also have a > course textbook for my control-systems course and can always refer to that > for illustrations. > Another pending thing I can observe which Akshansh had attempted but > could not get merged due to some performance issues is the root_locus_plot > , there are relevant comments on his PR #21763 > <https://github.com/sympy/sympy/pull/21763> regarding this . Along with > that the 2 other plots which were proposed to be added in the future were > nyquist_plot > and nichols_plot. > > 2. Some bugs need to be fixed and along with that minor changes can be > made to the transfer function API ideas.Some of these were pointed out in > previous year’s proposal but I believe are not fixed yet. > > 1. > > I have spotted a bug and raised an issue #23247 > <https://github.com/sympy/sympy/issues/23247> .Transfer function > should not be able to take non-polynomial expressions as input (eg -sin(x) > , 2^(x)). > 2. > > SymPy being a symbolic library ,subs( ) and rewrite( ) are useful > properties. ‘TransferFunction’ is basically a rational function ,so it > will > be a good addition if users can access these methods. ‘TransferFunction’ > inherits ‘Basic’,so this can be done. ‘TransferFunctionMatrix’ also lacks > these properties. > 3. > > Restructuring some parts of the code , I feel some functions are > unutilized .Minor functionalities for ‘TransferFunction' that are a part > of > other CST frameworks like MATLAB can be made a part of SymPy too. > > Some of these are - > - > > bandwidth(system) - First frequency where gain drops by -3dB of DC > value. > - > > margin(system) - Gives gain-margin and phase-margin which are used > to visualize marginal stability that SymPy’s ‘is_stable()’ gives no > information about. > 4. Possible improvements in 'TransferFunction' / > 'TransferFunctionMatrix' API - > - > > Making input ‘var’ in ‘TransferFunction’ optional instead of > compulsory. Users will only have to specify the variable when there is > a > conflict. > - > > Allowing a MATLAB-like input scheme where users just have to input > coefficients of particular degrees of the Transfer Function in order.I > personally feel it is an efficient method of input and will itself > eliminate many input issues, one of them pointed above as use of > non-polynomials. > > For eg. - > >>Sys = tf([1, 2] ,[1, 2, 3]) > >>Sys(s) > (s**2 + 2*s)/(s**2 + 2*s + 3) > > - > > Allowing a declared rational expression to be taken as input in > ‘TransferFunction’ to reduce size - > > For eg. - > # Current > >>> tf1 = TransferFunction(1,1+s,s) > >>> tf2 = TransferFunction(2,2+s,s) > >>> t = TransferFunctionMatrix([[tf1, tf2],[-tf1,-tf2]]) > > # Proposing to allow > >>> exp1 =1/1+s > >>> exp1 = 1/(1+s) > >>> exp2 = 2/(2+s) > > >>> t = TransferFunctionMatrix([[exp1, exp2],[-exp1,-exp2]]) > > - > > Adding support for ‘TransferFunctionMatrix’ objects to be > instantiated by passing a list of numerators and a common denominator. > This > can be an alternative way of object creation. > > 3. Introducing ‘StateSpace’ model for effectively representing a State > Space system symbolically. > These 3 functions would be essential for State Space system- > > - > > is_observable( StateSpaceModel ) > - > > observability_matrix( StateSpaceModel ) > - > > observable_subspace( StateSpaceModel ) > > 4. Implementing Discrete-time ‘TransferFunction’ model. Discussing the > API and making things compatible with the current implementation is a > challenge as suggested in Akshansh’s Gsoc 2021 report. > > > > I hope this makes for a suitable project to work on ! Over the next few > days I will be doing a more in depth research for more ideas / scope of > improvement. Thanks for your time and efforts in going through the content . > > Regards, > Anurag . > On Saturday, March 12, 2022 at 10:31:02 AM UTC+5:30 Anurag Surendra Bhat > (B20CS097) wrote: > >> Hi Eeshaan, >> The control package in sympy is developing since 2020 but not nearly as >> powerful as in MATLAB . Thanks for the suggestion ,I'll surely explore it ! >> >> Regards, >> Anurag. >> >> On Friday, March 11, 2022 at 10:11:27 PM UTC+5:30 Eeshaan Jain wrote: >> >>> Hey, >>> I'm somewhat unsure, but as far as I've used sympy for controls, I >>> couldn't find an equivalent for finding the frequency response of a digital >>> filter in sympy. There is freqz which does this in MATLAB. >>> >>> Thanks >>> >>> On Thu, Mar 10, 2022, 9:24 PM Anurag Surendra Bhat (B20CS097) < >>> bha...@iitj.ac.in> wrote: >>> >>>> Hello sympy community, >>>> I am Anurag Bhat , a computer science and engineering sophomore at IIT >>>> Jodhpur, India .I have been contributing to SymPy for quite a while now >>>> and >>>> here is a link to my work - >>>> https://github.com/sympy/sympy/pulls/faze-geek >>>> >>>> I have done work in the physics module and recently developed interest >>>> in 'physics.control' module after Akshansh Bhatt( GSOC'21 contributor to >>>> this module) recently merged my pr relevant to control plots - #23074 >>>> <https://github.com/sympy/sympy/pull/23074> -* physics : Improved >>>> Bode's phase and magnitude plots.* >>>> I have previously covered a introduction to control systems in a >>>> college course - Signals and Systems . I also had made a basic project >>>> like >>>> implementation of a system for denoising then deblurring signals V.S. >>>> system for deblurring then denoising signals.(File - >>>> https://drive.google.com/file/d/1iZDy8O7V5Hi703P7BPFScx0bAFgrM6na/view?usp=sharing >>>> ) >>>> >>>> Coming to the project I have gone over the online sympy documentation >>>> of control systems .I have had a brief idea of what proposal writing is >>>> like after I went through Akshansh's proposal for last year .I have read >>>> the google groups discussion on what use/value does a control package >>>> bring >>>> to sympy ( Re: [Discussion] GSoC 2020 -- Adding control package to >>>> sympy.physics (google.com) >>>> <https://groups.google.com/g/sympy/c/wX9BPLcJu50/m/wwxjlZTLAQAJ> ) . >>>> Some ideas I got from seeing the previous work done are - >>>> 1. Some minor functionalities that MATLAB provides but sympy currently >>>> doesn't for transfer functions for it's bandwidth , partial stability etc. >>>> 2. Adding more examples and illustrations for the previous work done . >>>> 3. Implementing remaining plots in control.plots for eg - root-locus >>>> plot , nyquist plot >>>> 4. Making TransferFunctionMatrix take numerator/denominator inputs in >>>> list format like MATLAB does . >>>> >>>> I have started finalizing/compiling all this matter since SymPy was >>>> announced to participate in GSOC this year so I'm sure I would have missed >>>> some ideas and improvements .Here I would like help from the members of >>>> the >>>> community .Firstly I would appreciate any suggestions/help/resources >>>> regarding this module .Secondly I would request past mentors ( Jason >>>> Moore) >>>> and Gsocer's /potential co-mentors( Naman and Akshansh) to guide if these >>>> are good ideas to work on, add ideas and show me proper direction since >>>> this is my first time exploring the field of open source . >>>> >>>> >>>> Regards >>>> Anurag Bhat. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "sympy" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to sympy+un...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/0dfd01c5-ab44-4624-bdba-9cb76ebc28cbn%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/sympy/0dfd01c5-ab44-4624-bdba-9cb76ebc28cbn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/7916e787-f827-473b-9984-c5b4fbede73an%40googlegroups.com.