Rootfinder for radial Mathieu function or its first derivative (finds q values of given radial function type with known order m and radial argument ξ0, which satisfies the equation RMF_m(q,xi0) = 0 (Dirichlet boundary condition) or RMF_m'(q,xi0) = 0 (Neumann boundary condition).
q_found_out = mathieu_rootfinder(m, xi0, q_start, q_delta, q_roots_tot, q_fun_tol, q_maxiter, func_name, fun_or_der, do_print, do_plot)
the order of Mathieu function
the value of radial argument in elliptic coordinates ()
initial guess for q
step increment on search of q
number of roots to be found
relative tolerance of zero value (fsolve tol)
maximum number if iterations
radial Mathieu function type (should be on of 'Ce', 'Se', 'Fey', 'Gey', 'Mc1', 'Ms1', 'Mc2', 'Ms2')
search roots of function (%t - Dirichlet boundary condition) or derivative (%f - Neumann boundary condition)
print debug infromation in console? (boolean)
plot graphics of rootfinding? (boolean)
found values of q
Mathieu_rootfinder finds q values of given radial Mathieu function (RMF) type with known order m and radial argument ,
which satisfies the equation
(Dirichlet boundary condition)
or
(Neumann boundary condition).
Rootfinder uses bisection method and fsolve function.
During unit-testing rootfinder was tested by comparison with results from articles and books: [1, Table 5(a)], [2, Table 1]; [3, p. 299], [3, p. 302], [3, p. 304], [3, p. 308, Table 24]; [4, p. 105, Table 1]; [5, p. 58], [6, Fig. 9]; [7, pp. 618-619].
The results are very close.
// Comparison with [4, p. 105, Table 1] // // Finding roots of derivative Ce0`(xi,q) = 0 // // a/b = 5/4 e = 0.600 q = 1.785 // a/b = 2 e = 0.866 q = 8.57 // a/b = 3 e = 0.943 q = 21.43 // printf("\n\nComparison with Y. Shibaoka and F. Iida [4, p. 105, Table 1], Ce0`(xi,q)=0:\n"); func_name = "Ce"; m = 0; fun_or_der = 0; rho_article = [5/4,2,3]; q_article = [1.785,8.57,21.43]; q_start = 0.1; q_delta = 0.05; q_roots_tot = 1; q_fun_tol = 1e-16; q_maxiter = 1000; do_print = 1; do_plot = 1; for i = 0:length(rho_article)-1 rho = rho_article(i+1); e = sqrt(1-rho^(-2)); xi0 = acosh(1/e); printf("\n xi0 = %f \n",xi0); qs = mathieu_rootfinder(m,xi0,q_start,q_delta,q_roots_tot,q_fun_tol,q_maxiter,func_name,fun_or_der,do_print,do_plot); printf("\tq%1d1 (article) = %f \n",0,q_article(i+1)); printf("\tq%1d1 (Scilab) = %f \n",0,qs(1)); delta(i+1) = (100*(q_article(i+1) - qs(1)))/q_article(i+1); printf("\tdelta = %f %% \n", delta(i+1)); end | ![]() | ![]() |
N. O. Strelkov, NRU MPEI
1. Wilson, Howard B., and Robert W. Scharstein. "Computing elliptic membrane high frequencies by Mathieu and Galerkin methods." Journal of Engineering Mathematics 57.1 (2007): 41-55. (online at http://scharstein.eng.ua.edu/ENGI1589.pdf or http://dx.doi.org/10.1007/s10665-006-9070-1 )
2. Neves, Armando GM. "Eigenmodes and eigenfrequencies of vibrating elliptic membranes: a Klein oscillation theorem and numerical calculations." Comm. Pure Appl. Anal. 2009. (online at http://www.ma.utexas.edu/mp_arc/c/09/09-174.pdf )
3. N.W. McLachlan, Theory and Application of Mathieu Functions, Oxford Univ. Press, 1947.
4. Shibaoka, Yoshio, and Fusako Iida. "On the free oscillation of water in a lake of elliptic boundary." The Journal of the Oceanographical Society of Japan. 21.3 (1965): 103-108. (online at http://www.terrapub.co.jp/journals/JO/JOSJ/pdf/2103/21030103.pdf )
5. Hamidzadeh, Hamid R., and L. Moxey. "Analytical modal analysis of thin-film flat lenses." Proceedings of the Institution of Mechanical Engineers, Part K: Journal of Multi-body Dynamics 219.1 (2005): 55-59.
6. Lee, W. M. "Natural mode analysis of an acoustic cavity with multiple elliptical boundaries by using the collocation multipole method." Journal of Sound and Vibration 330.20 (2011): 4915-4929.
7. Gutiérrez-Vega, J., S. Chávez-Cerda, and Ramón Rodríguez-Dagnino. "Free oscillations in an elliptic membrane." Revista Mexicana de Fisica 45.6 (1999): 613-622. (online at http://optica.mty.itesm.mx/pmog/Papers/P001.pdf )