NIntegrate: How can I solve this integral numerically? NIntegrate fails while Integrate works
$begingroup$
I know the exact solution of the principal value of this integral is equal to zero:
$int_{-1}^{1}int_{-1}^{1}frac{x^2}{sqrt{1-x^2}}frac{sqrt{1-y^2}}{y-x}dydx=0$
doing:
Integrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
but I want to do it numerically and it doesn't work:
NIntegrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1}]
This is the error message returned:
How can I get Mathematica to solve this problem numerically?
numerical-integration
New contributor
$endgroup$
add a comment |
$begingroup$
I know the exact solution of the principal value of this integral is equal to zero:
$int_{-1}^{1}int_{-1}^{1}frac{x^2}{sqrt{1-x^2}}frac{sqrt{1-y^2}}{y-x}dydx=0$
doing:
Integrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
but I want to do it numerically and it doesn't work:
NIntegrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1}]
This is the error message returned:
How can I get Mathematica to solve this problem numerically?
numerical-integration
New contributor
$endgroup$
1
$begingroup$
The issue is that the integrand approaches infinity asx->±1
,x->y
, andy->x
. That kind of behavior is toxic to numerical methods: you need to reason out a way to deal with it, not merely probe it numerically.PrincipalValue -> True
gives you access to automated reasoning in this case, and you've solved the problem that way. Do you have a different problem you're trying to solve?
$endgroup$
– John Doty
2 days ago
$begingroup$
Yes, I'm trying to solve a similar integral, when x^2 is multplied by exp^(-i*b*(x + y)). So, firstly I wanted to try to solve this known integral.
$endgroup$
– Javier Alaminos
2 days ago
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
2 days ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
2 days ago
add a comment |
$begingroup$
I know the exact solution of the principal value of this integral is equal to zero:
$int_{-1}^{1}int_{-1}^{1}frac{x^2}{sqrt{1-x^2}}frac{sqrt{1-y^2}}{y-x}dydx=0$
doing:
Integrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
but I want to do it numerically and it doesn't work:
NIntegrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1}]
This is the error message returned:
How can I get Mathematica to solve this problem numerically?
numerical-integration
New contributor
$endgroup$
I know the exact solution of the principal value of this integral is equal to zero:
$int_{-1}^{1}int_{-1}^{1}frac{x^2}{sqrt{1-x^2}}frac{sqrt{1-y^2}}{y-x}dydx=0$
doing:
Integrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
but I want to do it numerically and it doesn't work:
NIntegrate[x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1}]
This is the error message returned:
How can I get Mathematica to solve this problem numerically?
numerical-integration
numerical-integration
New contributor
New contributor
edited 2 days ago
mjw
1,04110
1,04110
New contributor
asked 2 days ago
Javier AlaminosJavier Alaminos
213
213
New contributor
New contributor
1
$begingroup$
The issue is that the integrand approaches infinity asx->±1
,x->y
, andy->x
. That kind of behavior is toxic to numerical methods: you need to reason out a way to deal with it, not merely probe it numerically.PrincipalValue -> True
gives you access to automated reasoning in this case, and you've solved the problem that way. Do you have a different problem you're trying to solve?
$endgroup$
– John Doty
2 days ago
$begingroup$
Yes, I'm trying to solve a similar integral, when x^2 is multplied by exp^(-i*b*(x + y)). So, firstly I wanted to try to solve this known integral.
$endgroup$
– Javier Alaminos
2 days ago
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
2 days ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
2 days ago
add a comment |
1
$begingroup$
The issue is that the integrand approaches infinity asx->±1
,x->y
, andy->x
. That kind of behavior is toxic to numerical methods: you need to reason out a way to deal with it, not merely probe it numerically.PrincipalValue -> True
gives you access to automated reasoning in this case, and you've solved the problem that way. Do you have a different problem you're trying to solve?
$endgroup$
– John Doty
2 days ago
$begingroup$
Yes, I'm trying to solve a similar integral, when x^2 is multplied by exp^(-i*b*(x + y)). So, firstly I wanted to try to solve this known integral.
$endgroup$
– Javier Alaminos
2 days ago
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
2 days ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
2 days ago
1
1
$begingroup$
The issue is that the integrand approaches infinity as
x->±1
, x->y
, and y->x
. That kind of behavior is toxic to numerical methods: you need to reason out a way to deal with it, not merely probe it numerically. PrincipalValue -> True
gives you access to automated reasoning in this case, and you've solved the problem that way. Do you have a different problem you're trying to solve?$endgroup$
– John Doty
2 days ago
$begingroup$
The issue is that the integrand approaches infinity as
x->±1
, x->y
, and y->x
. That kind of behavior is toxic to numerical methods: you need to reason out a way to deal with it, not merely probe it numerically. PrincipalValue -> True
gives you access to automated reasoning in this case, and you've solved the problem that way. Do you have a different problem you're trying to solve?$endgroup$
– John Doty
2 days ago
$begingroup$
Yes, I'm trying to solve a similar integral, when x^2 is multplied by exp^(-i*b*(x + y)). So, firstly I wanted to try to solve this known integral.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Yes, I'm trying to solve a similar integral, when x^2 is multplied by exp^(-i*b*(x + y)). So, firstly I wanted to try to solve this known integral.
$endgroup$
– Javier Alaminos
2 days ago
2
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
2 days ago
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
2 days ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
2 days ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
2 days ago
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
The main problem is the point x=y
. In principle, it seems that there the integral is singular. If you agree to get the principal value of it, you may exclude this point by a regularization as follows
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i,
1 - 1/i}, {y, -1 + 1/i, 1 - 1/i}, Method -> "AdaptiveMonteCarlo"]
where i
is a large number. Then you may increase i
and check the convergence of the integral:
lst = Table[{1/i,
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/
Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i, 1 - 1/i}, {y, -1 + 1/i,
1 - 1/i}, Method -> "AdaptiveMonteCarlo"]}, {i, 1000, 100000,
1000}] // N;
ListLogPlot[lst /. {x_, y_} -> {1/x, y}, Frame -> True,
FrameLabel -> {Style["Number i", 16], Style["Integral", 16]}]
yielding this
One can further a few other methods which may eventually enable a more accurate estimate of the integral.
Have fun!
$endgroup$
3
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
add a comment |
$begingroup$
As the others say,simply integrate by avoiding singular points?
Fixed.
Try other integral.
target = Compile[{{x, _Real}, {y, _Real}},
x/[Sqrt](1 - x) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-4.06259
Integration by manual
.
Plus @@ Flatten@
Table[integrand[x, y]*0.001*0.001, {x, -1., 1., 0.001}, {y, -1., 1.,
0.001}]
=>
-3.99866
Integration by NIntegrate
N@Integrate[
x/Sqrt[1 - x] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
=>
-4.14669
the question's integral.
target = Compile[{{x, _Real}, {y, _Real}},
x^2/[Sqrt](1 - x^2) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x^2) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-0.4542
By manual.
Plus @@ Flatten@
Table[integrand[x, y]*0.1*0.1, {x, -1., 1., 0.1}, {y, -1., 1., 0.1}]
=>
-8.88178*10^-16
By other method.
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.},
Method -> "LocalAdaptive"]
=>
7.73766*10^-17
For now, we can see that the integral value is close to zero.
$endgroup$
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returnsNothing
when the condition met,I think. so just modified.
$endgroup$
– Xminer
2 days ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Javier Alaminos is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193926%2fnintegrate-how-can-i-solve-this-integral-numerically-nintegrate-fails-while-in%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
The main problem is the point x=y
. In principle, it seems that there the integral is singular. If you agree to get the principal value of it, you may exclude this point by a regularization as follows
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i,
1 - 1/i}, {y, -1 + 1/i, 1 - 1/i}, Method -> "AdaptiveMonteCarlo"]
where i
is a large number. Then you may increase i
and check the convergence of the integral:
lst = Table[{1/i,
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/
Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i, 1 - 1/i}, {y, -1 + 1/i,
1 - 1/i}, Method -> "AdaptiveMonteCarlo"]}, {i, 1000, 100000,
1000}] // N;
ListLogPlot[lst /. {x_, y_} -> {1/x, y}, Frame -> True,
FrameLabel -> {Style["Number i", 16], Style["Integral", 16]}]
yielding this
One can further a few other methods which may eventually enable a more accurate estimate of the integral.
Have fun!
$endgroup$
3
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
add a comment |
$begingroup$
The main problem is the point x=y
. In principle, it seems that there the integral is singular. If you agree to get the principal value of it, you may exclude this point by a regularization as follows
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i,
1 - 1/i}, {y, -1 + 1/i, 1 - 1/i}, Method -> "AdaptiveMonteCarlo"]
where i
is a large number. Then you may increase i
and check the convergence of the integral:
lst = Table[{1/i,
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/
Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i, 1 - 1/i}, {y, -1 + 1/i,
1 - 1/i}, Method -> "AdaptiveMonteCarlo"]}, {i, 1000, 100000,
1000}] // N;
ListLogPlot[lst /. {x_, y_} -> {1/x, y}, Frame -> True,
FrameLabel -> {Style["Number i", 16], Style["Integral", 16]}]
yielding this
One can further a few other methods which may eventually enable a more accurate estimate of the integral.
Have fun!
$endgroup$
3
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
add a comment |
$begingroup$
The main problem is the point x=y
. In principle, it seems that there the integral is singular. If you agree to get the principal value of it, you may exclude this point by a regularization as follows
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i,
1 - 1/i}, {y, -1 + 1/i, 1 - 1/i}, Method -> "AdaptiveMonteCarlo"]
where i
is a large number. Then you may increase i
and check the convergence of the integral:
lst = Table[{1/i,
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/
Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i, 1 - 1/i}, {y, -1 + 1/i,
1 - 1/i}, Method -> "AdaptiveMonteCarlo"]}, {i, 1000, 100000,
1000}] // N;
ListLogPlot[lst /. {x_, y_} -> {1/x, y}, Frame -> True,
FrameLabel -> {Style["Number i", 16], Style["Integral", 16]}]
yielding this
One can further a few other methods which may eventually enable a more accurate estimate of the integral.
Have fun!
$endgroup$
The main problem is the point x=y
. In principle, it seems that there the integral is singular. If you agree to get the principal value of it, you may exclude this point by a regularization as follows
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i,
1 - 1/i}, {y, -1 + 1/i, 1 - 1/i}, Method -> "AdaptiveMonteCarlo"]
where i
is a large number. Then you may increase i
and check the convergence of the integral:
lst = Table[{1/i,
NIntegrate[
x^2/Sqrt[1 - x^2] Sqrt[1 - y^2]/
Sqrt[(y - x)^2 + i^-2], {x, -1 + 1/i, 1 - 1/i}, {y, -1 + 1/i,
1 - 1/i}, Method -> "AdaptiveMonteCarlo"]}, {i, 1000, 100000,
1000}] // N;
ListLogPlot[lst /. {x_, y_} -> {1/x, y}, Frame -> True,
FrameLabel -> {Style["Number i", 16], Style["Integral", 16]}]
yielding this
One can further a few other methods which may eventually enable a more accurate estimate of the integral.
Have fun!
answered 2 days ago
Alexei BoulbitchAlexei Boulbitch
21.9k2570
21.9k2570
3
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
add a comment |
3
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
3
3
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
I don't understand what you're plotting. The value of this integral is 0 and your result is around 12.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
You are right, it is not the same integral, since I took
Sqrt[(x-y)^2+eps^2]
instead of x-y
.$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
You are right, it is not the same integral, since I took
Sqrt[(x-y)^2+eps^2]
instead of x-y
.$endgroup$
– Alexei Boulbitch
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
$begingroup$
Note that $sqrt{(y-x)^2 + epsilon^2}$ approaches $|y - x|$ as $epsilon to 0$, not the $y - x$ that's in the original integrand.
$endgroup$
– Michael Seifert
2 days ago
add a comment |
$begingroup$
As the others say,simply integrate by avoiding singular points?
Fixed.
Try other integral.
target = Compile[{{x, _Real}, {y, _Real}},
x/[Sqrt](1 - x) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-4.06259
Integration by manual
.
Plus @@ Flatten@
Table[integrand[x, y]*0.001*0.001, {x, -1., 1., 0.001}, {y, -1., 1.,
0.001}]
=>
-3.99866
Integration by NIntegrate
N@Integrate[
x/Sqrt[1 - x] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
=>
-4.14669
the question's integral.
target = Compile[{{x, _Real}, {y, _Real}},
x^2/[Sqrt](1 - x^2) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x^2) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-0.4542
By manual.
Plus @@ Flatten@
Table[integrand[x, y]*0.1*0.1, {x, -1., 1., 0.1}, {y, -1., 1., 0.1}]
=>
-8.88178*10^-16
By other method.
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.},
Method -> "LocalAdaptive"]
=>
7.73766*10^-17
For now, we can see that the integral value is close to zero.
$endgroup$
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returnsNothing
when the condition met,I think. so just modified.
$endgroup$
– Xminer
2 days ago
add a comment |
$begingroup$
As the others say,simply integrate by avoiding singular points?
Fixed.
Try other integral.
target = Compile[{{x, _Real}, {y, _Real}},
x/[Sqrt](1 - x) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-4.06259
Integration by manual
.
Plus @@ Flatten@
Table[integrand[x, y]*0.001*0.001, {x, -1., 1., 0.001}, {y, -1., 1.,
0.001}]
=>
-3.99866
Integration by NIntegrate
N@Integrate[
x/Sqrt[1 - x] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
=>
-4.14669
the question's integral.
target = Compile[{{x, _Real}, {y, _Real}},
x^2/[Sqrt](1 - x^2) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x^2) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-0.4542
By manual.
Plus @@ Flatten@
Table[integrand[x, y]*0.1*0.1, {x, -1., 1., 0.1}, {y, -1., 1., 0.1}]
=>
-8.88178*10^-16
By other method.
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.},
Method -> "LocalAdaptive"]
=>
7.73766*10^-17
For now, we can see that the integral value is close to zero.
$endgroup$
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returnsNothing
when the condition met,I think. so just modified.
$endgroup$
– Xminer
2 days ago
add a comment |
$begingroup$
As the others say,simply integrate by avoiding singular points?
Fixed.
Try other integral.
target = Compile[{{x, _Real}, {y, _Real}},
x/[Sqrt](1 - x) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-4.06259
Integration by manual
.
Plus @@ Flatten@
Table[integrand[x, y]*0.001*0.001, {x, -1., 1., 0.001}, {y, -1., 1.,
0.001}]
=>
-3.99866
Integration by NIntegrate
N@Integrate[
x/Sqrt[1 - x] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
=>
-4.14669
the question's integral.
target = Compile[{{x, _Real}, {y, _Real}},
x^2/[Sqrt](1 - x^2) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x^2) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-0.4542
By manual.
Plus @@ Flatten@
Table[integrand[x, y]*0.1*0.1, {x, -1., 1., 0.1}, {y, -1., 1., 0.1}]
=>
-8.88178*10^-16
By other method.
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.},
Method -> "LocalAdaptive"]
=>
7.73766*10^-17
For now, we can see that the integral value is close to zero.
$endgroup$
As the others say,simply integrate by avoiding singular points?
Fixed.
Try other integral.
target = Compile[{{x, _Real}, {y, _Real}},
x/[Sqrt](1 - x) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-4.06259
Integration by manual
.
Plus @@ Flatten@
Table[integrand[x, y]*0.001*0.001, {x, -1., 1., 0.001}, {y, -1., 1.,
0.001}]
=>
-3.99866
Integration by NIntegrate
N@Integrate[
x/Sqrt[1 - x] Sqrt[1 - y^2]/(y - x), {x, -1, 1}, {y, -1, 1},
PrincipalValue -> True]
=>
-4.14669
the question's integral.
target = Compile[{{x, _Real}, {y, _Real}},
x^2/[Sqrt](1 - x^2) [Sqrt](1 - y^2)/(y - x)];
integrand[x_, y_] := If[Or[(1 - x^2) == 0, y == x], 0, target[x, y]];
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.}]
=>
-0.4542
By manual.
Plus @@ Flatten@
Table[integrand[x, y]*0.1*0.1, {x, -1., 1., 0.1}, {y, -1., 1., 0.1}]
=>
-8.88178*10^-16
By other method.
Quiet@NIntegrate[integrand[x, y], {x, -1., 1.}, {y, -1., 1.},
Method -> "LocalAdaptive"]
=>
7.73766*10^-17
For now, we can see that the integral value is close to zero.
edited 2 days ago
answered 2 days ago
XminerXminer
33818
33818
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returnsNothing
when the condition met,I think. so just modified.
$endgroup$
– Xminer
2 days ago
add a comment |
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returnsNothing
when the condition met,I think. so just modified.
$endgroup$
– Xminer
2 days ago
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
But I can't avoid the singularity $x==y$, because for example if I have $x$ instead of $x^2$ the result of integral is $-pi^2/2$, and with your code the result is always 0.
$endgroup$
– Javier Alaminos
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returns
Nothing
when the condition met,I think. so just modified.$endgroup$
– Xminer
2 days ago
$begingroup$
@JavierAlaminos as your point,my code was always 0. it's mainly because my code returns
Nothing
when the condition met,I think. so just modified.$endgroup$
– Xminer
2 days ago
add a comment |
Javier Alaminos is a new contributor. Be nice, and check out our Code of Conduct.
Javier Alaminos is a new contributor. Be nice, and check out our Code of Conduct.
Javier Alaminos is a new contributor. Be nice, and check out our Code of Conduct.
Javier Alaminos is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193926%2fnintegrate-how-can-i-solve-this-integral-numerically-nintegrate-fails-while-in%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
$begingroup$
The issue is that the integrand approaches infinity as
x->±1
,x->y
, andy->x
. That kind of behavior is toxic to numerical methods: you need to reason out a way to deal with it, not merely probe it numerically.PrincipalValue -> True
gives you access to automated reasoning in this case, and you've solved the problem that way. Do you have a different problem you're trying to solve?$endgroup$
– John Doty
2 days ago
$begingroup$
Yes, I'm trying to solve a similar integral, when x^2 is multplied by exp^(-i*b*(x + y)). So, firstly I wanted to try to solve this known integral.
$endgroup$
– Javier Alaminos
2 days ago
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
2 days ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
2 days ago