diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet index e452b15..dfd6569 100644 --- a/books/bookvol10.4.pamphlet +++ b/books/bookvol10.4.pamphlet @@ -118327,6 +118327,94 @@ ParametricSurfaceFunctions2(CF1: Type, CF2:Type): with @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package PFRPAC PartialFractionPackage} +<>= +)set break resume +)spool PartialFractionPackage.output +)set message test on +)set message auto off +)clear all + +--S 1 of 4 +a:=x+1/(y+1) +--R +--R x y + x + 1 +--R (1) ----------- +--R y + 1 +--R Type: Fraction Polynomial Integer +--E 1 + +--S 2 of 4 +partialFraction(a,y)$PFRPAC(INT) +--R +--R 1 +--R (2) x + ----- +--R y + 1 +--R Type: PartialFraction UnivariatePolynomial(y,Fraction Polynomial Integer) +--E 2 + +--S 3 of 4 +b:=y+1/(x+1) +--R +--R (x + 1)y + 1 +--R (3) ------------ +--R x + 1 +--R Type: Fraction Polynomial Integer +--E 3 + +--S 4 of 4 +partialFraction(b,x)$PFRPAC(INT) +--R +--R 1 +--R (4) y + ----- +--R x + 1 +--R Type: PartialFraction UnivariatePolynomial(x,Fraction Polynomial Integer) +--E 4 + +)spool +)lisp (bye) + +@ +<>= +==================================================================== +PartialFractionPackage examples +==================================================================== + +When Axiom is given an expression such as: + + a:=x+1/(y+1) + +it will end up with the result in Fraction Polynomial Integer. + + x y + x + 1 + ----------- + y + 1 + +We might want it in a partial fraction form. This can be done with: + + partialFraction(a,y)$PFRPAC(INT) + + 1 + x + ----- + y + 1 + +We can do the same thing with a different variable: + + b:=y+1/(x+1) + + (x + 1)y + 1 + ------------ + x + 1 + + partialFraction(b,x)$PFRPAC(INT) + + 1 + y + ----- + x + 1 + +See Also: +o )show PartialFractionPackage + +@ \pagehead{PartialFractionPackage}{PFRPAC} \pagepic{ps/v104partialfractionpackage.ps}{PFRPAC}{1.00} @@ -118352,40 +118440,43 @@ ParametricSurfaceFunctions2(CF1: Type, CF2:Type): with PartialFractionPackage(R): Cat == Capsule where -- R : UniqueFactorizationDomain -- not yet supported - R : Join(EuclideanDomain, CharacteristicZero) - FPR ==> Fraction Polynomial R - INDE ==> IndexedExponents Symbol - PR ==> Polynomial R - SUP ==> SparseUnivariatePolynomial - Cat == with - partialFraction: (FPR, Symbol) -> Any - ++ partialFraction(rf, var) returns the partial fraction decomposition - ++ of the rational function rf with respect to the variable var. - partialFraction: (PR, Factored PR, Symbol) -> Any - ++ partialFraction(num, facdenom, var) returns the partial fraction - ++ decomposition of the rational function whose numerator is num and - ++ whose factored denominator is facdenom with respect to the - ++ variable var. - Capsule == add - partialFraction(rf, v) == - df := factor(denom rf)$MultivariateFactorize(Symbol, INDE,R,PR) - partialFraction(numer rf, df, v) - - makeSup(p:Polynomial R, v:Symbol) : SparseUnivariatePolynomial FPR == - up := univariate(p,v) - map((z1:PR):FPR +-> z1::FPR,up)_ - $UnivariatePolynomialCategoryFunctions2(PR, SUP PR, FPR, SUP FPR) - - partialFraction(p, facq, v) == - up := UnivariatePolynomial(v, Fraction Polynomial R) - fup := Factored up - ffact : List(Record(irr:up,pow:Integer)) - ffact:=[[makeSup(u.factor,v) pretend up,u.exponent] - for u in factors facq] - fcont:=makeSup(unit facq,v) pretend up - nflist:fup := fcont*(*/[primeFactor(ff.irr,ff.pow) for ff in ffact]) - pfup:=partialFraction(makeSup(p,v) pretend up, nflist)$PartialFraction(up) - coerce(pfup)$AnyFunctions1(PartialFraction up) + R : Join(EuclideanDomain, CharacteristicZero) + FPR ==> Fraction Polynomial R + INDE ==> IndexedExponents Symbol + PR ==> Polynomial R + SUP ==> SparseUnivariatePolynomial + Cat == with + partialFraction: (FPR, Symbol) -> Any + ++ partialFraction(rf, var) returns the partial fraction decomposition + ++ of the rational function rf with respect to the variable var. + ++ + ++X a:=x+1/(y+1) + ++X partialFraction(a,y)$PFRPAC(INT) + partialFraction: (PR, Factored PR, Symbol) -> Any + ++ partialFraction(num, facdenom, var) returns the partial fraction + ++ decomposition of the rational function whose numerator is num and + ++ whose factored denominator is facdenom with respect to the + ++ variable var. + Capsule == add + partialFraction(rf, v) == + df := factor(denom rf)$MultivariateFactorize(Symbol, INDE,R,PR) + partialFraction(numer rf, df, v) + + makeSup(p:Polynomial R, v:Symbol) : SparseUnivariatePolynomial FPR == + up := univariate(p,v) + map((z1:PR):FPR +-> z1::FPR,up)_ + $UnivariatePolynomialCategoryFunctions2(PR, SUP PR, FPR, SUP FPR) + + partialFraction(p, facq, v) == + up := UnivariatePolynomial(v, Fraction Polynomial R) + fup := Factored up + ffact : List(Record(irr:up,pow:Integer)) + ffact:=[[makeSup(u.factor,v) pretend up,u.exponent] + for u in factors facq] + fcont:=makeSup(unit facq,v) pretend up + nflist:fup := fcont*(*/[primeFactor(ff.irr,ff.pow) for ff in ffact]) + pfup:=partialFraction(makeSup(p,v) pretend up,nflist)$PartialFraction(up) + coerce(pfup)$AnyFunctions1(PartialFraction up) @ <>= diff --git a/changelog b/changelog index 8919c24..0e8816d 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +20091030 tpd src/axiom-website/patches.html 20091030.03.tpd.patch +20091030 tpd src/algebra/Makefile add PartialFractionPackage.help +20091030 tpd books/bookvol10.4 document PartialFractionPackage 20091030 tpd src/axiom-website/patches.html 20091030.02.tpd.patch 20091030 tpd src/algebra/Makefile add OFMONOID.help 20091030 tpd books/bookvol10.3 document OrderedFreeMonoid diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 808c021..d3951b0 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -16517,9 +16517,10 @@ SPADHELP=\ ${HELP}/OrderedFreeMonoid.help \ ${HELP}/OrderedVariableList.help \ ${HELP}/OrderlyDifferentialPolynomial.help \ + ${HELP}/PartialFraction.help \ + ${HELP}/PartialFractionPackage.help \ ${HELP}/PlaneAlgebraicCurvePlot.help \ ${HELP}/Plot.help \ - ${HELP}/PartialFraction.help \ ${HELP}/Permanent.help \ ${HELP}/Permutation.help \ ${HELP}/Polynomial.help \ @@ -16647,6 +16648,7 @@ REGRESS= Any.regress \ OrderedVariableList.regress \ OrderlyDifferentialPolynomial.regress \ PartialFraction.regress \ + PartialFractionPackage.regress \ Permanent.regress \ Permutation.regress \ PlaneAlgebraicCurvePlot.regress \ @@ -17646,6 +17648,18 @@ ${HELP}/PartialFraction.help: ${BOOKS}/bookvol10.3.pamphlet >${INPUT}/PartialFraction.input @echo "PartialFraction (PFR)" >>${HELPFILE} +${HELP}/PartialFractionPackage.help: ${BOOKS}/bookvol10.4.pamphlet + @echo 7885 create PartialFractionPackage.help from \ + ${BOOKS}/bookvol10.4.pamphlet + @${TANGLE} -R"PartialFractionPackage.help" \ + ${BOOKS}/bookvol10.4.pamphlet \ + >${HELP}/PartialFractionPackage.help + @cp ${HELP}/PartialFractionPackage.help ${HELP}/PFRPAC.help + @${TANGLE} -R"PartialFractionPackage.input" \ + ${BOOKS}/bookvol10.4.pamphlet \ + >${INPUT}/PartialFractionPackage.input + @echo "PartialFractionPackage (PFRPAC)" >>${HELPFILE} + ${HELP}/Permanent.help: ${BOOKS}/bookvol10.4.pamphlet @echo 7890 create Permanent.help from ${BOOKS}/bookvol10.4.pamphlet @${TANGLE} -R"Permanent.help" ${BOOKS}/bookvol10.4.pamphlet \ diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 6db18b6..fef7922 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2201,5 +2201,7 @@ src/input/numericgamma.input added
src/input/donsimple.input added
20091030.02.tpd.patch books/bookvol10.3 document OrderedFreeMonoid
+20091030.03.tpd.patch +books/bookvol10.4 document PartialFractionPackage