10. 수치 미분과 적분
가. 미분 – diff(x)
예) >>x=0:0.1:100;
>>y=x.^2.*exp(-0.1*x)-x;
>>subplot(1,3,1)
>>plot(x,y) % x^2 그래프
>>dy=diff(y)./diff(x); % 차분법에 의한 미분
>>dx=x(2:length(x)); % 차분법에 의해 x의 개수가 1개 줄어듦
>>subplot(1,3,2)
>>plot(dx,dy) % 1차 미분 그래프
>>ddy=diff(dy)./diff(dx); % 2차 미분
>>ddx=dx(2:length(dx)); % dx보다 개수가 1개 줄어듦
>>subplot(1,3,3)
>>plot(ddx,ddy) % 2차 미분 그래프
[참고] 차분법에 의한 미분은 데이터 사이 간격이 충분히 조밀해야 오차가 작으므로,
데이터 간격이 클 경우 보간법을 이용한 후 미분법 사용.
나. 적분 – quad(‘M-file’,a,b,tol): simpson’s rule, quadl(‘M-file’,a,b,tol): Lobatto quadrature
int(f,’x’): Symbolic 객체를 이용한 수식 적분, f를 x로 적분
예제 1) <m-file 내용>
function y=func(x)
y=1./(1+x).^2;
>>quad(‘func’,0,10)
ans = 0.909091053721440
>>quadl(‘func’,0,10)
ans = 0.909090909256147
예제 2) >>syms x % x를 symbolic로 지정
>>f=1/((1+x)^2); % 함수식
>>int(f,’x’) % symbolic 함수 적분
ans = -1/(1+x)
>>double(int(f,’x’,0,10)) % 구간 0~10 에서 적분하고 값을 실수 변환
ans = 0.909090909090909
p.s. 만약 연산 결과의 소수 자리가 4자리만 표현되면, ‘File’ -> ‘Preference…’ -> ‘Command Window’ 에서
Numeric Format을 long으로 바꾸면 됩니다.