Представление простой функции с нулевой функцией Бесселя

Извините, если я кажусь глупым или расплывчатым, но у меня есть вопрос относительно кода о функциях Бесселя. Мне было поручено выполнить домашнюю работу по представлению простой функции (точнее, f(x)=1-x) с использованием первых пяти функций Бесселя 0-го порядка, нули которых масштабируются до единицы. Плюс я должен найти их коэффициенты.

Во-первых, я знаю, что должен показать, что работал над этой проблемой, прежде чем обращаться за помощью, но я действительно не знаю, с чего начать. Я знаю о функциях Бесселя первого порядка и знаю о функциях Бесселя второго порядка, но понятия не имею, что такое функция Бесселя нулевого порядка. Кроме того, я даже не знал, что можно представлять функции с помощью функций Бесселя. Я знаю, что вы можете использовать разложение Тейлора или представление Фурье для аппроксимации функции, но я понятия не имею, как это сделать с функцией Бесселя. Я искал этот сайт, и, кажется, мой одноклассник, довольно грубо, просто скопировал и вставил наше задание, и поэтому эта тема была закрыта.

Так что, если бы какой-нибудь святой мог хотя бы указать мне правильное направление, это было бы замечательно. Поскольку это простая функция, и я знаю, что в Matlab есть функция Бесселя, поэтому ее кодирование не будет слишком сложным. Я просто не знаю, как использовать метод решения дифференциального уравнения для представления другой функции. О, а коэффициенты? Какие коэффициенты? Простите мое невежество и помогите пожалуйста!


person Additional Pylons    schedule 27.10.2012    source источник
comment
Я думаю, что это больше относится к math.stackexchange.com   -  person Synxis    schedule 27.10.2012
comment
Ну, я собирался опубликовать это там, но, учитывая, что это была проблема с кодированием, я подумал, что будет лучше опубликовать это здесь.   -  person Additional Pylons    schedule 27.10.2012
comment
Под функцией Бесселя 0-го порядка вы имеете в виду J_0 ? Или функция Бесселя 0-го рода?   -  person Synxis    schedule 28.10.2012
comment
Ну, я предполагаю, что первое, так как я никогда не слышал и не нашел ничего о функции Бесселя нулевого рода. Но все же я не знаю, какое отношение Бессель имеет к аппроксимации решений функций. Хотя мои давние записи, кажется, предполагают, что это не просто функция Бесселя, а что-то связанное с рядом Бесселя-Фурье, но я серьезно не знаю, что с этим делать.   -  person Additional Pylons    schedule 28.10.2012


Ответы (1)


Хорошо! В результате долгих исследований и работы я нашел ответ на эту проблему. На самом деле, это первый раз, когда я отвечаю на вопрос на этом сайте, так что еще раз, пожалуйста, простите мне любую оплошность, которую я могу совершить.

Во-первых, кажется, что я был прав насчет ряда Бесселя-Фурье. Невозможно использовать только ряд Бесселя, чтобы получить аппроксимацию функции. Путем длительного процесса, начиная с функции Бесселя и масштабируя x, и выполняя целый ряд трюков, включающих преобразование Фурье, мы можем определить, что представление Бесселя-Фурье функции дано в виде

f(x) = A1*J_0(z1x) + A2*J_0(z2x) + ....

где z1 — нули функции Бесселя первого порядка, J_0 — функция Бесселя первого порядка 0, а A1 — коэффициенты ряда Фурье-Бесселя. Нули легко получить, просто построив функцию Бесселя, но коэффициенты — это сложная часть. Они задаются уравнением

An = (2/(J_1(zn)^2))*интеграл(x*f(x)*J_0(zn*x), 0, 1)

Излишне говорить, что самая трудная часть — это получение интеграла от функций Бесселя. Но с помощью этого прекрасного списка процесс можно ускорить. просто. Грязно.... но просто. Я также должен отметить, что интеграл от 0 до 1, потому что это было характером моего задания. Если бы вопрос состоял в том, чтобы масштабировать его от 0 до 2, то уравнение было бы

An = (2/(2^2)*(J_1(zn)^2))*интеграл(x*f(x)*J_0(zn*x), 0, 2)

Но я отвлекся. Итак, поскольку в моем задании я также нарисовал первые пять значений по отдельности, а затем сложил их вместе и сравнил результаты с фактической функцией, это то, что я сделал. Итак, вот код.

%%Plotting the Bessel Functions

a=[2.40483, 5.52008, 8.65373, 11.7915, 14.9309]; %a matrix with the first 5 zeros for a first order Bessle Function
A=zeros(5,1);
F=zeros(1, 100);
X=linspace(0,1);

for i=1:1:5

A(i,1)= (2*(besselj(1,a(i))*struve(0,a(i))-besselj(0,a(i))*struve(1,a(i))))/((a(i)^2)*(besselj(1,a(i)))^2)*(3.14/2);

%the equation to determine the coefficients of the Bessel-Fourier series

end


for i=1:1:5
figure(i);
plot(X, A(i,1)*besselj(0, (a(i)*X)));   %plot the first 5 Bessel functions
end

for i=1:1:5
F=F+A(i,1)*besselj(0, (a(i)*X));    %adding all the Bessel functions together
end

figure(6);
plot(X, F);         %plotting the Bessel functions and 1-x
hold on
plot(X, 1-X);

%%Struve Function

function f=struve(v,x,n)
% Calculates the Struve Function
%
% struve(v,x) 
% struve(v,x,n)
% 
% H_v(x) is the struve function and n is the length of
% the series calculation (n=100 if unspecified)
%
% from: Abramowitz and Stegun: Handbook of Mathematical Functions
%       http://www.math.sfu.ca/~cbm/aands/page_496.htm

if nargin<3
n=100;
end

k=0:n;

x=x(:)';
k=k(:);

xx=repmat(x,length(k),1);
kk=repmat(k,1,length(x));

TOP=(-1).^kk;
BOT=gamma(kk+1.5).*gamma(kk+v+1.5);
RIGHT=(xx./2).^(2.*kk+v+1);
FULL=TOP./BOT.*RIGHT;

f=sum(FULL);

И вот мы идем. Код функции struve взят из этого места.

Я надеюсь, что это помогло, и если я сделал какие-либо вопиющие ошибки, пожалуйста, сообщите мне, но, честно говоря, я не могу дальше объяснять уравнения, так как я только что взял их из учебника.

С наилучшими пожеланиями!

person Additional Pylons    schedule 31.10.2012