|
|
last edited 16 years ago by kratt6 |
1 2 3 | ||
Editor: kratt6
Time: 2007/12/28 14:16:53 GMT-8 |
||
Note: |
added:
From kratt6 Fri Dec 28 14:16:52 -0800 2007
From: kratt6
Date: Fri, 28 Dec 2007 14:16:52 -0800
Subject:
Message-ID: <20071228141652-0800@axiom-wiki.newsynthesis.org>
Category: Axiom User Interface => Axiom Library
This example is from Ulrich Schwardmann: Computeralgebra-Systeme, Addison-Wesley, 1995, p127f. It tries to compute a partial fraction of a fraction with unknown constants. The result is not the expected partial fraction decomposition, and does not seem to have any other senseful interpretation (it is q/x).
Following is a verification of the partial fraction that macsyma computes.
q:=(x+a)/(x*(x**3+(b+c)*x**2+b*c*x))
(1) |
partialFraction(q,x)
(2) |
(c-a)/((c^3-b*c**2)*(x+c))-(b-a)/((b**2*c-b**3)*(x+b))+((b-a)*c-a*b)/(b**2*c**2*x)+a/(b*c*x**2) - q
(3) |
partialFraction$PartialFraction
. I did it as follows:
SUP FRAC POLY INT has EUCDOM
(4) |
den := univariate((x*(x**3+(b+c)*x**2+b*c*x)),x)::SUP FRAC POLY INT
(5) |
num := univariate(x+a,x)::SUP FRAC POLY INT
(6) |
partialFraction(num,factor den)$PartialFraction SUP FRAC POLY INT
(7) |
Does this suggest that the bug is in PartialFractionPackage
?
There are two operations partialFraction
with two arguments:
partialFraction: (R, FRR) -> % ++ partialFraction(numer,denom) is the main function for ++ constructing partial fractions. The second argument is the ++ denominator and should be factored.
from the exposed domain PartialFraction
and:
partialFraction: (FPR, Symbol) -> Any ++ partialFraction(rf, var) returns the partial fraction decomposition ++ of the rational function rf with respect to the variable var.
from the unexposed package PartialFractionPackage
. Of course, the interpreter chooses the exposed domain, which produced the surprising result.
This shows that overloading should be done very carefully. I think we should rename the operations in PartialFractionPackage
.
Martin
Martin
I came to the same result this weekend. It seems to me from first tests that it would suffice to just also expose PartialFractionPackage?. However I don't know axiom good enough to see if there are any unwanted side effects.
)expose PFRPAC
PartialFractionPackage is now explicitly exposed in frame initial partialFraction((x+a)/(x*(x**3+(b+c)*x**2+b*c*x)),x)
(8) |
partialFraction(1,10)
(9) |
there are in fact two (different) fixes proposed... Should be reconsidered
Category: Axiom User Interface => Axiom Library