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…”
ssTTsSTtRrriinInnnnNNNIiinngg
Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?
Using "tail" to follow a file without displaying the most recent lines
How seriously should I take size and weight limits of hand luggage?
Mathematica command that allows it to read my intentions
What historical events would have to change in order to make 19th century "steampunk" technology possible?
Is it inappropriate for a student to attend their mentor's dissertation defense?
What's the meaning of "Sollensaussagen"?
Processor speed limited at 0.4 Ghz
Could the museum Saturn V's be refitted for one more flight?
Is it "common practice in Fourier transform spectroscopy to multiply the measured interferogram by an apodizing function"? If so, why?
files created then deleted at every second in tmp directory
What do you call someone who asks many questions?
What is the most common color to indicate the input-field is disabled?
Can a virus destroy the BIOS of a modern computer?
Is there an online compendium of Rav Moshe teshuvos in English that exists?
Does Fukaya see all symplectic topology?
Are characters in a string unique
Why were 5.25" floppy drives cheaper than 8"?
Can I set a Ready action to trigger when literally anything happens?
How to show a landlord what we have in savings?
How obscure is the use of 令 in 令和?
What is a Samsaran Word™?
Explaination of a justification: additive functors preserve limits
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
$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
$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
Mar 25 at 12:20
$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
Mar 25 at 12:31
2
$begingroup$
Use option Exclusions -> -1, 1, y + x == 0]
$endgroup$
– user18792
Mar 25 at 12:43
1
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
Mar 25 at 20:56
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
$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
edited Mar 25 at 12:23
mjw
1,24210
1,24210
asked Mar 25 at 12:00
Javier AlaminosJavier Alaminos
213
213
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
Mar 25 at 12:20
$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
Mar 25 at 12:31
2
$begingroup$
Use option Exclusions -> -1, 1, y + x == 0]
$endgroup$
– user18792
Mar 25 at 12:43
1
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
Mar 25 at 20:56
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
Mar 25 at 12:20
$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
Mar 25 at 12:31
2
$begingroup$
Use option Exclusions -> -1, 1, y + x == 0]
$endgroup$
– user18792
Mar 25 at 12:43
1
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
Mar 25 at 20:56
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
Mar 25 at 12:20
$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
Mar 25 at 12:20
$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
Mar 25 at 12:31
$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
Mar 25 at 12:31
2
2
$begingroup$
Use option Exclusions -> -1, 1, y + x == 0]
$endgroup$
– user18792
Mar 25 at 12:43
$begingroup$
Use option Exclusions -> -1, 1, y + x == 0]
$endgroup$
– user18792
Mar 25 at 12:43
1
1
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
Mar 25 at 20:56
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
Mar 25 at 20:56
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
Mar 25 at 14:10
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
Mar 25 at 15:52
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$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
Mar 25 at 18:35
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
Mar 25 at 18:05
$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
Mar 25 at 20:02
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
);
);
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
Mar 25 at 14:10
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
Mar 25 at 15:52
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$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
Mar 25 at 18:35
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
Mar 25 at 14:10
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
Mar 25 at 15:52
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$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
Mar 25 at 18:35
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 Mar 25 at 13:04
Alexei BoulbitchAlexei Boulbitch
22k2672
22k2672
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
Mar 25 at 14:10
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
Mar 25 at 15:52
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$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
Mar 25 at 18:35
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
Mar 25 at 14:10
$begingroup$
You are right, it is not the same integral, since I tookSqrt[(x-y)^2+eps^2]
instead ofx-y
.
$endgroup$
– Alexei Boulbitch
Mar 25 at 15:52
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$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
Mar 25 at 18:35
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
Mar 25 at 14:10
$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
Mar 25 at 14:10
$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
Mar 25 at 15:52
$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
Mar 25 at 15:52
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$begingroup$
So, to solve the original integral what do I have to do?
$endgroup$
– Javier Alaminos
Mar 25 at 18:28
$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
Mar 25 at 18:35
$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
Mar 25 at 18:35
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
Mar 25 at 18:05
$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
Mar 25 at 20:02
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
Mar 25 at 18:05
$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
Mar 25 at 20:02
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 Mar 25 at 19:59
answered Mar 25 at 15:16
XminerXminer
34318
34318
$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
Mar 25 at 18:05
$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
Mar 25 at 20:02
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
Mar 25 at 18:05
$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
Mar 25 at 20:02
$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
Mar 25 at 18:05
$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
Mar 25 at 18:05
$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
Mar 25 at 20:02
$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
Mar 25 at 20:02
add a comment |
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
Mar 25 at 12:20
$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
Mar 25 at 12:31
2
$begingroup$
Use option Exclusions -> -1, 1, y + x == 0]
$endgroup$
– user18792
Mar 25 at 12:43
1
$begingroup$
All that is built on the sand because the PrincipalValue option for multivariate integrals is undocumented.
$endgroup$
– user64494
Mar 25 at 20:56