Solving an equation with Hankel-function
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Walter Roberson
2011-5-27
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 个评论
Benjamin
2011-5-27
2 个评论
Walter Roberson
2011-5-27
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
2011-5-27
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!