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!