I've fixed an easier bug to be sure that it will be merged in the right time.
https://github.com/sympy/sympy/pull/7288 W dniu niedziela, 16 marca 2014 16:10:16 UTC+1 użytkownik Jason Moore napisał: > > Cool. That looks useful. If you start using Symbols the results get more > complicated but with this change: > > from sympy import symbols > from sympy.matrices import Matrix > from sympy.core.symbol import Symbol > from sympy.polys.polytools import Poly > from sympy.solvers.solvers import solve > > > def place(A, B, p): > K_symbols = symbols('k0:{0}'.format(A.rows)) > K = Matrix([[ k for k in K_symbols]]) > closed_coeffs = Matrix((A - B * K).berkowitz()[2]) > desired_poly = Poly([1],Symbol('lambda')) > for pole in p: > desired_poly = desired_poly * Poly([1, -pole],Symbol('lambda')) > desired_coeffs = Matrix(desired_poly.all_coeffs()) > return K.subs(solve(closed_coeffs - desired_coeffs, K_symbols)) > > > if __name__ == "__main__": > from sympy.abc import a, b, c, d > A = Matrix([[0, 0, a], [a, 0, a], [a, 0, 0]]) > B = Matrix([0, 0, a]) > p = [b, c, d] > print place(A, B, p) > > You get some interesting symbolic functions for the gains: > > moorepants@moorepants-UL30A:Desktop$ python pole_placement.py > Matrix([[(a*(a**2 + b*c + b*d + c*d) + b*c*d)/a**3, -b*c*d/a**3, -(b + c + > d)/a]]) > > The symbolic form, for simple systems, can be very powerful for seeing how > the gains are a function of the system (A, B) and the desired poles. > > > > Jason > moorepants.info > +01 530-601-9791 > > > On Sun, Mar 16, 2014 at 8:32 AM, Maciek Barański > <[email protected]<javascript:> > > wrote: > >> Below is an example of implementation of place command in Matlab ( >> http://www.mathworks.com/help/control/ref/place.html;jsessionid=aa5f7955d910961c374bbda6868a >> ). >> >> http://pastie.org/private/woqxo2cqgt8c7qdicyxr9q >> >> >> >> >> >> >> W dniu wtorek, 11 marca 2014 21:54:41 UTC+1 użytkownik Jason Moore >> napisał: >>> >>> Maciej, >>> >>> Can you provide us with some example SymPy code demonstrating how you >>> want the control tool box to work? >>> >>> >>> Jason >>> moorepants.info >>> +01 530-601-9791 >>> >>> >>> On Tue, Mar 11, 2014 at 4:28 PM, Tim Lahey <[email protected]> wrote: >>> >>>> Oh, >>>> >>>> I misread your e-mail. You had the right toolbox, but if you read, >>>> you'll find that it does a lot of symbolic manipulation and derivation. >>>> The >>>> toolbox then supports bringing the designed controller into MapleSim. >>>> >>>> Cheers, >>>> >>>> Tim. >>>> >>>> On 2014-03-11, at 4:25 PM, Tim Lahey <[email protected]> wrote: >>>> >>>> > >>>> > That's not the one I was talking about. I'm talking about the Control >>>> Design Toolbox, >>>> > >>>> > http://www.maplesoft.com/products/toolboxes/control_design/ >>>> > >>>> > That said, MapleSim is a symbolic tool that uses a numerical back-end >>>> to solve the system of DAEs. MapleSim uses graph theory to derive the set >>>> of equations symbolically. I know because the core of it was developed by >>>> people in my department. I was a system called DynaFlex that they built a >>>> more user-friendly UI and added new capabilities. The original version of >>>> DynaFlex was co-supervised by my PhD supervisor. >>>> > >>>> > Cheers, >>>> > >>>> > Tim. >>>> > >>>> > --- >>>> > Tim Lahey, Ph.D. >>>> > Post-Doctoral Fellow >>>> > Systems Design Engineering >>>> > University of Waterloo >>>> > >>>> > On 2014-03-11, at 4:12 PM, Jason Moore <[email protected]> wrote: >>>> > >>>> >> Looks like a numerical tool "MapleSim": http://www.maplesoft.com/ >>>> products/toolboxes/control_design/ >>>> >> >>>> >> >>>> >> Jason >>>> >> moorepants.info >>>> >> +01 530-601-9791 >>>> >> >>>> >> >>>> >> On Tue, Mar 11, 2014 at 4:10 PM, Tim Lahey <[email protected]> >>>> wrote: >>>> >> Maple has a symbolic control toolbox. >>>> >> >>>> >> >>>> >> On 2014-03-11, at 4:08 PM, Jason Moore <[email protected]> wrote: >>>> >> >>>> >>> Maciej, >>>> >>> >>>> >>> Why do you think this is appropriate for a CAS like SymPy? Most >>>> control work is done numerically, probably because most systems are such >>>> high order that symbolics become less useful. Are there even any >>>> commercial >>>> examples of symbolic control toolboxes? What is the ultimate utility of >>>> having one? >>>> >>> >>>> >>> >>>> >>> Jason >>>> >>> moorepants.info >>>> >>> +01 530-601-9791 >>>> >>> >>>> >>> >>>> >>> On Mon, Mar 10, 2014 at 3:25 PM, Maciek Barański <[email protected]> >>>> wrote: >>>> >>> Hello everyone! I'm Maciej Barański, a student of Automatics and >>>> Robotics from University of Science and Technology in Cracov (AGH). >>>> >>> I'd like to make a functionality for dealing with LTI systems, like >>>> linearization, getting output of the system, checking if the system is >>>> stable, controllable and observable, making feedback control and implement >>>> a linear kalman's filter. Is it a valid idea for GSOC project? I've seen >>>> http://www.mcs.anl.gov/~wozniak/papers/wozniak_mmath.pdf. >>>> >>> >>>> >>> My github account: https://github.com/getrox >>>> >>> My IRC nickname: getrox >>>> >>> >>>> >>> I've made a pull request: https://github.com/sympy/sympy/pull/7254 >>>> >>> >>>> >>> Thank you >>>> >>> Maciej >>>> >>> >>>> >>> >>>> >>> -- >>>> >>> 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 [email protected]. >>>> >>> To post to this group, send email to [email protected]. >>>> >>>> >>> Visit this group at http://groups.google.com/group/sympy. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/34a44d07-2b5e- >>>> 47f0-be21-52b1206dcacd%40googlegroups.com. >>>> >>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>>> >>> >>>> >>> -- >>>> >>> 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 [email protected]. >>>> >>> To post to this group, send email to [email protected]. >>>> >>>> >>> Visit this group at http://groups.google.com/group/sympy. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/CAP7f1AjpPO%2BzM0%2B- >>>> JWyfRAhodBZn3bhJLFZk6Xj3uKSZV3h45Q%40mail.gmail.com. >>>> >>> >>>> >>> For more options, visit https://groups.google.com/d/optout. >>>> >> >>>> >> -- >>>> >> 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 [email protected]. >>>> >> To post to this group, send email to [email protected]. >>>> >>>> >> Visit this group at http://groups.google.com/group/sympy. >>>> >> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/A1D8C7CD-C4AA- >>>> 4CF2-B663-1004422FBB41%40gmail.com. >>>> >> >>>> >> For more options, visit https://groups.google.com/d/optout. >>>> >> >>>> >> >>>> >> -- >>>> >> 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 [email protected]. >>>> >> To post to this group, send email to [email protected]. >>>> >>>> >> Visit this group at http://groups.google.com/group/sympy. >>>> >> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sympy/CAP7f1AiQPfHDOAZiPXFkUiFrO2YON >>>> aZz%3DSSJw8yg8g6WKS0k0Q%40mail.gmail.com. >>>> >> For more options, visit https://groups.google.com/d/optout. >>>> > >>>> >>>> -- >>>> 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 [email protected]. >>>> To post to this group, send email to [email protected]. >>>> >>>> Visit this group at http://groups.google.com/group/sympy. >>>> To view this discussion on the web visit https://groups.google.com/d/ >>>> msgid/sympy/D0F85117-D303-44AF-B67E-343C1AEB71EE%40gmail.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> 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 [email protected] <javascript:>. >> To post to this group, send email to [email protected] <javascript:> >> . >> Visit this group at http://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/0452b0e6-5262-408d-95c4-940ab0b91f10%40googlegroups.com<https://groups.google.com/d/msgid/sympy/0452b0e6-5262-408d-95c4-940ab0b91f10%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/061da58e-9dcf-43c0-8d2b-7abe1a39d214%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
