posible bug - clashing variable names in integrals
Subject: posible bug - clashing variable names in integrals
From: Nathaniel Virgo
Date: Sat, 3 Oct 2009 14:17:06 +0100
Ok, sorry, yes, I think I understand this now. So it's not a bug per se
that 'is' returns 'false' in that situation.
It is, however, still annoying that it doesn't treat integrate(f(x),x,a,b)
in exactly the same way as integrate(f(y),y,a,b). It should do because x
and y are bound variables in those expressions, so their name should not
make any difference in any situation. This difference in the way it treats
these two expressions is likely to be a problem for a lot of the things I
wanted to use Maxima for.
Nathaniel
2009/10/3 Leo Butler <l.butler at ed.ac.uk>
>
>
> 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.
>
>