Here are some problems that Maple and Mathematica cannot solve, but SymbMath can do. The following examples came from news on the sci.math.symbolic newsgroup in 1991, and were run in Maple V, Mathematica 2.0, or SymbMath 2.1. ************************ Example 1 ****************************** Maple: > int(exp(-a * x^2), x=0..infinity); infinity / | 2 | exp(- a x ) dx | / 0 # unevaluated. # Declare 'a' non-negative: > signum(a) := 1; signum(a) := 1 # The same integral is now evaluated fully: > int(exp(-a * x^2), x=0..infinity); 1/2 Pi 1/2 ----- 1/2 a SymbMath : Input: inte(exp(-a*x^2), x from 0 to inf) assume(sqrt(a) > 0) inte(exp(-a*x^2), x from 0 to inf) Output: 1/2*a^(-0.5)*sqrt(pi)*erf(inf*sgn(sqrt(a))) assumed 1/2*a^(-0.5)*sqrt(pi) ************************** Example 2 ********************************* Maple: # Despite the fact that 'n' is declared non-negative... > signum(n) := 1; signum(n) := 1 # ...this simple proper definite integral (that any freshman calculus # student can evaluate!) is left unevaluated: > int(x^n, x=0..1); 1 / | n | x dx | / 0 SymbMath : Input: assume(n > -1) inte(x^n, x from 0 to 1) Output: assumed 1/(1 + n) ************************** Example 3 ***************************** Maple: > int(x^n, x=eps..1); (n + 1) 1 eps ----- - ---------- n + 1 n + 1 # ...but the one-sided limit... > limit(", eps=0, right); (n + 1) 1 eps limit ----- - ---------- eps -> 0+ n + 1 n + 1 # ...remains unevaluated... > simplify("); (n + 1) - 1 + eps limit - ---------------- eps -> 0+ n + 1 # ...no matter what we do! > eval("); (n + 1) - 1 + eps limit - ---------------- eps -> 0+ n + 1 SymbMath: Input: assume(n > -1) inte(x^n, x from eps to 1) subs(eps=0 to last) Output: assumed 1/(1 + n) - eps^(1 + n)/(1 + n) 1/(1 + n) *************************** Example 4 *************************** Maple: > 0^n; 0 # Maple flags the error only when 'n' is replaced by the constant 0: > 0^0; Error, 0^0 is undefined SymbMath: Input: assume(n > 0) 0^n 0^-n 0^0 Output: assumed 0 discont undefined **************************** Example 5 ****************************** Maple: > int(x^k, x); (k + 1) x -------- k + 1 SymbMath: Input: inte(x^k*d(x)) subs(k=-1 to last) Output: constant + x^(1 + k)/(1 + k) discont **************************** Example 6 ***************************** Maple: # The following limit is left unevaluated: > limit(x^k/exp(x), x=infinity); k x limit ------ x -> infinity exp(x) # We might ask if Maple knows this result for specific (constant) values # of the symbolic parameter 'k'. The answer is a QUALIFIED "yes". # Maple knows the result for 'k' equal to 10^8... > limit(x^(10^8)/exp(x), x=infinity); 0 # ...and Maple knows the result for 'k' equal to 10^9... > limit(x^(10^9)/exp(x), x=infinity); 0 # ...BUT, Maple seems to FORGET the result when 'k' equals 10^10... > limit(x^(10^10)/exp(x), x=infinity); 10000000000 x limit ------------ x -> infinity exp(x) SymbMath: Input: lim(x=inf, x^k/exp(x)) lim(x=inf, x^(10^10)/exp(x)) lim(x=inf, x^(10^10000)/exp(x)) Output: 0 0 0 ****************************** Example 7 **************************** Maple: > int(x^m * exp (-b * x), x=0..infinity); infinity / | m | x exp(- b x) dx | / 0 # As expected, the integral remains unevaluated. Now declare the signs # of the symbolic parameters: > signum(b) := 1; signum(b) := 1 > signum(m) := 1; signum(m) := 1 # Upon attempting to compute the integral a second time... > int(x^m * exp (-b * x), x=0..infinity); infinity / | m | x exp(- b x) dx | / 0 # ...THE INTEGRAL CONTINUES TO REMAIN UNEVALUATED, despite the fact that # the signs of the parameters 'b' and 'm' were declared PRIOR to the second # attempt at computation. SymbMath: Input: inte(x^n*exp(-a*x), x from 0 to inf) Output: inte(x^n*exp(-a*x), x, 0, inf) ************************ Example 8 ********************************* Mathematica: In[1]:= Integrate[1/x,{x,-1,1}] Out[1]= -Log[-1] Maple: has the same problem. SymbMath: Input: inte(1/x, x from -1 to 1) inte(1/x, x from -1 to 2) Output: 0 ln(2) *************************** Example 9 ******************************* Maple: has a problem for int(tan(x), x=0..pi). SymbMath: Input: inte(tan(x), x from 0 to pi) Output: 0 **************************** Example 10 **************************** Mathematica: cannot evaluate integral of sgn(x). Maple: # cannot evaluate inegral of signum(x) by int(). Help with a procedure: # Load the procedure into Maple: > read `pvint.txt`; pvint := proc(f,x,a,b,s) local i1,i2,eps; signum(eps) := 1; i1 := int(f,x = a .. s-eps); i2 := int(f,x = s+eps .. b); simplify(i1+i2); limit(",eps = 0,right) end > pvint(signum(x), x, -1, 1, 0); - eps 1 / / | | limit | signum(x) dx + | signum(x) dx eps -> 0+ | | / / -1 eps # Maple refuses to evaluate this P.V. integral: > simplify("); - eps 1 / / | | limit | signum(x) dx + | signum(x) dx eps -> 0+ | | / / -1 eps > eval("); - eps 1 / / | | limit | signum(x) dx + | signum(x) dx eps -> 0+ | | / / -1 eps SymbMath: Input: inte(sgn(x), x from -1 to 1) inte(sgn(x), x from -1 to 2) Output: 0 1 ************************* Example 11 ******************************** Implicit diff. gives 1+y'[x](1+1/y[x])==0; y'[x]==-y[x]/(y[x]+1). Mathematica: given this eq. as input to DSolve says that built-in procedure can't solve it. MACSYMA: (c1) depends(y,x)$ (c2) ode2(diff(y,x) = -y/(y+1),y,x); (d2) - log(y) - y = x + %c (c3) method; (d3) separable SymbMath: solve the differential equation by integration inte() or by dsolve(). Input: d(y)/d(x)*(1+1/y) === -1 inte(last*d(x)) Expand=On dsolve(d(y)/d(x) === -y/(y+1), y) Output: (1 + 1/y)*d(y)/d(x) === -1 y + ln(y*sgn(y)) === constant - x Expand = On -y - ln(y*sgn(y)) === constant + x ************************* Example 12 ******************************** Mathematica: y'[x] = y[x]^(1/2) y[0] = 0 DSolve could not handle it. (It rarely solves anything!!), and the RungeKutta package only gave me the solution y[x]=0 Obviously, there is another solution viz. y[x] = (x/2)^2 SymbMath: Input: dsolve(d(y)/d(x) === sqrt(y), y) (last/2)^2 Output: 2*sqrt(y) === constant + x y === 1/4*(constant + x)^2 ************************* Example 13 ******************************** Maple: > sqrt(x*x); x Mathematica: Sqrt[a^2] evaluates to Sqrt[a^2]. SymbMath: Input: sqrt(x^2) assume(a > 0) sqrt(a^2) assume(b <0 ) sqrt(b^2) Output: x*sgn(x) assumed a assumed -b ********************** Example 14 ********************************** Maple and Mathematica cannot find the integrals of abs(x). SymbMath: Input: inte(abs(x), x from -1 to 1) inte(abs(x)^5*d(x)) Output: 1 constant + 1/6*abs(x)^6*sgn(x) --------------------------------------------------------------------- The following problems are taken from Swokowski's Calculus book. They cause Mathematica to fail because of a singularity in the interior of the interval of integration: Section 10.4 Problems 3, 12, 15, 16, 23, 29. The comments "INTEGRAL IS DIVERGENT" and "Principal Value" come from Macsyma. Mma gives no indication that anything is amiss. ************************ Problem3 ********************************* Mathematica: In[4]:= Integrate[1/x^2,{x,-3,1}] 4 Out[4]= -(-) (* INTEGRAL IS DIVERGENT *) 3 SymbMath: Input: inte(1/x^2, x from -3 to 1) Output: inf ************************** Problem12 *************************** Mathemtica: In[6]:= Integrate[x^(-4/3),{x,-1,1}] Out[6]= -6 (* INTEGRAL IS DIVERGENT *) SymbMath: Input: inte(x^(-4/3), x from -1 to 1) Output: inf **************************** Problem15 ************************ Mathematica: In[7]:= Integrate[1/x,{x,-1,2}] Out[7]= -Log[-1] + Log[2] Maple: has the same problem. Macsyma: (c7) integrate(1/x,x,-1,2); Principal Value (d7) log(2) SymbMath: Input: inte(1/x, x from -1 to 2) Output: ln(2) ********************** Problem16 ************************************ Mathematica: In[8]:= Integrate[1/(x^2-x-2),{x,0,4}] -Log[-2] Log[2] Log[5] Out[8]= -------- + ------ - ------ 3 3 3 Macsyma: (c8) integrate(1/(x^2-x-2),x,0,4); Principal Value log(5) (d8) - ------ 3 SymbMath: Input: inte(1/(x^2-x-2), x from 0 to 4) Output: -1/3*ln(2) + 1/3*ln(2/5) ***************************** Problem23 ********************** Mathematica: In[10]:= Integrate[(1/x^2)Cos[1/x],{x,-1,2}] 1 Out[10]= Sin[-1] - Sin[-] (* INTEGRAL IS DIVERGENT *) 2 SymbMath: Input: y=1/x^2*cos(1/x) inte(y, x from -1 to 0-zero) + inte(y, x from 0+zero to 2) Output: y = x^(-2)*cos(1/x) sin(-1) - sin(1/2) + 2*sin(inf) ************************** Problem29 ******************************** Mathematica: In[12]:= Integrate[1/(x-4)^2,{x,0,Infinity}] 1 Out[12]= -(-) (* INTEGRAL IS DIVERGENT *) 4 SymbMath: Input: y=1/(x-4)^2 inte(y, x from 0 to 4-zero) + inte(y, x from 4+zero to inf) Output: y = (-4 + x)^(-2) inf