[matlab] 12.특이적분


특이 적분



저번 장에서 Simpson 적분방법을 사용하여 함수의 수치적 적분 값을 구해봤는데요~

이번 시간에는 적분의 상한 혹은 하한에서 특이점이 존재하는 특이적분 값을 수치적으로 구하는 방법에 대해 알아보겠습니다.

특이적분의 근사치는 테일러 급수를 사용하여 구할 수 있습니다.


image



어려워보이죠? 하지만 예제를 실행해보면 그리 어렵지 않다는 것을 알 수 있습니다.

예제를 matlab으로 실행해보면서 특이적분 값을 구하는 방법을 익혀보도록 합시다!


image



예제의 함수를 위의 방법처럼 테일러 함수를 사용하여 나눈 후 적분하도록 하겠습니다~

matlab으로 직접 구현해볼까요?

코드입니다~!


clear; clc;
f=@(x)exp(x)/sqrt(x); %함수 정의 f(x)=G(x)+T(x)
p4=@(x)1+x+x^2/2+x^3/6+x^4/24; %e^x의 4차 테일러 방정식
G=@(x)f(x)-p4(x)/sqrt(x); %G(x) 정의 x=0일 때 0
T=@(x)x^(-1/2)+x^(1/2)+1/2*x^(3/2)+1/6*x^(5/2)+1/24*x^(7/2); %T(x)=p4(x)/sqrt(x)
%T(x)의 원시함수 (다항함수이므로 손으로 직접 구할 수 있다)
ST=@(x)2*x^(1/2)+2/3*x^(3/2)+1/5*x^(5/2)+1/21*x^(7/2)+1/108*x^(9/2); 
%(a) G(x)를 Simpson 방법으로 0부터 1까지 적분
a=0; b=1;
n=1000; 
h=(b-a)/n; %구간을 n등분 함
A=4*G(a+h)+G(a+2*h); %초기 값 G(0)=0 이므로
for i=1:n/2-1
    a=a+2*h;
    A=A+G(a)+4*G(a+h)+G(a+2*h); %Simpson 공식
end
A=A*h/3;

%(b) T(x)를 0부터 1까지 적분 
B=ST(1)-ST(0);


%f(x)를 0부터 1까지 적분한 값은 (a)+(b)
format long
fprintf('(a)= %f,  (b)=%f,  (a)+(b)=%f\n',A,B,A+B);



아까 테일러 급수를 이용해 나누고 따로 적분한 방법을 그대로 적용한 것입니다~!

실행결과입니다~


image



특이적분 값도 잘 나오는 것을 볼 수 있습니다~

만약 나누지 않고 그냥 f(x)를 Simpson 방법에 넣으면 Inf 값이 나옵니다 ㅠㅠ

이렇게 미분과 적분 값을 수치적으로 계산하는 방법에 대해 알아보고 matlab으로 구현까지 해보았습니다.

다음 장에서는 미분방정식의 수치해법에 대해 알아보겠습니다~