NIntegrate: How can I solve this integral numerically? NIntegrate fails while Integrate worksNIntegrate fails while Integrate worksCauchy principal value integral of a list of numbers. How?How to numerically integrate this integral?How to do multi-dimensional principal value integration?How to calculate the principal value for a two-dimensional integral numerically?Interesting discrepencies between integrate functionsHow to overcome this error in NIntegrate?Divergence With NIntegrateEvaluating this double integral numerically using NIntegrateNIntegrate error message: “The integrand…has evaluated to non-numerical values for all sampling points in the region with boundaries…”
Trouble understanding overseas colleagues
Was Spock the First Vulcan in Starfleet?
Why is delta-v is the most useful quantity for planning space travel?
Increase performance creating Mandelbrot set in python
(Bedrock Edition) Loading more than six chunks at once
How can I use the arrow sign in my bash prompt?
Personal Teleportation as a Weapon
Do there exist finite commutative rings with identity that are not Bézout rings?
What would happen if the UK refused to take part in EU Parliamentary elections?
Tiptoe or tiphoof? Adjusting words to better fit fantasy races
when is out of tune ok?
There is only s̶i̶x̶t̶y one place he can be
Modify casing of marked letters
Is there any easy technique written in Bhagavad GITA to control lust?
How do I rename a LINUX host without needing to reboot for the rename to take effect?
Was the picture area of a CRT a parallelogram (instead of a true rectangle)?
Is a roofing delivery truck likely to crack my driveway slab?
Implement the Thanos sorting algorithm
How does residential electricity work?
Why Were Madagascar and New Zealand Discovered So Late?
Prove that a horizontal asymptote can never be crossed
Is there a problem with hiding "forgot password" until it's needed?
Valid Badminton Score?
Can I use my Chinese passport to enter China after I acquired another citizenship?
NIntegrate: How can I solve this integral numerically? NIntegrate fails while Integrate works
NIntegrate fails while Integrate worksCauchy principal value integral of a list of numbers. How?How to numerically integrate this integral?How to do multi-dimensional principal value integration?How to calculate the principal value for a two-dimensional integral numerically?Interesting discrepencies between integrate functionsHow to overcome this error in NIntegrate?Divergence With NIntegrateEvaluating this double integral numerically using NIntegrateNIntegrate error message: “The integrand…has evaluated to non-numerical values for all sampling points in the region with boundaries…”
$begingroup$
I know the exact solution of the principal value of this integral is equal to zero:
$int_-1^1int_-1^1fracx^2sqrt1-x^2fracsqrt1-y^2y-xdydx=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^1int_-1^1fracx^2sqrt1-x^2fracsqrt1-y^2y-xdydx=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
yesterday
add a comment |
$begingroup$
I know the exact solution of the principal value of this integral is equal to zero:
$int_-1^1int_-1^1fracx^2sqrt1-x^2fracsqrt1-y^2y-xdydx=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^1int_-1^1fracx^2sqrt1-x^2fracsqrt1-y^2y-xdydx=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,03710
1,03710
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
yesterday
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
yesterday
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
yesterday
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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
yesterday
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
yesterday
$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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
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 yesterday
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
yesterday
$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
yesterday
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
yesterday
$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
yesterday
$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
yesterday
$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
yesterday
$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
yesterday
$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
yesterday
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
-numerical-integration
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
yesterday