2014-12-03 6 views
0

Уравнение: I (a * x) = b, где a, b - константы, а I (y) - функция бесселевого порядка нулевого порядка.Как решить уравнение функции Бесселя нулевого порядка в Matlab?

I (х) = 1/(2 * пи) * интеграл (х * соз (т)) дт [от 0 -> 2 * пи]

Я хочу, чтобы получить значение x, когда даны a и b. Я просто хочу получить результат, поэтому нет необходимости реализовывать процедуру решения Matlab, и приблизительный ответ тоже прекрасен.

ответ

0

Вы можете использовать (http://nl.mathworks.com/help/matlab/ref/besselj.html, http://nl.mathworks.com/help/optim/ug/fsolve.html)

x = fsolve(@(x)(besselj(0,a*x)-b),x0); 

или использовать более простой решатель как указано в комментарии ниже (http://nl.mathworks.com/help/optim/ug/fzero.html)

x = fzero(@(x)(besselj(0,a*x)-b),x0); 
+1

Есть ли причина, что вы используете 'fsolve' найти то, что выглядит как одномерный корень? 'fzero' было бы достаточно, было бы более эффективным, а в некоторых случаях более надежным. Кроме того, это довольно плохой ответ с точки зрения объяснения и форматирования. – horchler

+0

Просто набрал что-то с моей головы :). Tnx, ответ обновлен – Kostya