posible bug - clashing variable names in integrals
Subject: posible bug - clashing variable names in integrals
From: Nathaniel Virgo
Date: Sat, 3 Oct 2009 13:56:59 +0100
Sorry if I was unclear. I am talking about equivalence, not equality.
Nathaniel
2009/10/3 Leo Butler <l.butler at ed.ac.uk>
>
>
> On Sat, 3 Oct 2009, Leo Butler wrote:
>
> <
> <
> < 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
>
> I think this makes perfect sense. f(z) and g(z) are syntactically equal
> (the short story is they both evaluate to z^2). On the other hand, Maxima
> does not integrate
> functions, it integrates expressions. For example
>
> f(x) := x*y;
>
> yields two different integrals if one integrates v. x vs. v. y.
> So, Maxima will return 'unknown' for the test
>
> is(equal(A,B));
>
> too.
>
> Leo
>
>
>
>
>
> < <
> < <
> < < 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.
> <
> < _______________________________________________
> < Maxima mailing list
> < Maxima at math.utexas.edu
> < http://www.math.utexas.edu/mailman/listinfo/maxima
> <
> <
>
> --
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
>