Opened 10 years ago

Closed 4 years ago

# doctest fixed integral from Maxima

Reported by: Owned by: kcrisman burcin major sage-7.4 calculus Ralf Stephan Travis Scrimshaw N/A d4b0db5 (Commits)

This is fixed now and needs a doctest:

From #sage-devel:

```Boulemans left the chat room. (Read error: Connection reset by peer)
[11:58am] Boule joined the chat room.
[11:58am] Boule: (laptop shutdown due to power supply)
[11:59am] Boule: e, T, w = var("e T w"); assume(1 = e^2)>0; integrate(cos(w+T)/(1+e*cos(T))^2,T,0,2*pi) should give -2*pi e cos w/(1-e^2)^3/2 instead of 0
[11:59am] Boule: can someone help?
[12:00pm] wjp: yeah, sage seems to have some trouble with this integral. You could try http://groups.google.com/group/sage-support since the right people don't seem to be here currently
[12:00pm] Boule: ok, thanx
[12:08pm] kcrisman: By the way, I just tried this and get a hang in Maxima.  Can you type the exact commands which lead to an answer of 0?
[12:08pm] kcrisman: If I plug something (.5, .75) in for e in Maxima in Sage, I do get zero as an output.
[12:12pm] Boule: don't know maxima, but with numerical values for e and w at wolfram-alfa, it gives something different than 0
[12:13pm] wjp: *nod* maple gives non-zeros too
[12:13pm] kcrisman: Can you give the *exact* sequence of commands which yield zero in Sage itself?
[12:14pm] Boule: e = var('e')
[12:14pm] Boule: T = var('T')
[12:14pm] Boule: w = var('w')
[12:14pm] baali1 joined the chat room.
[12:14pm] baali left the chat room. (Quit: Leaving.)
[12:15pm] Boule: assume(1-e^2>0)
[12:15pm] Boule:  integrate(cos(w+T)/(1+e*cos(T))^2,T,0,2*pi)
[12:15pm] kcrisman: Okay, that's what I thought.
[12:16pm] kcrisman: Okay, it takes a while but I do get 0.
```

### comment:1 follow-up: ↓ 6 Changed 10 years ago by jason

I wonder if this is another manifestation of this bug:

```sage: integrate(sqrt(sin(x)^2+cos(x)^2), x,0,2*pi)
pi
```

### comment:2 Changed 10 years ago by jason

#8729 may point to a solution.

### comment:4 Changed 10 years ago by jason

It was fixed about two weeks ago in maxima. There was a new release of maxima a few days ago---I'm trying to make an spkg right now.

### comment:5 Changed 10 years ago by kcrisman

Sweet. I haven't been keeping up on the Maxima list lately, thanks.

### comment:6 in reply to: ↑ 1 Changed 10 years ago by jason

I wonder if this is another manifestation of this bug:

```sage: integrate(sqrt(sin(x)^2+cos(x)^2), x,0,2*pi)
pi
```

I just checked; this ticket isn't the same bug.

### comment:7 Changed 10 years ago by jason

The upgrade to maxima 5.21.1 does not fix this. After #8731:

```sage: e, T, w = var("e T w")
sage: assume(1-e^2>0)
sage: integrate(cos(w+T)/(1+e*cos(T))^2,T,0,2*pi)
0
```

### comment:8 Changed 9 years ago by kcrisman

Maxima 5.23.2 still has this, and we still haven't reported it.

```Maxima 5.23.2 http://maxima.sourceforge.net
using Lisp SBCL 1.0.24
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) assume(1-e^2>0);
2
(%o1)                              [e  < 1]
(%i3) integrate(cos(w+T)/(1+e*cos(T))^2,T,0,2*%pi);
(%o3)                                  0
```

This is now Maxima bug 3211975.

### comment:9 Changed 9 years ago by kcrisman

• Report Upstream changed from Not yet reported upstream; Will do shortly. to Fixed upstream, but not in a stable release.

According to the bug report, this is now fixed. However, some examples may still throw a Lisp error, so we should check out whether that will affect us before saying we're totally fixed when we upgrade.

### comment:10 Changed 8 years ago by kcrisman

Maxima 5.28 is now out.

### comment:11 Changed 7 years ago by kcrisman

See #13973 where this should (?) be fixed, just need a doctest here?

### comment:12 Changed 7 years ago by jdemeyer

• Milestone changed from sage-5.11 to sage-5.12

### comment:13 Changed 6 years ago by vbraun_spam

• Milestone changed from sage-6.1 to sage-6.2

### comment:14 Changed 6 years ago by vbraun_spam

• Milestone changed from sage-6.2 to sage-6.3

### comment:15 follow-up: ↓ 17 Changed 6 years ago by pbruin

