Post Reply 
About HP Prime factorization
11-02-2020, 06:28 AM
Post: #1
About HP Prime factorization
Sorry if this had been specifically asked before, I searched but couldn't find anything.
Suppose I want to factorize the expression: a*s^(2) + b*s + c for the variable s. In other CAS systems this could be done simply by specifying it inside the factor(expression,var) function, in calculators such as the TI 89, see image attached. I haven't found a way to achieve this on the HP Prime as its factor function doesn't work the same way.


Attached File(s) Thumbnail(s)
   
Find all posts by this user
Quote this message in a reply
11-02-2020, 07:58 AM (This post was last modified: 11-02-2020 07:59 AM by parisse.)
Post: #2
RE: About HP Prime factorization
factor factors over the field of coefficients of the arguments. If you want to extend this field, you must give a 2nd argument specifying the extension.
For example
Code:
P:=a*s^2+b*s+c;
l:=solve(P=0,s);
factor(P,l[0])
Find all posts by this user
Quote this message in a reply
11-02-2020, 05:40 PM
Post: #3
RE: About HP Prime factorization
[quote='parisse' pid='138432' dateline='1604303926']
factor factors over the field of coefficients of the arguments. If you want to extend this field, you must give a 2nd argument specifying the extension.
For example
Code:
P:=a*s^2+b*s+c;
l:=solve(P=0,s);
factor(P,l[0])

Thank you very much, never would have guessed that, but it makes sense.

Now, just another question, let's say I want to factor the expression: a^2 -2*a*b+b^2+s^2, it's easy to see that it is equivalent to: s^2 + (a-b)^2. I know I can get to the second expression in the HP Prime by applying the factor function like this: factor(a^2 -2*a*b+b^2)+s^2, but the point if it is possible for it to be done automatically with a function. This is particularly useful, for example, to getting the simplified expressions of typical laplace transforms with symbolic coefficients, such as the ones attached.


Attached File(s) Thumbnail(s)
   
Find all posts by this user
Quote this message in a reply
11-02-2020, 07:32 PM
Post: #4
RE: About HP Prime factorization
Hi, dah145

You can isolate the terms to be factorize, like this.

XCas> factor2(mess,s) := poly2symb(factor(symb2poly(mess,s)),s)

XCas> factor2(a^2 - 2*a*b + b^2 + s^2, a)       → b^2+s^2+a*(a-2*b)
XCas> factor2(a^2 - 2*a*b + b^2 + s^2, s)       → s^2+(a-b)^2
Find all posts by this user
Quote this message in a reply
11-03-2020, 03:46 AM
Post: #5
RE: About HP Prime factorization
(11-02-2020 07:32 PM)Albert Chan Wrote:  Hi, dah145

You can isolate the terms to be factorize, like this.

XCas> factor2(mess,s) := poly2symb(factor(symb2poly(mess,s)),s)

XCas> factor2(a^2 - 2*a*b + b^2 + s^2, a)       → b^2+s^2+a*(a-2*b)
XCas> factor2(a^2 - 2*a*b + b^2 + s^2, s)       → s^2+(a-b)^2

Yes thanks, this definitely is what I was looking for. Now I wonder if it is possible to obtain the expressions in form of a product, say: (a^2 - 2*a*b + b^2 + s^2)*(a^2 - 2*a*b + b^2 + s^2) = (s^2+(a-b)^2)*(s^2+(a-b)^2), as using your custom function outputs a not so friendly expression: s^2*(2*(a^2 + b^2) + s^2)+(a+b)^2*(a-b)^2.
Find all posts by this user
Quote this message in a reply
11-19-2020, 04:12 PM (This post was last modified: 11-19-2020 10:00 PM by dah145.)
Post: #6
RE: About HP Prime factorization
(11-03-2020 03:46 AM)dah145 Wrote:  
(11-02-2020 07:32 PM)Albert Chan Wrote:  Hi, dah145

You can isolate the terms to be factorize, like this.

XCas> factor2(mess,s) := poly2symb(factor(symb2poly(mess,s)),s)

XCas> factor2(a^2 - 2*a*b + b^2 + s^2, a)       → b^2+s^2+a*(a-2*b)
XCas> factor2(a^2 - 2*a*b + b^2 + s^2, s)       → s^2+(a-b)^2

Yes thanks, this definitely is what I was looking for. Now I wonder if it is possible to obtain the expressions in form of a product, say: (a^2 - 2*a*b + b^2 + s^2)*(a^2 - 2*a*b + b^2 + s^2) = (s^2+(a-b)^2)*(s^2+(a-b)^2), as using your custom function outputs a not so friendly expression: s^2*(2*(a^2 + b^2) + s^2)+(a+b)^2*(a-b)^2.

Just wanted to update, I wrote a little program that factorizes polynomials to a more friendly expression than the built in factor function, I attached an example. A is the expression and B is the variable to factorize.

PHP Code:
#cas
facto(A,B):=

BEGIN
LOCAL fac
coepolapolb;
fac:=factors(A);
coe:={0};
polb:=[0];

FOR 
N FROM 1 TO SIZE(fac)/DO
coe[N]:=coeff(fac[2*N-1],B);
END;

pola:=factor(coe);

FOR 
N FROM 1 TO SIZE(fac)/DO
polb[N]:=poly2symb(pola[N],B);
END;

RETURN 
regroup(product(polb[n]^(fac[2*n]),n,1,SIZE(polb)));

END;
#end 


Attached File(s) Thumbnail(s)
   
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)