Построение и поиск корней бесселевых функций - PullRequest
1 голос
/ 18 февраля 2012

Я пытаюсь построить корни функции, которая состоит из нескольких бесселевых функций, которые добавляются и умножаются в Matlab. Уравнение имеет вид Jm (омега) * Ik (омега) + Im (омега) * Jk (омега), где Jm - функция Бесселя первого порядка m (besselj). Im - модифицированная функция Бесселя первого рода порядка m (besseli). Для каждой моды m = o, 1,2, ... и n = 1,2,3 ... Частота омега (mn) является соответствующим корнем перечисленного уравнения. m = 0,1,2 н-1,2,3,4. Мне нужно решить уравнение для 12 корней. Я новичок в Matlab, и это немного из моей лиги. Пока у меня есть этот код, но я не был уверен, нужна ли мне переменная omega в скрипте или нет. Я также смотрел на вопросы других людей о предмете, но не видел ничего подобного. Графики, которые я видел, не похожи на мои, что говорит мне, что я, вероятно, ошибаюсь. Спасибо за любую помощь.

m=(0:2); k=(1:3); n=(1:4);
Jm=besselj(m,n');
Ik=besseli(k,n');
Jk=besselj(k,n');
Im=besseli(m,n');
g=Jm.*Ik+Im.*Jk
plot(g)

1 Ответ

0 голосов
/ 18 февраля 2012

Заговор

besselj и besseli принимают то, что вы называете omega, своим вторым параметром, поэтому для построения своей функции вы должны попробовать что-то вроде

m=0; k=1; omega=0:0.02:10;
Jm=besselj(m,omega);
Ik=besseli(k,omega);
Jk=besselj(k,omega);
Im=besseli(m,omega);
g=Jm.*Ik+Im.*Jk;
plot(omega,g);
hold all;
plot(omega,0,'k');
axis([min(omega) max(omega) -100 100]);

Это показывает, что для m=1, k=1 первые нули составляют около 3,2, 6,3 и 9,4:

screenshot matlab figure

Нахождение корней численно

Вы можете реализовать метод Галлея для своей функции g, аналогично тому, как корни besselj определяются в файле MatlabCentral, связанном с Cheery .

...