HP Forums

Full Version: Simplify quirk
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
For polynomials of the Nth order, say a 3rd order: y := x + x^3 + x^2, the expected decreasing order expression is displayed when simplify(y)= x^3 + x^2 + x is applied (unless you have increasing checked in the CAS settings). Things change the moment a second symbolic variable factor is included in the polynomial, say y := a*x + x^3+ x^2, you get: simplify(y) := a*x + x^3 + x^2, which, i think, is counter intuitive. Increasing order seems to work as expected when minimum simplify is chosen in CAS settings.
That's because the main variable of the polynomial is a here. You can run reorder to specify variable ordering.
(11-11-2020 05:25 PM)parisse Wrote: [ -> ]That's because the main variable of the polynomial is a here. You can run reorder to specify variable ordering.

I see, thanks.

Another pet peeve of mine with this calculator is how the poly2sym() output is handled, when compared to other software such as matlab for example, which I think is more intuitive:


syms a b c d x
p = poly2sym([1, a, b + c, d], x)


Outputs:

p = x^3 + a*x^2 + (b + c)*x + d

In HP Prime, you would expect a result with grouping by coefficient order but this not the case:

p:=poly2sym([1, a, b+c, d]) = x*(x*(a+x)+b+c)+d
and after a simplify press: a*x^2 + b*x + d + x^3

Now as there's no built in function to group a polynomial by coefficient order, one way around to do it in the HP Prime is:

sum(coeff(p,x).*seq(x^n,n,degree(p,x),0,1)) = a*x^2 + x^3 +x*(b+c) + d (Result with simplify minimum in CAS settings)

A reorder command would give me the correct descending exponential order for variable x but would expand the polynomial.

The only way to get sum(coeff(p,x).*seq(x^n,n,degree(p,x),0,1)) =x^3 + a*x^2 + +x*(b+c) + d is to have the simplify setting set to none.
poly2symb is an advanced user command. It returns the Horner form of the polynomial, which is the fastest way to evaluate the polynomial (and probably also the most accurate). Moreover, you can copy/paste the output to a standard programming language like C without modification.
(11-13-2020 06:42 PM)parisse Wrote: [ -> ]poly2symb is an advanced user command. It returns the Horner form of the polynomial, which is the fastest way to evaluate the polynomial (and probably also the most accurate). Moreover, you can copy/paste the output to a standard programming language like C without modification.

I see, didn't really think of that, thank you for your patience.

Also, another quirk I found, I know this one seems fairly simple but I have not found a way to do it with the Prime built in functions:

We know that x*x^(1/3) = x^(4/3), but I haven't found a way in the HP Prime to express it like the right part of the equation, after inputting the left part of the equation. Already tried simplify(), normal(), regroup() and expand() to no avail.

Same behavior for expressions such as (x^(1/4))^3 that we know is equivalent to x^(3/4).
You can't because x^(4/3) is automatically rewritten as x*x^(1/3) and x^(3/4) as (x^(1/4))^3.
(11-14-2020 08:14 PM)parisse Wrote: [ -> ]You can't because x^(4/3) is automatically rewritten as x*x^(1/3) and x^(3/4) as (x^(1/4))^3.

Actually it seems I found a workaround.

With simplify set to none and floating to 5:

approx(x*x^(1/3)) = x*x^(0.333333)

expand(x*x^(0.333333)) = x^(1.333333)

exact(x^(1.333333)) = x^(4/3)

Same method also works with (x^(1/4))^3.
Reference URL's