Skip to main content
replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
Source Link

Backslide introduced in v10 and persisting through v10.3.1.


In the course of considering question 102922question 102922, I encountered erratic results from a particular integration. It is illustrated as follows. With a new session of Mathematica

$Version
(* 10.3.0 for Microsoft Windows (64-bit) (October 9, 2015) *)

run

Do[ans = Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, 
        Assumptions -> {l > 0, R > 0, n ∈ Integers}]; Print[ans], {i, 6}]

Integate returns unevaluated the first time called. Thereafter, it returns

(* ConditionalExpression[(2^(-1 + n)*Sqrt[Pi]*R^(-1 - n)*Gamma[(1 + l + n)/2])/
    Gamma[(2 + l - n)/2], n < 1 && l + n > -1] *)

as expected. A variant on this strange behavior, again in a new session of Mathematica, is

Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0}]
(* returns expected result *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns expected result, as at the beginning of the question*)

There are many possible combinations of Assumptions for this calculation, and most behave similarly, at first returning unevaluated and later returning evaluated. Moreover, with Assumptions cases a, b, and c, Integrate run with the sets in that order typically returns unevaluated in the first two cases, and evaluated in the third, and shuffling the three cases likewise typically also returns the first two cases (for example, b and c) unevaluated and the third (in the same example, a) evaluated.

I know of two work-arounds. One, due to Bob HanlonBob Hanlon, is to use GenerateConditions -> False which gives the evaluated result but at the cost of no conditions. The second is illustrated at the beginning of this question. It, too, seems unsatisfactory. So, can this behavior be explained, and what is a better work-around? Thanks.

Backslide introduced in v10 and persisting through v10.3.1.


In the course of considering question 102922, I encountered erratic results from a particular integration. It is illustrated as follows. With a new session of Mathematica

$Version
(* 10.3.0 for Microsoft Windows (64-bit) (October 9, 2015) *)

run

Do[ans = Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, 
        Assumptions -> {l > 0, R > 0, n ∈ Integers}]; Print[ans], {i, 6}]

Integate returns unevaluated the first time called. Thereafter, it returns

(* ConditionalExpression[(2^(-1 + n)*Sqrt[Pi]*R^(-1 - n)*Gamma[(1 + l + n)/2])/
    Gamma[(2 + l - n)/2], n < 1 && l + n > -1] *)

as expected. A variant on this strange behavior, again in a new session of Mathematica, is

Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0}]
(* returns expected result *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns expected result, as at the beginning of the question*)

There are many possible combinations of Assumptions for this calculation, and most behave similarly, at first returning unevaluated and later returning evaluated. Moreover, with Assumptions cases a, b, and c, Integrate run with the sets in that order typically returns unevaluated in the first two cases, and evaluated in the third, and shuffling the three cases likewise typically also returns the first two cases (for example, b and c) unevaluated and the third (in the same example, a) evaluated.

I know of two work-arounds. One, due to Bob Hanlon, is to use GenerateConditions -> False which gives the evaluated result but at the cost of no conditions. The second is illustrated at the beginning of this question. It, too, seems unsatisfactory. So, can this behavior be explained, and what is a better work-around? Thanks.

Backslide introduced in v10 and persisting through v10.3.1.


In the course of considering question 102922, I encountered erratic results from a particular integration. It is illustrated as follows. With a new session of Mathematica

$Version
(* 10.3.0 for Microsoft Windows (64-bit) (October 9, 2015) *)

run

Do[ans = Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, 
        Assumptions -> {l > 0, R > 0, n ∈ Integers}]; Print[ans], {i, 6}]

Integate returns unevaluated the first time called. Thereafter, it returns

(* ConditionalExpression[(2^(-1 + n)*Sqrt[Pi]*R^(-1 - n)*Gamma[(1 + l + n)/2])/
    Gamma[(2 + l - n)/2], n < 1 && l + n > -1] *)

as expected. A variant on this strange behavior, again in a new session of Mathematica, is

Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0}]
(* returns expected result *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns expected result, as at the beginning of the question*)

There are many possible combinations of Assumptions for this calculation, and most behave similarly, at first returning unevaluated and later returning evaluated. Moreover, with Assumptions cases a, b, and c, Integrate run with the sets in that order typically returns unevaluated in the first two cases, and evaluated in the third, and shuffling the three cases likewise typically also returns the first two cases (for example, b and c) unevaluated and the third (in the same example, a) evaluated.

I know of two work-arounds. One, due to Bob Hanlon, is to use GenerateConditions -> False which gives the evaluated result but at the cost of no conditions. The second is illustrated at the beginning of this question. It, too, seems unsatisfactory. So, can this behavior be explained, and what is a better work-around? Thanks.

edited tags
Link
Tweeted twitter.com/StackMma/status/681929985322520581
added 75 characters in body; edited tags
Source Link
xzczd
  • 68.4k
  • 9
  • 174
  • 489

