Skip to main content

calculus and analysis - Integrating a difficult function (Numerically ?)


I've been trying to make the following integral but I get no results :


Integrate[ (3/(16 + r^2)- 4/(6.25 + r^2)) E^(-2r^2) Sin[k r] r, {r, 0, Infinity}]


I am new in Mathematica and I have tried with the function Integrate and NIntegrate. Is there any command so that I can get a result of the above integral? Thanks :D



Answer



The exact integration fails in this case. One can do this numerically. As much as I understand, you need to have the result as a function of k. If you do this numerically, the result may only be an approximate function. If this is what you agree to have, the following approach may be undertaken.


First, note that because of the factor Sin[k r] your integral is highly oscillating at large values of k. In this case, it can be easily circumvented by the replacement k r->R. Let us introduce your expression staying under the integral as


Clear[expr];
expr[k_, R_] :=
Simplify /@ (((3/(16 + r^2) - 4/(6.25 + r^2)) Exp[(-2 r^2)] Sin[k r]*

r) /. r -> R/k // Expand)

The expression takes the following form:


enter image description here


Now let us integrate, not forgetting to multiply the expression by 1/k coming from dr=dR/k:


lst = Table[{k, 
NIntegrate[expr[k, R]*1/k, {R, 0, \[Infinity]}]}, {k,
0.1, 10, 0.1}]

giving you a list of pairs with the structure {k, int[k]}. You can plot it, if you wish.



Further, if you need to have an approximate analytical function, in the end, you can fit this result to some reasonable function:


model = -a*k*Exp[-c*k^2];
ff = FindFit[lst, model, {a, c}, k]
Show[{
ListPlot[lst, PlotStyle -> Blue,
AxesLabel -> {Style["k", Italic, 16], Style["J(k)", Italic, 16]}],
Plot[model /. ff, {k, 0.1, 10}, PlotStyle -> Red]
}]
(* {a -> 0.0619, c -> 0.114} *)


where the plot is drawn to control the fitting quality:


enter image description here


Here the blue points show the results of the numerical integration, while the red solid line that of the fitting.


However, I guess you may try to do the integral analytically, but by hand. To do this, integrate the terms of the expression above separately. Replace in each of them Sin[R] by Exp[I R] and then, observing that the both integrands are even, integrate them from -infinity to +infinity and divide by 2, rather than from 0 to +infinity. Further, use the method of residuals for calculating Fourier integrals. You may have a look here for the method description: V. I. Smirnov, A Course of Higher Mathematics., 16 ed. (Pergamon Pr., Oxford, 1964), Vol. 3 Chapter 3, or somewhere else. In the end take the imaginary part of the solution.


Have fun!


Comments

Popular posts from this blog

plotting - Plot 4D data with color as 4th dimension

I have a list of 4D data (x position, y position, amplitude, wavelength). I want to plot x, y, and amplitude on a 3D plot and have the color of the points correspond to the wavelength. I have seen many examples using functions to define color but my wavelength cannot be expressed by an analytic function. Is there a simple way to do this? Answer Here a another possible way to visualize 4D data: data = Flatten[Table[{x, y, x^2 + y^2, Sin[x - y]}, {x, -Pi, Pi,Pi/10}, {y,-Pi,Pi, Pi/10}], 1]; You can use the function Point along with VertexColors . Now the points are places using the first three elements and the color is determined by the fourth. In this case I used Hue, but you can use whatever you prefer. Graphics3D[ Point[data[[All, 1 ;; 3]], VertexColors -> Hue /@ data[[All, 4]]], Axes -> True, BoxRatios -> {1, 1, 1/GoldenRatio}]

plotting - Filling between two spheres in SphericalPlot3D

Manipulate[ SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, Mesh -> None, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], {n, 0, 1}] I cant' seem to be able to make a filling between two spheres. I've already tried the obvious Filling -> {1 -> {2}} but Mathematica doesn't seem to like that option. Is there any easy way around this or ... Answer There is no built-in filling in SphericalPlot3D . One option is to use ParametricPlot3D to draw the surfaces between the two shells: Manipulate[ Show[SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], ParametricPlot3D[{ r {Sin[t] Cos[1.5 Pi], Sin[t] Sin[1.5 Pi], Cos[t]}, r {Sin[t] Cos[0 Pi], Sin[t] Sin[0 Pi], Cos[t]}}, {r, 1, 2 - n}, {t, 0, Pi}, PlotStyle -> Yellow, Mesh -> {2, 15}]], {n, 0, 1}]

plotting - Mathematica: 3D plot based on combined 2D graphs

I have several sigmoidal fits to 3 different datasets, with mean fit predictions plus the 95% confidence limits (not symmetrical around the mean) and the actual data. I would now like to show these different 2D plots projected in 3D as in but then using proper perspective. In the link here they give some solutions to combine the plots using isometric perspective, but I would like to use proper 3 point perspective. Any thoughts? Also any way to show the mean points per time point for each series plus or minus the standard error on the mean would be cool too, either using points+vertical bars, or using spheres plus tubes. Below are some test data and the fit function I am using. Note that I am working on a logit(proportion) scale and that the final vertical scale is Log10(percentage). (* some test data *) data = Table[Null, {i, 4}]; data[[1]] = {{1, -5.8}, {2, -5.4}, {3, -0.8}, {4, -0.2}, {5, 4.6}, {1, -6.4}, {2, -5.6}, {3, -0.7}, {4, 0.04}, {5, 1.0}, {1, -6.8}, {2, -4.7}, {3, -1....