728x90

1. 정의

 1) Midpoint Rule (중점 규칙):

주어진 구간을 여러 개의 작은 구간으로 나누고,

각 작은 구간의 중점에서 함수 값을 계산하여 이를 이용하여 적분 값을 근사화하는 수치적 적분 방법

 

  공식

Midpoint Rule (중점 규칙): 공식

2) Trapezoidal Rule (사다리꼴 규칙):

구간을 여러 개의 작은 사다리꼴로 나누고,

사다리꼴의 면적을 합하여 적분 값을 근사화하는 수치적 적분 방법

 

 공식

Trapezoidal Rule (사다리꼴 규칙): 공식

3) Simpson's Rule (심슨의 규칙):

주어진 구간을 여러 개의 작은 구간으로 나누고,

각 작은 구간에 대해 2차 다항식을 사용하여 적분 값을 근사화하는 수치적 적분 방법

 

 공식

Simpson's Rule (심슨의 규칙): 공식


2. 차이점

 1) 기본 형태:

  • Midpoint Rule: 각 작은 구간에서 중점의 함수 값으로 근사화.
  • Trapezoidal Rule: 각 작은 구간에서 사다리꼴의 면적으로 근사화.
  • Simpson's Rule: 각 작은 구간에서 2차 다항식으로 근사화.

2) 오차 정확도:

  • Midpoint Rule과 Trapezoidal Rule은 주로 선형 함수에 사용되며 근사치의 정확도가 떨어질 수 있음.
  • Simpson's Rule은 2차 다항식의 근사를 사용하므로 일반적으로 더 높은 정확도를 제공함.

3) 적용 가능성:

  • Midpoint Rule과 Trapezoidal Rule은 일반적인 수치적 적분에 자주 사용.
  • Simpson's Rule은 더 정확한 근사가 필요한 경우에 사용되며, 특히 함수가 2차 다항식에 가까운 경우에 효과적.

 

3. 그래프 

그림을 통해 보다 이해를 쉽게 할 수 있습니다.

 

그래프

 

위의 그래프의 matlab 코드는 아래와 같습니다.

 

clc
close all
clear 
% 함수 정의
fun = @(x) sin(x); % 여기에 적절한 함수를 입력하세요.

% 구간 및 분할 수 정의
a = 0; % 시작점
b = pi; % 끝점
n = 10; % 분할 수

% x 값 및 함수 값 계산
x_values = linspace(a, b, 1000);
y_values = fun(x_values);

% Midpoint Rule 그래프 그리기
figure;
subplot(3, 1, 1);
plot(x_values, y_values, 'k', 'LineWidth', 2);
hold on;

midpoint_x = zeros(1, n);
midpoint_y = zeros(1, n);

for i = 1:n
    x_mid = (a + (i - 0.5) * (b - a) / n);
    y_mid = fun(x_mid);
    
    midpoint_x(i) = x_mid;
    midpoint_y(i) = y_mid;
    
    rectangle('Position', [x_mid - (b - a) / (2 * n), 0, (b - a) / n, y_mid], 'EdgeColor', 'b', 'FaceColor', 'none'); 
	rectangle('Position', [x_mid - (b - a) / (2 * n), 0, (b - a) / n, y_mid], 'EdgeColor', 'b', 'FaceColor', 'none');
end

title('Midpoint Rule');
hold off;

% Trapezoidal Rule 그래프 그리기
subplot(3, 1, 2);
plot(x_values, y_values, 'k', 'LineWidth', 2);
hold on;

trapezoidal_x = zeros(1, n+1);
trapezoidal_y = zeros(1, n+1);

for i = 1:n+1
    x_trap = a + (i - 1) * (b - a) / n;
    y_trap = fun(x_trap);
    
    trapezoidal_x(i) = x_trap;
    trapezoidal_y(i) = y_trap;
    
    if i > 1
        plot([trapezoidal_x(i-1), trapezoidal_x(i)], [trapezoidal_y(i-1), trapezoidal_y(i)], 'b', 'LineWidth', 2);
        plot([x_trap, x_trap], [0, y_trap], 'b', 'LineWidth', 2);
    
    end
end

title('Trapezoidal Rule');
hold off;

% Simpson's Rule 그래프 그리기
subplot(3, 1, 3);
plot(x_values, y_values, 'k', 'LineWidth', 2);
hold on;

simpson_x = zeros(1, 2*n+1);
simpson_y = zeros(1, 2*n+1);

for i = 1:2:2*n+1
    x_simp = a + (i - 1) * (b - a) / (2 * n);
    y_simp = fun(x_simp);
    
    simpson_x(i) = x_simp;
    simpson_y(i) = y_simp;
    
    if i < 2*n+1
        x_simp_mid = a + i * (b - a) / (2 * n);
        y_simp_mid = fun(x_simp_mid);
        
        simpson_x(i+1) = x_simp_mid;
        simpson_y(i+1) = y_simp_mid;
        
        simpson_x(i+2) = x_simp_mid;
        simpson_y(i+2) = 0;
        
        plot([x_simp, x_simp_mid, x_simp_mid], [y_simp, y_simp_mid, 0], 'b', 'LineWidth', 2);
    end
end

title("Simpson's Rule");
hold off;
728x90
반응형

+ Recent posts