Backslide introduced in v10 and persisting through v10.3.1.


In the course of considering question 102922, I encountered erratic results from a particular integration. It is illustrated as follows. With a new session of Mathematica

$Version
(* 10.3.0 for Microsoft Windows (64-bit) (October 9, 2015) *)

run

Do[ans = Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, 
        Assumptions -> {l > 0, R > 0, n ∈ Integers}]; Print[ans], {i, 6}]

Integate returns unevaluated the first time called. Thereafter, it returns

(* ConditionalExpression[(2^(-1 + n)*Sqrt[Pi]*R^(-1 - n)*Gamma[(1 + l + n)/2])/
    Gamma[(2 + l - n)/2], n < 1 && l + n > -1] *)

as expected. A variant on this strange behavior, again in a new session of Mathematica, is

Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0}]
(* returns expected result *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns expected result, as at the beginning of the question*)

There are many possible combinations of Assumptions for this calculation, and most behave similarly, at first returning unevaluated and later returning evaluated. Moreover, with Assumptions cases a, b, and c, Integrate run with the sets in that order typically returns unevaluated in the first two cases, and evaluated in the third, and shuffling the three cases likewise typically also returns the first two cases (for example, b and c) unevaluated and the third (in the same example, a) evaluated.

I know of two work-arounds. One, due to Bob Hanlon, is to use GenerateConditions -> False which gives the evaluated result but at the cost of no conditions. The second is illustrated at the beginning of this question. It, too, seems unsatisfactory. So, can this behavior be explained, and what is a better work-around? Thanks.

In the course of considering question 102922, I encountered erratic results from a particular integration. It is illustrated as follows. With a new session of Mathematica

$Version
(* 10.3.0 for Microsoft Windows (64-bit) (October 9, 2015) *)

run

Do[ans = Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, 
        Assumptions -> {l > 0, R > 0, n ∈ Integers}]; Print[ans], {i, 6}]

Integate returns unevaluated the first time called. Thereafter, it returns

(* ConditionalExpression[(2^(-1 + n)*Sqrt[Pi]*R^(-1 - n)*Gamma[(1 + l + n)/2])/
    Gamma[(2 + l - n)/2], n < 1 && l + n > -1] *)

as expected. A variant on this strange behavior, again in a new session of Mathematica, is

Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0}]
(* returns expected result *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns expected result, as at the beginning of the question*)

There are many possible combinations of Assumptions for this calculation, and most behave similarly, at first returning unevaluated and later returning evaluated. Moreover, with Assumptions cases a, b, and c, Integrate run with the sets in that order typically returns unevaluated in the first two cases, and evaluated in the third, and shuffling the three cases likewise typically also returns the first two cases (for example, b and c) unevaluated and the third (in the same example, a) evaluated.

I know of two work-arounds. One, due to Bob Hanlon, is to use GenerateConditions -> False which gives the evaluated result but at the cost of no conditions. The second is illustrated at the beginning of this question. It, too, seems unsatisfactory. So, can this behavior be explained, and what is a better work-around? Thanks.

Backslide introduced in v10 and persisting through v10.3.1.


In the course of considering question 102922, I encountered erratic results from a particular integration. It is illustrated as follows. With a new session of Mathematica

$Version
(* 10.3.0 for Microsoft Windows (64-bit) (October 9, 2015) *)

run

Do[ans = Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, 
        Assumptions -> {l > 0, R > 0, n ∈ Integers}]; Print[ans], {i, 6}]

Integate returns unevaluated the first time called. Thereafter, it returns

(* ConditionalExpression[(2^(-1 + n)*Sqrt[Pi]*R^(-1 - n)*Gamma[(1 + l + n)/2])/
    Gamma[(2 + l - n)/2], n < 1 && l + n > -1] *)

as expected. A variant on this strange behavior, again in a new session of Mathematica, is

Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0}]
(* returns expected result *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns unevaluated *)
Integrate[k^n SphericalBesselJ[l, R*k], {k, 0, ∞}, Assumptions -> {l > 0, R > 0, 
    n ∈ Integers}]
(* returns expected result, as at the beginning of the question*)

There are many possible combinations of Assumptions for this calculation, and most behave similarly, at first returning unevaluated and later returning evaluated. Moreover, with Assumptions cases a, b, and c, Integrate run with the sets in that order typically returns unevaluated in the first two cases, and evaluated in the third, and shuffling the three cases likewise typically also returns the first two cases (for example, b and c) unevaluated and the third (in the same example, a) evaluated.

I know of two work-arounds. One, due to Bob Hanlon, is to use GenerateConditions -> False which gives the evaluated result but at the cost of no conditions. The second is illustrated at the beginning of this question. It, too, seems unsatisfactory. So, can this behavior be explained, and what is a better work-around? Thanks.

Source Link
bbgodfrey
  • 62.1k
  • 18
  • 92
  • 160
Loading