Find polynomial GCD by "Leadingcoefficient Elinimation"
In the longhand polynomial division given as
P(k) = P(k2)  P(k1)*Q(k)
The quotient Q(k) and the remainder P(k) are obtained from dividing the dividend P(k2) by the divisor P(k1). If we can make Q(k) = 1, by converting P(k2) and P(k1) into equal degree and monic, then the longhand polynomial division becomes simply the "monic polynomial subtraction" (MPS):
P(k) = P(k2)  P(k1)
For a pair of given polynomials p(x) and q(x) of degree n and m, n>m, we set
P(1) = p(x)/p_0
P(2) = q(x)*x^(nm)/q_0
Applying the MPS repeatedly starting from k=3, until k=K+1, such that
P(K+1) = P(k1)  P(k) = 0
then we get our desired polynomial GCD as
gcd(p,q) = P(K).
The source code uses only basic MATLAB builtin functions. Its listing is only 17 lines total !
Amazingly, this simple routine gives the expected results for the test polynomials and their derivatives of very high degree, such as
p(x) = (x + 1)^1000
p(x) = (x + 123456789)^30
p(x) = (1234x + 56789)^60
p(x) = (x^42x^3+3x^24x +5)^50
p(x) = (x^4  1)^25
*************** UPDATE (10/05/09): **************
The approach "Leadingcoefficient Elinimation" is revised from the original "Monic Polynomial Subtraction".
It also reduces almost half of the total arithematic operations.
The total source code listing is only 12 lines!
1.8  The approach "Leadingcoefficient Elinimation" is revised from the original "Monic Polynomial Subtraction". Update the mfile. The total mfile listing is fewer than 15 lines! 

1.4  Revise the mfile. The source code listing is only 17 lines total ! 

1.3  Update the mfile  improve the case that the leading coef of given poly is very huge. 

1.2  Update the mfile. 

1.1  Update the mfile and the description. 

Update the Mfile. Add "Polynomial remainder sequences" as output. 
Inspired: Polynomials with multiple roots solved
Feng Cheng Chang (view profile)
Pozos:
To answer your question, first find r the GCD of two given polynomials p and q, then, u=p/r, v=q/r and w=u*v.
The partial fraction expansion (PFE) of 1/w will give 1/w=y/u+x/v,
where the two desired polynomials x and y can thus be determined after performing reverse PFE. Thus,
1 = x*u+y*v, or
r=x*p+y*q.
In addition, we may also find the two polynomials t and s, so that
1=u/t+v/s, or
r=p/t+q/s.
It is interesting to note that x and y are expected to be, respectively, equal to 1/t and 1/s. However, it isn't so !
Please let me know if you want find out more detail derivation about these relations.
FC Chang
bullpoz Pozos (view profile)
FC Chang:
I would like a favor.I've made a gui that represents the gcd
it is like this: r=poly_gcd(p,q)
i've been asked to make this:
r=xp+ψq
if you understand can you tell me how to show this expression out of the gcd code
Thanks
Feng Cheng Chang (view profile)
Pozos:
I do not understand your question. But if you means that you want make a gui from my article, you may go ahead to do so.
Please see my other articles, such as "Solve multipleroot polynomials' that may refer computation of polynomial GCD.
FC Chang
bullpoz Pozos (view profile)
Who can i make a gui of that?please help!