Solving an equation with Hankel-function
3 views (last 30 days)
Show older comments
Hello,
I have an equation which contains a Hankelfunction:
exp(-i*2*pi/3) * (H1[1/3*(-2y)^(3/2)]) / (H2[1/3*(-2y)^(3/2)]) = 1/(a*sqrt(-2*y))
where H1[] = besselh(2/3,2,...) H2[] = besselh(1/3,2,...)
Is there a way to calculate y for a given a?
Greets Benny
0 Comments
Answers (2)
Walter Roberson
on 27 May 2011
I tried some things but could not find a symbolic method.
In Maple notion all I found was
-RootOf(4*HankelH2(1/3, (2/3)*sqrt(2)*_Z^3)*a*_Z+HankelH2(2/3, (2/3)*sqrt(2)*_Z^3)*sqrt(2)-I*HankelH2(2/3, (2/3)*sqrt(2)*_Z^3)*sqrt(2)*sqrt(3))^2
-RootOf(4*HankelH2(1/3, -(2/3)*sqrt(2)*_Z^3)*a*_Z+HankelH2(2/3, -(2/3)*sqrt(2)*_Z^3)*sqrt(2)-I*HankelH2(2/3, -(2/3)*sqrt(2)*_Z^3)*sqrt(2)*sqrt(3))^2
Here
"I" is sqrt(-1),
HankelH2(nu,z) = besselh(nu,2,z)
RootOf() indicates the value _Z for which the expression becomes zero
I tried a couple of values for "a" but got complex solutions, probably because of the "i" in your initial equation.
0 Comments
Benjamin
on 27 May 2011
2 Comments
Walter Roberson
on 27 May 2011
The Maple code was trivial,
solve(exp(-(1/3)*(I*2)*Pi)*HankelH2(1/3, (1/3)*(-2*y)^(3/2))/HankelH2(2/3, (1/3)*(-2*y)^(3/2)) = 1/(a*sqrt(-2*y)),y)
The answer was the same form even when I misspelled HankelH2, so it did not use any properties of HankelH2 in coming to the solution.
Converting the first of the pair to Bessel gives
-RootOf(4*a*_Z*BesselJ(1/3, (2/3)*sqrt(2)*_Z^3) - (4*I)*a*_Z*BesselY(1/3, (2/3)*sqrt(2)*_Z^3) + sqrt(2)*BesselJ(2/3, (2/3)*sqrt(2)*_Z^3) - I*sqrt(2)*BesselY(2/3, (2/3)*sqrt(2)*_Z^3) - I*sqrt(2)*sqrt(3)*BesselJ(2/3, (2/3)*sqrt(2)*_Z^3) - sqrt(2)*sqrt(3)*BesselY(2/3, (2/3)*sqrt(2)*_Z^3))^2
which looks to me like nothing more than a straight forward transformation based upon the definition of the HankelH2 function, with again no special properties used.
Walter Roberson
on 27 May 2011
MATLAB equivalent with the symbolic toolbox would be
solve('exp(-(1/3)*(I*2)*Pi)*besselh(1/3, 2, (1/3)*(-2*y)^(3/2))/besselh(2/3, 2, (1/3)*(-2*y)^(3/2)) = 1/(a*sqrt(-2*y)),y)','y')
which will likely give a result that looks quite similar to what I posted earlier, but with a different syntax for RootOf().
Do you have the optimization toolbox? fsolve() should work, I think. Unfortunately, MATLAB's fzero() and fminbnd() and fminsearch() that are in basic MATLAB are not suitable as those do not handle complex solutions.
See Also
Categories
Find more on Symbolic Math Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!