|
|
last edited 17 years ago by kratt6 |
1 2 3 | ||
Editor: kratt6
Time: 2007/12/28 14:16:40 GMT-8 |
||
Note: not yet applied |
added:
From kratt6 Fri Dec 28 14:16:40 -0800 2007
From: kratt6
Date: Fri, 28 Dec 2007 14:16:40 -0800
Subject: not yet applied
Message-ID: <20071228141640-0800@axiom-wiki.newsynthesis.org>
Category: Axiom Mathematics => Axiom User Interface
Status: open => fix proposed
there are in fact two (different) fixes proposed... Should be reconsidered
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.
axiomq:=(x+a)/(x*(x**3+(b+c)*x**2+b*c*x))
![]() | (1) |
axiompartialFraction(q,x)
![]() | (2) |
axiom(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:
axiomSUP FRAC POLY INT has EUCDOM
![]() | (4) |
axiomden := univariate((x*(x**3+(b+c)*x**2+b*c*x)),x)::SUP FRAC POLY INT
![]() | (5) |
axiomnum := univariate(x+a,x)::SUP FRAC POLY INT
![]() | (6) |
axiompartialFraction(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.
axiom)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) |
axiompartialFraction(1,10)
![]() | (9) |
there are in fact two (different) fixes proposed... Should be reconsidered