Построение графика и нахождение корней функций Бесселя

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

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)

person A Anderson    schedule 18.02.2012    source источник
comment
Попробуйте использовать mathworks.com/matlabcentral/fileexchange/6794   -  person Cheery    schedule 18.02.2012


Ответы (1)


Создание графика

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:

скриншот рисунка Matlab

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

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

person Jonas Heidelberg    schedule 18.02.2012