Печать полинома так, чтобы значения x или s были в порядке возрастания или убывания - PullRequest
0 голосов
/ 18 июня 2019

Я не могу найти метод или функцию, которые бы упорядочивали степени полиномов в порядке возрастания или убывания.Я использую sympy для вычисления некоторых передаточных функций, используя преобразования Лапласа.

Я обнаружил, что только collect () помогает объединить силы s, но не может печатать силы s в порядке возрастания или убывания.Я вижу такие распечатки

CLTF(s)=(K*Kd*ω**2*s + K*Kp*ω**2)/(K*Kp*ω**2 + 2*ζ*ω*s**2 + s**3 + s*(K*Kd*ω**2 + ω**2))

Сила s не в правильном порядке в знаменателе

from math import pi
from sympy import symbols, init_printing, ratsimp, fraction, pprint, collect
from sympy.solvers import solve
import matplotlib.pyplot as plt
init_printing()
s, c0, c1, c2, c3, c4 = symbols('s, c0, c1, c2, c3, c4')
Ki, Kp, Kd, K2 = symbols('Ki, Kp, Kd, K2')
K, nf, df = symbols('K, nf, df')
cltf, Ga, Gc, num, den = symbols('cltf, Ga, Gc, num, den')

Gc = Kp+Kd*s                                 # controller transfer function
Ga = 5/(s*(s**2+4*s+5))                 # open loop transfer function
Ga = 5/(s*(s**2+2*s+5))                 # open loop transfer function
Ga = K*nf**2/(s*(s**2+2*df*nf*s+nf**2))
# calculate the symbolic equation for  the closed loop transfer function
cltf = collect(ratsimp((Gc*Ga)/(1+Gc*Ga)),s)
print("\n\nClosed Loop Transfer Function = ")
pprint(cltf)
(num, den) = fraction(cltf)             # separate into numerator and denominator
print("\n\nCharacteristic Equation = ")
pprint(collect(den,s))
zeros = solve(num,s)                    # find the symbolic zeros
roots = solve(den,s)                    # find the symbolic roots
num_str=str(num)
num_str0 = num_str.replace("nf",u"\u03C9")
den_str=str(collect(den,s))
den_str0 = den_str.replace("nf",u"\u03C9")
den_str1 = den_str0.replace("df",u"\u03B6")
print("\n\nCLTF(s)=({})/({})".format(num_str0,den_str1))

Нет сообщений об ошибках.Я просто не получаю распечатку, которую хочу.Сила s не в любом порядке.Также нет функции Хорнера, которая бы печатала полином третьего порядка, как этот

((d*x+c)*x+b)*x+a instead of a+b*x+c*x**2+d*x**3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...