On Friday, September 4, 2015 at 5:39:18 PM UTC+2, Aaron Meurer wrote:
>
> On Fri, Sep 4, 2015 at 4:16 AM, Francesco Bonazzi
> <[email protected] <javascript:>> wrote:
> > You may assume variables to be positive/negative, for now.
> >
> > Sage uses a lot of backends. In case of assume(zeta > 1), I believe it
> > relies on Maxima, which can handle that kind of assumptions.
> >
> > SymPy's aim, on the other hand, is to implement all the algorithms on
> its
> > own.
> >
> > Assumptions with inequalities look like they are not yet supported, but
> I
> > suppose they will be supported by a syntax similar to this one, as soon
> as
> > the algorithm handling them will be finished:
> >
> > from sympy.assumptions.assume import global_assumptions
> > global_assumptions.add(Q.positive(zeta - 1))
> >
> > (Note: this code doesn't currently work as expected)
> >
> >
> > On Thursday, 3 September 2015 18:19:38 UTC+2, Carl Sandrock wrote:
> >>
> >> I am trying to build a workbook to illustrate the effect of various
> >> parameters of second order transfer functions. The full workbook is on
> >> GitHub, but here is a minimal example of the problem:
> >>
> >> import sympy
> >>
> >> tau, zeta, t, w, K = sympy.symbols('tau, zeta, t, w, K', real=True,
> >> positive=True)
> >> s = sympy.Symbol('s')
> >>
> >>
> >> G = K/(tau**2*s**2 + 2*tau*zeta*s + 1)
> >>
> >>
> >> The impulse response of the second order system is simply the inverse
> >> Laplace of G. However, the nature of the inverse depends on the
> parameter ζ.
> >> TAttempting directly to calculate the inverse results in
> >>
> >>
> >> TypeError: cannot determine truth value of
>
> This error usually indicates a bug in library code. Can you open an
> issue with a full reproducing example and a full traceback?
>
> Aaron Meurer
>
>
I have created an issue: https://github.com/sympy/sympy/issues/9900
It appears that this is a regression - the inverse is calculated
appropriately in 0.7.5
>>
> >> -zeta/tau - sqrt(zeta + 1)*cos(atan2(0, zeta - 1)/2)*sqrt(Abs(zeta -
> >> 1))/tau < oo
> >>
> >>
> >> There are three cases of interest, ζ>1, ζ=1 and 0<ζ<1
> >>
> >> In Sage, I would be able to use assume(zeta > 1) before calculating the
> >> inverse to obtain the correct version of the inverse, but I have not
> found a
> >> way to impose such constraints in SymPy. So, first question is whether
> I can
> >> find nice solutions for these cases to the inverse.
> >>
> >>
> >> Failing that, I want at least to be able to calculate the inverse with
> >> known values of all the parameters so that I can animate the response
> using
> >> IPython notebook widgets. Here I have also been out of luck, as some
> cases
> >> result in special values which are not cleanly evaluated to
> >>
> >>
> >> knownbadvalues = [{K: 5.05, tau: 5., zeta: 1.},
> >> {K: 5.05, tau: 5.05, zeta: 1.05}
> >> ]
> >> for values in knownbadvalues:
> >> print sympy.inverse_laplace_transform(G.subs(values), s, t,
> >> noconds=True)
> >>
> >> (0.202*t - 0.404*EulerGamma - 0.404*polygamma(0, 1.0))*exp(-0.2*t)
> >> 0.198019801980198*meijerg(((0.728681938243239, 0.855476477598345), ()),
> >> ((), (-0.271318061756761, -0.144523522401655)), exp(t))
> >>
> >> ts = numpy.linspace(0, tmax, 100)
> >>
> >> sympy.lambdify(t, invL(G.subs(values)), ['numpy', 'sympy'])(ts).n()
> >>
> >>
> >> fails with "ValueError: sequence too large; must be smaller than 32"
> >> Any advice on getting either getting the closed forms or just finding a
> >> version which can be evaluated cleanly?
> >
> > --
> > 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/c731194a-56ad-4385-ab6a-b0e5514d74e0%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/1fbcfa93-c487-42ef-86d3-0a2e9e586503%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.