수치 적분 함수
1. integral
예제
f = @(x) x.^2; % 적분할 함수
Q = integral(f, 0, 1); % 구간 [0, 1]에서 적분
disp(Q); % 결과 출력, 1/3 ≈ 0.3333
혹은 피적분 함수가 같은 경로내 다른 m파일에 정의된 경우에는 다음과 같이 사용한다.
Q = integral(@new_f, 0, 1); % 구간 [0, 1]에서 적분
disp(Q); % 결과 출력, 1/3 ≈ 0.3333
- 함수 핸들을 입력으로 받아 적응형 방법으로 수치적분을 수행
- 복잡한 함수, 무한 구간, 특이점이 있는 함수에도 적합
- 다양한 옵션 제공
- 정밀한 계산을 위해 사용
2. trapz
예제
t = 0:0.01:1; % 시간 벡터
y = t.^2; % y 값 벡터
Q = trapz(t, y); % 사다리꼴 법을 사용한 수치 적분
disp(Q); % 결과 출력, 1/3 ≈ 0.3333
- 데이터 포인트가 주어진 경우 간단하게 사용할 수 있다.
- 함수 형태를 정의하지 않고도 사용할 수 있다.
- 복잡한 수학적 함수보다는 데이터 점들 사이의 면적을 구하는 데 적합하다.
문제
다음과 같은 신호에 대하여 신호의 파형을 그리고 에너지와 전력을 구하라.
$x(t) = 2te^{-t}u(t)$
$y(t) = \sqrt{2} \sin(\pi t)$
$u(t)$는 unit step function을 의미한다.
x(t)는 intergral을 사용하고 y(t)는 trapz를 사용해서 계산해보자.
우선 integral에 사용될 피적분함수(x(t)의 제곱)를 다른 m파일에 정의한다.
% int_fctn_1.m
function xs = int_fctn_1(t)
x = 2 * t .* exp(-t);
xs = x .^ 2;
end
1. 신호 생성 및 에너지, 전력 계산
dt = 0.01;
t = 0:dt:10;
x = 2 * t .* exp(-t);
y = sqrt(2) * sin(pi * t);
y_squared = y .^ 2;
T = 2; N = T / dt;
Ex = integral(@int_fctn_1, 0, 10);
fprintf('신호 x(t)의 에너지 = %6.4f\n', Ex)
Py = trapz(t(1 : N), y_squared(1 : N)) / T;
fprintf('신호 y(t)의 전력 = %6.4f\n', Py)
명령창 결과
신호 x(t)의 에너지 = 1.0000
신호 y(t)의 전력 = 1.0000
- %6.4f\n : fprintf 함수에서 사용되는 형식 지정자로 출력되는 숫자의 형식을 지정한다.
- % : 형식 지정자가 시작됨을 나타낸다.
- 6.4 : 소수점과 그 앞뒤 숫자를 포함한 최소 너비 6, 소수점 이하 4자리 까지
- f : 부동 소수점 숫자를 의미
- \n : 줄 바꿈
2. 그래프 그리기
figure; % 그림창 열기
subplot(1, 2, 1); plot(t, x);
axis([0 10 0 1]); grid on;
title('x(t) = 2 * t * exp(-t)');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(1, 2, 2); plot(t, y);
axis([0 6 -2 2]); grid on;
title('y(t) = sqrt(2) * sin(pi * t)');
xlabel('Time (s)');
ylabel('Amplitude');
'etc > MATLAB' 카테고리의 다른 글
[MATLAB] 1-1 정현파 그리기 (0) | 2024.05.19 |
---|