Добрый день!
Для расчета магнитного поля диаметрально намагниченного цилиндра возникла необходимость вычислить эллиптические интегралы 1-го и 2-го рода:
и
, соответственно. Я использую MATLAB.
Проблема заключается в том, что в MATLAB (и, насколько я понял, по определению этих интегралов) предусмотрен расчёт с помощью функции "ellipke()" только для значений из промежутка
. Но в формулах для магнитного поля требуется иногда подставлять в аргумент эллиптических интегралов и отрицательные значения. Собственно, как легко видеть из формул, эти интегралы существуют и при отрицательных
. Однако программа выдаёт ошибку, что "M must be in the range 0 <= M <= 1.".
Интересно, что данные эллиптические интегралы можно вычислить в MATLAB, если в качестве аргумента "x" написать, например, не "ellipke(x)", а "ellipke(sym(x))". И программа считает интеграл. Но это не подходит, если нужно создать функцию, чтобы потом подставлять в неё массив "X", созданный через "meshgrid", т.е. "ellipke(sym(X))" не срабатывает для поэлементного вычисления.
Какие могут быть варианты решения моей проблемы?