Skip to main content
replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
Source Link

...most of the solutions are for simpler functions...

I'm not quite sure what gave OP that impression; certainly, FindAllCrossings[]FindAllCrossings[] is quite capable of handling transcendental equations, as long as all the roots being sought are simple.

But first: I slightly tidied up the definition of f[] (e.g. by using auxiliary variables for common subexpressions), as the original version brought tears to my sensitive eyes:

f[M_?NumericQ, λ_?NumericQ, ω_?NumericQ] := Module[{c, k, ξ1, ξ2}, c = Sqrt[M/λ]; k = I M/(2 λ); ξ1 = (I - 1) (ω/Sqrt[λ] - Sqrt[λ]/2); ξ2 = (I - 1) (ω/Sqrt[λ] + Sqrt[λ]/2); ({1 + I, -I c}.ParabolicCylinderD[{-k, -k - 1}, ξ2] {c, 1 + I}.ParabolicCylinderD[{k - 1, k}, I ξ1] - {I c, 1 + I}.ParabolicCylinderD[{-k - 1, -k}, ξ1] {c, -1 - I}.ParabolicCylinderD[{k - 1, k}, I ξ2])/2] 

...and with that,

roots = FindAllCrossings[Im[f[2, 100, ω]], {ω, 0, 50}, WorkingPrecision -> 20] {1.4210217375131208861, 4.9080677718060732317, 7.6276760758692264160, 11.242328271551264279, 14.025220377481373494, 17.188413671355074367, 20.686743750589305061, 23.568643080603343806, 26.490531437543067517, 29.849368653509459477, 33.222900929283185978, 36.429230282166527794, 39.466210718845193558, 42.459671861175573218, 45.512697669849073416, 48.625869297148536333} 

As a graphical verification:

Plot[Im[f[2, 100, ω]], {ω, 0, 50}, Epilog -> {Red, AbsolutePointSize[4], Point[Thread[{roots, 0}]]}, Frame -> True, PlotStyle -> RGBColor[59/67, 11/18, 1/7]] 

roots of a linear combination of PCFs

...most of the solutions are for simpler functions...

I'm not quite sure what gave OP that impression; certainly, FindAllCrossings[] is quite capable of handling transcendental equations, as long as all the roots being sought are simple.

But first: I slightly tidied up the definition of f[] (e.g. by using auxiliary variables for common subexpressions), as the original version brought tears to my sensitive eyes:

f[M_?NumericQ, λ_?NumericQ, ω_?NumericQ] := Module[{c, k, ξ1, ξ2}, c = Sqrt[M/λ]; k = I M/(2 λ); ξ1 = (I - 1) (ω/Sqrt[λ] - Sqrt[λ]/2); ξ2 = (I - 1) (ω/Sqrt[λ] + Sqrt[λ]/2); ({1 + I, -I c}.ParabolicCylinderD[{-k, -k - 1}, ξ2] {c, 1 + I}.ParabolicCylinderD[{k - 1, k}, I ξ1] - {I c, 1 + I}.ParabolicCylinderD[{-k - 1, -k}, ξ1] {c, -1 - I}.ParabolicCylinderD[{k - 1, k}, I ξ2])/2] 

...and with that,

roots = FindAllCrossings[Im[f[2, 100, ω]], {ω, 0, 50}, WorkingPrecision -> 20] {1.4210217375131208861, 4.9080677718060732317, 7.6276760758692264160, 11.242328271551264279, 14.025220377481373494, 17.188413671355074367, 20.686743750589305061, 23.568643080603343806, 26.490531437543067517, 29.849368653509459477, 33.222900929283185978, 36.429230282166527794, 39.466210718845193558, 42.459671861175573218, 45.512697669849073416, 48.625869297148536333} 

As a graphical verification:

Plot[Im[f[2, 100, ω]], {ω, 0, 50}, Epilog -> {Red, AbsolutePointSize[4], Point[Thread[{roots, 0}]]}, Frame -> True, PlotStyle -> RGBColor[59/67, 11/18, 1/7]] 