In Maxima 5.33.0 (see #13973):

```(%i1) assume(e^2<1);
2
(%o1)                              [e  < 1]
(%i2) integrate(cos(w+T)/(1+e*cos(T))^2, T, 0, 2*%pi);
2
Is abs(e) - sqrt(1 - e ) - 1 positive, negative or zero?

negative;
!          2     !
Is !sqrt(1 - e ) - 1! - abs(e) positive, negative or zero?

negative;
2
2 %pi e sqrt(1 - e ) cos(w)
(%o2)                    - ---------------------------
4      2
e  - 2 e  + 1
```

This appears to be the correct answer. Note that the answers to both questions are "negative" for all e with -1 < e < 1, so it would be nice if Maxima didn't ask those questions.

### comment:16 Changed 6 years ago by vbraun_spam

• Milestone changed from sage-6.3 to sage-6.4

### comment:17 in reply to: ↑ 15 Changed 5 years ago by kcrisman

In Maxima 5.33.0 (see #13973): This appears to be the correct answer. Note that the answers to both questions are "negative" for all e with -1 < e < 1, so it would be nice if Maxima didn't ask those questions.

The thing noted in the message upstream when they closed their ticket

```sage: integrate(cos(w+T)/(1+.5*cos(T))^2,T,0,2*pi)
<boom>
```

does still happen, but I think that is a different issue tracked elsewhere here (the usual keepfloat thing).

So... do we have a reasonable test case to add here to confirm this is fixed and close it?

### comment:18 Changed 5 years ago by kcrisman

• Report Upstream changed from Fixed upstream, but not in a stable release. to Fixed upstream, in a later stable release.

### comment:19 Changed 5 years ago by rws

• Description modified (diff)
• Summary changed from Incorrect integral from Maxima to doctest fixed integral from Maxima

Here's the doctest:

```sage: assume(1-e^2>0)
sage: assume(abs(e)-sqrt(1-e^2)-1>0)
sage: assume(abs(sqrt(1-e^2)-1)-abs(e)>0)
sage: integrate(cos(w+T)/(1+e*cos(T))^2,T,0,2*pi)
2*pi*sqrt(-e^2 + 1)*e*cos(w)/(e^4 - 2*e^2 + 1)
```

### comment:20 Changed 5 years ago by rws

• Branch set to u/rws/doctest_fixed_integral_from_maxima

### comment:21 Changed 5 years ago by rws

• Authors set to Ralf Stephan
• Commit set to fab73690cd00e86c063be62e578a502267e7db94
• Status changed from new to needs_review

New commits:

 ​fab7369 `8728: doctest`

### comment:22 Changed 5 years ago by pbruin

• Status changed from needs_review to needs_work

Your assumptions are contradictory: the first assumption (`1 - e^2 > 0`) implies the negation of the other two assumptions (see also comment:15).

A fortiori, the other two assumptions (after negating) are actually redundant. It is annoying that we have to add them; ideally, we would only declare this integral to be "fixed" if Maxima did not need the extra two assumptions...

### comment:23 Changed 4 years ago by rws

• Branch changed from u/rws/doctest_fixed_integral_from_maxima to u/rws/8728

### comment:24 Changed 4 years ago by rws

• Commit changed from fab73690cd00e86c063be62e578a502267e7db94 to d4b0db584bb2b67b46a8508058dab4dc731fbbce
• Milestone changed from sage-6.4 to sage-7.4
• Report Upstream changed from Fixed upstream, in a later stable release. to N/A
• Status changed from needs_work to needs_review

New commits:

 ​d4b0db5 `8728: doctest fixed integral from Maxima`

### comment:25 Changed 4 years ago by tscrim

• Reviewers set to Travis Scrimshaw
• Status changed from needs_review to positive_review

### comment:26 Changed 4 years ago by vbraun

• Branch changed from u/rws/8728 to d4b0db584bb2b67b46a8508058dab4dc731fbbce
• Resolution set to fixed
• Status changed from positive_review to closed

### comment:27 Changed 4 years ago by pbruin

• Commit d4b0db584bb2b67b46a8508058dab4dc731fbbce deleted

I noticed just now that this ticket has been closed; it seems comment:15 and comment:22 were ignored...

### comment:28 follow-up: ↓ 29 Changed 4 years ago by rws

That would seem so. I think you are asking for a feature (redundancy of additional assumptions) in Maxima that would warrant a separate ticket. I apologize for not answering earlier.

### comment:29 in reply to: ↑ 28 Changed 4 years ago by pbruin

I think you are asking for a feature (redundancy of additional assumptions) in Maxima that would warrant a separate ticket.

That too, but more importantly I meant the fact that the assumptions that are currently made in the doctest are mutually inconsistent:

```assume(1-c^2 > 0)
assume(abs(c) - sqrt(1-c^2) - 1 > 0)
assume(abs(sqrt(1-c^2)-1) - abs(c) > 0)
```

Namely, the first assumption is equivalent to `-1 < c < 1`, and on this domain the functions `abs(c) - sqrt(1-c^2) - 1` and `abs(sqrt(1-c^2)-1) - abs(c)` are strictly negative.

There is already some functionality for detecting inconsistent assumptions (e.g. `assume(x > 0); assume(x < 0)` raises an error), but it doesn't detect this case.

Note: See TracTickets for help on using tickets.