Обнаружена странная вещь, в то время как цифровая интеграция кодирования для пользовательской функции. Руководство MATLAB написано:Интеграл3 и интеграл2 внутри интеграла
интеграл интеграл интеграл интеграл интеграл по xmin ≤ x ≤ xmax. Он вызывает интеграл2 с методом «плиткой» для оценки двойного интеграла ...
Я сделал правильно (я думаю, что это) векторизация моей функции, поэтому он берет входной элемент из интеграла3 и возвращает правильный массив значений. Интеграция проходит без ошибок, но значение NaN возвращается интеграцией (хотя сама интегрированная функция всегда возвращает массив комплексных чисел).
Наряду с этим, если я использую интеграл (с методом «ArrayValued») интегрального метода (той же функции) той же функции, что и в руководстве, как указано в интеграле 3, возвращаемые значения являются не-NaN, а сложными числами.
Любая идея, откуда могут возникнуть NaN?
Комплексные номера немного сложны для интеграции. Могу ли я увидеть вашу функцию и вашу попытку? Если вы считаете, что функция слишком длинная, чтобы писать здесь, не беспокойтесь, это не повредит. В случае, если ваша функция действительно длинная, я бы переделал такую же интеграцию с простой, но все же представительной функцией, чтобы убедиться, что интеграция работает правильно. – patrik
Спасибо, но это вряд ли возможно: функция использует кучу других подфункций, но в основном сводится к кратным двум сложным показателям, и в любом случае я преодолел проблему (что опять-таки путается), перейдя от: интеграл 3 (@ (x, y, z) F (x, y, z), x1, x2, y1, y2, z1, z2) 'to' integral3 (@ (z, x, y) F (x, y, z), z1, z2, x1, x2, y1, y2) ' – Mike
Я вижу, хорошо, что вы получили его на работу, хорошо, если я голосую, чтобы закрыть вопрос? Вы также можете подумать о том, чтобы отправить ответ и принять его, чтобы показать, что проблема решена. – patrik