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
yesterday
$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
yesterday
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
yesterday
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
20 hours 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 yesterday
mjw
1,03510
1,03510
New contributor
asked yesterday
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
yesterday
$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
yesterday
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
yesterday
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
20 hours 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
yesterday
$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
yesterday
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
yesterday
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
20 hours 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
yesterday
$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
yesterday
$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
yesterday
$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
yesterday
2
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
yesterday
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
yesterday
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
20 hours ago
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
20 hours 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
yesterday
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours 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
22 hours 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
23 hours 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
21 hours 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
yesterday
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours 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
22 hours 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
yesterday
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours 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
22 hours 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 yesterday
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
yesterday
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours 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
22 hours 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
yesterday
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours 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
22 hours 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
yesterday
$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
yesterday
$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
yesterday
$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
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours ago
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
22 hours 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
22 hours 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
22 hours 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
23 hours 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
21 hours 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
23 hours 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
21 hours 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 21 hours ago
answered yesterday
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
23 hours 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
21 hours 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
23 hours 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
21 hours 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
23 hours 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
23 hours 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
21 hours 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
21 hours 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
yesterday
$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
yesterday
2
$begingroup$
Use option Exclusions -> {-1, 1, y + x == 0}]
$endgroup$
– user18792
yesterday
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
20 hours ago