posible bug - clashing variable names in integrals
Subject: posible bug - clashing variable names in integrals
From: Leo Butler
Date: Sat, 3 Oct 2009 12:58:02 +0100 (BST)
On Sat, 3 Oct 2009, Nathaniel Virgo wrote:
< On a similar note, am I right to say the following should not return false?
<
< (%i20) A: 'integrate(f(x),x,a,b);
< (%o20) integrate(f(x),x,a,b)
< (%i21) B: 'integrate(f(y),y,a,b);
< (%o21) integrate(f(y),y,a,b)
< (%i22) is(A=B);
< (%o22) false
<
< the two expressions are equivalent, the only difference being the name of a
< bound variable. So it should return "true" or "maybe" but not false. It
< works with ordinary (non-integral) functions:
<
< (%i24) f(x):=x^2;
< (%o24) f(x):=x^2
< (%i25) g(y):=y^2;
< (%o25) g(y):=y^2
< (%i26) is(f(z)=g(z));
< (%o26) true
<
< Nathaniel
<
<
< 2009/10/3 Nathaniel Virgo <nathanielvirgo at gmail.com>
<
< > Hi
< >
< > I just came across the following. Should it be considered a bug?
< >
< >
< > this works fine:
< >
< > (%i10) C:integrate(g(y),y,c,d);
< > (%o10) integrate(g(y),y,c,d)
< >
< > (%i11) A: integrate(C*f(x),x,a,b);
< > (%o11) integrate(f(x),x,a,b)*integrate(g(y),y,c,d)
< >
< > it has successfully taken the constant outside the integral
< >
< > (%i12) B: C*'integrate(f(x),x,a,b);
< > (%o12) integrate(f(x),x,a,b)*integrate(g(y),y,c,d)
< >
< > so A and B are the same
< >
< > (%i13) is(A=B);
< > (%o13) true
< >
< > however, if I do the following, which should be exactly equivalent, it
< > fails:
< >
< > (%i14) C:integrate(g(x),x,c,d);
< > (%o14) integrate(g(x),x,c,d)
< >
< > (%i15) A: integrate(C*f(x),x,a,b);
< > (%o15) integrate(f(x)*integrate(g(x),x,c,d),x,a,b)
< >
< > it has failed to realise that the x in the subexpression is a different
< > variable from the x in the outer integral, so it keeps the constant inside
< > the integral
< >
< > (%i16) B: C*'integrate(f(x),x,a,b);
< > (%o16) integrate(f(x),x,a,b)*integrate(g(x),x,c,d)
< >
< > (%i17) is(A=B);
< > (%o17) false
< >
< > ...and it now thinks the two expressions A and B are provably not the same,
< > even though they are in fact equivalent. It would be ok (although a bit
< > lame) if it answered "maybe" here, but it seems to me that "false" is just
< > incorrect.
< >
< >
< > Nathaniel
< >
< >
<
Nathaniel,
You slide between equal and equivalent and are not clearly
distinguishing between the two. Maxima does. From
? =
`is(<a> = <b>)' evaluates `<a> = <b>' to `true' when <a> and <b>
are syntactically equal (that is, identical). Expressions can be
equivalent and not syntactically equal.
Try
is(equal(A,B));
Leo
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.