‘Polynomial expression expected.’ showed when i tried to get the coefficents
12 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Zhanhao Liang
il 29 Apr 2020
Commentato: Zhanhao Liang
il 30 Apr 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 Commenti
Risposta accettata
Walter Roberson
il 29 Apr 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 Commenti
Walter Roberson
il 29 Apr 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Number Theory in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!