‘Polynomial expression expected.’ showed when i tried to get the coefficents
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Zhanhao Liang
le 29 Avr 2020
Commenté : Zhanhao Liang
le 30 Avr 2020
syms T p1 p2 p3 p4 p5 p6 real
J = T + T*((6*p1)/T^2 - (2*p4)/T)^2 + T*((6*p2)/T^2 - (2*p5)/T)^2 + T*((6*p3)/T^2 - (2*p6)/T)^2 + (T^6*((12*p1)/T^3 - (6*p4)/T^2)^2)/3 + (T^6*((12*p2)/T^3 - (6*p5)/T^2)^2)/3 + (T^6*((12*p3)/T^3 - (6*p6)/T^2)^2)/3 - T^2*((6*p1)/T^2 - (2*p4)/T)*((12*p1)/T^3 - (6*p4)/T^2) - T^2*((6*p2)/T^2 - (2*p5)/T)*((12*p2)/T^3 - (6*p5)/T^2) - T^2*((6*p3)/T^2 - (2*p6)/T)*((12*p3)/T^3 - (6*p6)/T^2);
J1 = diff(J,T);
cT = coeffs(J1,T);
Just got J for another window.
why would it show "Error using symengine Polynomial expression expected." as i ran it?
should i get a normal form of J1 first, when i want the coefficients of it? If so, how?
Appreciate for an answer.
0 commentaires
Réponse acceptée
Walter Roberson
le 29 Avr 2020
coeffs() can only be used for polynomials with respect to the variable. Your expression has division by your variable, and so is not a polynomial.
simplify() would bring a normal form, but it would still have division by the variable and so is not enough.
What you can do is
[N, D] = numden(J1);
Nc = coeffs(N, T, 'all');
Dc = coeffs(D, T, 'all');
Now Nc are the numerator coefficients and Dc are the denominator coefficients.
11 commentaires
Walter Roberson
le 29 Avr 2020
Yes, and the answer you get would N (the first output of the numden call).
You can remove a lot of the distraction on the solve() by not declaring your p symbols to be real valued. When you solve() you then do not get any warning about needing to return conditions, and you get
root(24*p6^2*z^5 + 24*p5^2*z^5 + 24*p4^2*z^5 - 48*p3*p6*z^4 - 48*p2*p5*z^4 - 48*p1*p4*z^4 + z^4 + 8*p6^2*z^2 + 8*p5^2*z^2 + 8*p4^2*z^2 - 72*p3*p6*z - 72*p2*p5*z - 72*p1*p4*z + 108*p3^2 + 108*p2^2 + 108*p1^2, z, 1)
repeated up to root number 5. And there is not obvious way to reduce that to lower degree.
The problem is not in isolating something that looks polynomial-like: the problem is that your J is too high a degree to be able to find a closed form solution for its critical points in terms of T.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Number Theory dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!