Добрый день!
Для расчета магнитного поля диаметрально намагниченного цилиндра возникла необходимость вычислить эллиптические интегралы 1-го и 2-го рода:
![$K[M]=\int\limits_{0}^{\pi/2}\frac{d\theta}{\sqrt{1-M{\sin^2}\theta}}$ $K[M]=\int\limits_{0}^{\pi/2}\frac{d\theta}{\sqrt{1-M{\sin^2}\theta}}$](https://dxdy-01.korotkov.co.uk/f/8/a/5/8a5b0576910c1939e26523c907de7d7a82.png)
и
![$E[M]=\int\limits_{0}^{\pi/2}\sqrt{1-M{\sin^2}\thetad\theta}$ $E[M]=\int\limits_{0}^{\pi/2}\sqrt{1-M{\sin^2}\thetad\theta}$](https://dxdy-03.korotkov.co.uk/f/2/3/c/23cbdd607ee34ce21ea4eecce19dd19882.png)
, соответственно. Я использую MATLAB.
Проблема заключается в том, что в MATLAB (и, насколько я понял, по определению этих интегралов) предусмотрен расчёт с помощью функции "ellipke()" только для значений из промежутка
![$[0;1]$ $[0;1]$](https://dxdy-03.korotkov.co.uk/f/2/1/a/21ad730ee7df0b97abd700cb0f8426e682.png)
. Но в формулах для магнитного поля требуется иногда подставлять в аргумент эллиптических интегралов и отрицательные значения. Собственно, как легко видеть из формул, эти интегралы существуют и при отрицательных
![$M$ $M$](https://dxdy-04.korotkov.co.uk/f/f/b/9/fb97d38bcc19230b0acd442e17db879c82.png)
. Однако программа выдаёт ошибку, что "M must be in the range 0 <= M <= 1.".
Интересно, что данные эллиптические интегралы можно вычислить в MATLAB, если в качестве аргумента "x" написать, например, не "ellipke(x)", а "ellipke(sym(x))". И программа считает интеграл. Но это не подходит, если нужно создать функцию, чтобы потом подставлять в неё массив "X", созданный через "meshgrid", т.е. "ellipke(sym(X))" не срабатывает для поэлементного вычисления.
Какие могут быть варианты решения моей проблемы?