The degree function can be imported like from sympy import degree
It is used to get the degree of a polynomial expression. On Mon, 6 Mar 2023 at 14:53, Thomas Ligon <[email protected]> wrote: > > Thanks! That's a big help, but I am not finished yet. Here is where I am now: > > Step 1: Use your code. > name 'StrPrinter' is not defined > changed StrPrinter to sympy.printing.str.StrPrinter > https://docs.sympy.org/latest/modules/printing.html > name 'degree' is not defined > I tried key=sympy.printing.str.degree, but that gave me > module 'sympy.printing.str' has no attribute 'degree' > Then I tried key=sympy.degree and that worked. > Now the two series are being printed in the desired order. > > Step 2: Use latex > I tried changing print(doprint(series)) to print(latex(doprint(series))) > and the result is > \mathtt{\text{-2.565*t + 147.94*t**3 - 2867.7*t**5}} > which doesn't format correctly in Word's equation editor or in > www.overleaf.com, > where it formats correctly, but issues an error > Undefined control sequence. > LaTeX Error: \mathtt allowed only in math mode. > I tried changing the string to > -2.565*t + 147.94*t**3 - 2867.7*t**5 > and this formats correctly in Word and in Overleaf. > Then I tried > doprint = sympy.printing.latex.LatexPrinter(settings={'order':'none'}).doprint > but that throws an exception > '_PrintFunction' object has no attribute 'LatexPrinter' > even though the class > class sympy.printing.latex.LatexPrinter(settings=None) > is defined in > https://docs.sympy.org/latest/modules/printing.html#module-sympy.printing.latex > > Still to do: > Learn how this works. > Learn why evalf(5) works. The documentation at > https://docs.sympy.org/latest/modules/evalf.html > doesn't make it clear to me what the possible arguments are and what they > mean. > Find documentation for sorted and key=degree. > I searched for sympy degree and found polynomials and angles, but still don't > understand this one. > > > On Sunday, March 5, 2023 at 8:53:32 PM UTC+1 Oscar wrote: > > On Sun, 5 Mar 2023 at 08:32, Thomas Ligon <[email protected]> wrote: > > > > I have a lot of power series that look like this (but going up to t**12): > > exp1 = -2867.70035529489*t**5 + 147.938724526848*t**3 - 2.56500070531002*t > > While trying to gain some insight into the mathematics that creates them, I > > want to print a shorter version, such as > > - 2.565 t + 147.93872 t**3- 2867.70036 t**5 > > but the best I have achieved is > > - 2867.70036 t^{5} + \left(147.93872 t^{3} - 2.565 t\right) > > Rounding the numbers was easy, but I would prefer to round to 5 digits > > total, not 5 digits after the decimal point. I was able to convert the > > expression to a list and sort the list, but when I converted the list back > > to an expression, I didn't succeed in producing the order I wanted. > > You can get 5 digits by using exp1.evalf(5). > > It is surprisingly difficult to control the order of terms in sympy's > printing functionality but it is possible: > > In [1]: exp1 = -2867.70035529489*t**5 + 147.938724526848*t**3 - > 2.56500070531002*t > > In [2]: doprint = StrPrinter(settings={'order':'none'}).doprint > > In [3]: series = Add(*sorted(exp1.evalf(5).args, key=degree), evaluate=False) > > In [4]: print(doprint(series)) > -2.565*t + 147.94*t**3 - 2867.7*t**5 > > There are two steps to controlling the order: > > - Ordering the terms in the expression itself (the series variable above). > - Getting the printer to respect that ordering ('order':'none'). > > It should be possible to set order=None with init_printing and that > does work for the pretty printer but not for string printing (i.e. > print(expr) or str(expr)). > > -- > Oscar > > -- > 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 view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/d48be44a-e979-41fd-aa37-1fabadde9b7an%40googlegroups.com. -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAHVvXxQbSqDVa0a3hzhNuKTBPEZmYYoXdNvvky33%2BdkWk3V7GA%40mail.gmail.com.
