2012-10-27 5 views
2

어리 석거나 모호한 경우 유감스럽게 생각하지만 Bessel 함수에 관한 코드와 관련하여 질문이 있습니다. 첫 번째 다섯 번째 0 차 베셀 함수를 사용하여 간단한 함수 (f (x) = 1-x를 정확하게 나타냄)를 숙제로하는 숙제가 주어졌습니다. 게다가 계수를 찾아야 해.0 번째 베셀 함수를 사용한 간단한 함수 표현

처음에는 도움을 요청하기 전에이 문제를 해결했음을 보여줘야한다는 것을 알고 있지만 실제로 어디에서 시작해야할지 모르겠다. 1 차 베셀 함수에 대해 알고 있고 2 차 베셀 함수에 대해 알고 있지만 0 차 베셀 함수가 무엇인지 전혀 알지 못합니다. 게다가 Bessel 함수로 함수를 표현할 수 있는지도 몰랐습니다. 함수를 근사하기 위해 Taylor의 확장 또는 푸리에 표현을 사용할 수 있다는 것을 알고 있지만 Bessel 함수를 사용하여이를 수행하는 방법을 알지 못합니다. 나는이 웹 사이트를 수색했는데 그것은 오히려 무례한 나의 동급생처럼 보인다. 우리의 과제를 복사하여 붙여 넣기 때문에 실이 닫혔다.

그래서 어떤 성자가 나를 올바른 방향으로 향하게 할 수 있다면 멋질 것입니다. 이 함수는 단순한 함수이므로 MATLAB은 Bessel 함수를 가지고 있으므로 너무 어렵지 않을 것입니다. 다른 함수를 나타 내기 위해 미분 방정식을 푸는 방법을 사용하는 법을 모르겠습니다. 오, 계수들? 무슨 계수 요? 내 무지를 용서하고 도와주세요!

+0

나는 그것이 http://math.stackexchange.com/에 더 많이 속한다고 생각한다. – Synxis

+0

글쎄, 나는 거기에 글을 올릴 예정 이었지만, 이것이 코딩상의 문제라고 생각하면서, 글을 올리는 것이 가장 좋을 것이라고 생각했다. –

+0

"0 차 베셀 함수"로 'J_0'을 의미합니까? 아니면 "0 번째 종류의 베셀 함수"입니까? – Synxis

답변

0

좋아요! 많은 조사와 작업을 통해이 문제에 대한 해답을 결정했습니다. 이제,이 사이트에 대한 질문에 처음으로 답변 한 것은 이번이 처음인데, 다시 한 번 제가 저지를 수있는 인색한 사람은 용서해주십시오.

우선, Bessel-Fourier 시리즈에 대해 필자가 맞았다. Bessel 시리즈를 사용하여 함수 근사값을 구하는 것은 불가능합니다. Bessel 함수로 시작하여 x를 스케일링하고 푸리에 변환을 포함하는 모든 트릭을 수행하는 긴 프로세스를 통해 함수의 베셀 - 푸리에 표현이

f 형식으로 제공되는지 확인할 수 있습니다 (z1x) + A2 * J_0 (z2x) + ...

여기서, z1은 1 차 베셀 함수의 0, J_0는 0 차 1 차 베셀 함수, A1 푸리에 - 베셀 (Fourier-Bessel) 계열의 계수입니다. 0은 베셀 함수를 플로팅하면 쉽게 얻을 수 있지만 계수는 까다로운 부분입니다. 이들은 식

= (2/(J_1 (아연)^2)) * 적분 (엑스 *의 F (X) * J_0 (아연 * X), ​​0, 1)

없이 주어진다 말하자면,이 어려운 부분은 Bessel 함수의 통합을 얻는 것입니다. 그러나이 lovely list을 사용하면 프로세스를 단순하게 만들 수 있습니다. 지저분한 ....하지만 간단합니다. 나는 또한 그것이 내 과제의 성격이기 때문에 0에서 1까지의 적분임을 주목해야한다. 0에서 2로 크기를 조정하는 것이 문제라면 방정식은

입니다. An = (2/(2^2) * (J_1 (zn)^2)) * integral (x * f (x) * J_0 (zn * x), 0, 2)

하지만 나는 빗 나간다. 그래서, 제 과제가 나에게 처음 5 개의 값을 개별적으로 그래프로 표시 한 다음, 이들을 함께 추가하고 그 결과를 실제 함수와 비교하면 그것이 제가 한 것입니다. 따라서 여기에 코드가 있습니다.

%%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 함수 코드는 다음과 같습니다 place

나는 이것이 도움이 되었기를 바랍니다. 그리고 내가 중대한 오류를 범하면, 말해주세요. 솔직히 말해서 방금 방금 방금 방정식을 설명 할 수는 없습니다. 교과서에서.