roots of a linear combination of PCFs

...most of the solutions are for simpler functions...

I'm not quite sure what gave OP that impression; certainly, FindAllCrossings[] is quite capable of handling transcendental equations, as long as all the roots being sought are simple.

But first: I slightly tidied up the definition of f[] (e.g. by using auxiliary variables for common subexpressions), as the original version brought tears to my sensitive eyes:

f[M_?NumericQ, λ_?NumericQ, ω_?NumericQ] := Module[{c, k, ξ1, ξ2}, c = Sqrt[M/λ]; k = I M/(2 λ); ξ1 = (I - 1) (ω/Sqrt[λ] - Sqrt[λ]/2); ξ2 = (I - 1) (ω/Sqrt[λ] + Sqrt[λ]/2); ({1 + I, -I c}.ParabolicCylinderD[{-k, -k - 1}, ξ2] {c, 1 + I}.ParabolicCylinderD[{k - 1, k}, I ξ1] - {I c, 1 + I}.ParabolicCylinderD[{-k - 1, -k}, ξ1] {c, -1 - I}.ParabolicCylinderD[{k - 1, k}, I ξ2])/2] 

...and with that,

roots = FindAllCrossings[Im[f[2, 100, ω]], {ω, 0, 50}, WorkingPrecision -> 20] {1.4210217375131208861, 4.9080677718060732317, 7.6276760758692264160, 11.242328271551264279, 14.025220377481373494, 17.188413671355074367, 20.686743750589305061, 23.568643080603343806, 26.490531437543067517, 29.849368653509459477, 33.222900929283185978, 36.429230282166527794, 39.466210718845193558, 42.459671861175573218, 45.512697669849073416, 48.625869297148536333} 

As a graphical verification:

Plot[Im[f[2, 100, ω]], {ω, 0, 50}, Epilog -> {Red, AbsolutePointSize[4], Point[Thread[{roots, 0}]]}, Frame -> True, PlotStyle -> RGBColor[59/67, 11/18, 1/7]] 

roots of a linear combination of PCFs

Source Link

...most of the solutions are for simpler functions...

I'm not quite sure what gave OP that impression; certainly, FindAllCrossings[] is quite capable of handling transcendental equations, as long as all the roots being sought are simple.

But first: I slightly tidied up the definition of f[] (e.g. by using auxiliary variables for common subexpressions), as the original version brought tears to my sensitive eyes:

f[M_?NumericQ, λ_?NumericQ, ω_?NumericQ] := Module[{c, k, ξ1, ξ2}, c = Sqrt[M/λ]; k = I M/(2 λ); ξ1 = (I - 1) (ω/Sqrt[λ] - Sqrt[λ]/2); ξ2 = (I - 1) (ω/Sqrt[λ] + Sqrt[λ]/2); ({1 + I, -I c}.ParabolicCylinderD[{-k, -k - 1}, ξ2] {c, 1 + I}.ParabolicCylinderD[{k - 1, k}, I ξ1] - {I c, 1 + I}.ParabolicCylinderD[{-k - 1, -k}, ξ1] {c, -1 - I}.ParabolicCylinderD[{k - 1, k}, I ξ2])/2] 

...and with that,

roots = FindAllCrossings[Im[f[2, 100, ω]], {ω, 0, 50}, WorkingPrecision -> 20] {1.4210217375131208861, 4.9080677718060732317, 7.6276760758692264160, 11.242328271551264279, 14.025220377481373494, 17.188413671355074367, 20.686743750589305061, 23.568643080603343806, 26.490531437543067517, 29.849368653509459477, 33.222900929283185978, 36.429230282166527794, 39.466210718845193558, 42.459671861175573218, 45.512697669849073416, 48.625869297148536333} 

As a graphical verification:

Plot[Im[f[2, 100, ω]], {ω, 0, 50}, Epilog -> {Red, AbsolutePointSize[4], Point[Thread[{roots, 0}]]}, Frame -> True, PlotStyle -> RGBColor[59/67, 11/18, 1/7]] 

roots of a linear combination of PCFs