프로그래밍/매트랩

매트랩 적분 Integration

에이티에스 2023. 8. 10. 16:46
728x90

적분은 본질적으로 다른 두 가지 유형의 문제를 다룹니다.

  • 첫 번째 유형에서는 함수의 도함수가 주어지고 함수를 찾고 싶습니다. 따라서 우리는 기본적으로 차별화 과정을 역전시킵니다. 이 역 과정은 반 분화 (anti-differentiation) 또는 원시 함수 찾기 또는 무한 적분 찾기로 알려져 있습니다.
  • 두 번째 유형의 문제는 매우 많은 수의 매우 작은 양을 더한 다음 수량의 크기가 0에 가까워지면 한계를 취하는 반면 항의 수는 무한대가 되는 경향이 있습니다. 이 과정은 정적분의 정의로 이어집니다.

정적분은 면적, 부피, 무게 중심, 관성 모멘트, 힘에 의해 수행되는 작업 및 기타 여러 응용 분야에서 찾는 데 사용됩니다.

 

MATLAB을 사용한 무한 적분 구하기

정의상 함수 f(x)의 도함수가 f'(x)이면 x에 대한 f'(x)의 부정적분은 f(x)라고 합니다.

예를 들어 x2의 도함수 (x에 대한)는 2x이므로 2x의 부정적분은 x2라고 할 수 있습니다.

 

Symbol

 

임의의 상수 c 값에 대해 x^2 + c의 도함수도 2배가 되기 때문에 부정적분은 유일하지 않습니다.

이것은 다음과 같이 기호로 표현됩니다 -

 

여기서 c는 '임의 상수'라고 합니다.

 

MATLAB은 표현식의 적분을 계산하기 위한 int 명령을 제공합니다. 함수의 무한 적분에 대한 표현식을 도출하기 위해, 우리는 다음과 같이 씁니다 

int(f);

예를 들어, -

syms x 
int(2*x)

 

MATLAB은 위의 문을 실행하고 다음과 같은 결과를 반환합니다

ans =
   x^2

 

예제 1

이 예에서는 일반적으로 사용되는 몇 가지 표현식의 적분을 찾아보겠습니다.

스크립트 파일을 만들고 다음 코드를 입력하세요. 

syms x n

int(sym(x^n))
f = 'sin(n*t)'
int(sym(f))
syms a t
int(a*cos(pi*t))
int(a^x)

 

파일을 실행할 때, 그것은 다음과 같은 결과를 표시합니다. 

ans =
   piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])
f =
sin(n*t)
ans =
   -cos(n*t)/n
   ans =
   (a*sin(pi*t))/pi
   ans =
   a^x/log(a)

 

예제 2

스크립트 파일을 만들고 그것에 다음 코드를 입력하세요. 

syms x n
int(cos(x))
int(exp(x))
int(log(x))
int(x^-1)
int(x^5*cos(5*x))
pretty(int(x^5*cos(5*x)))

int(x^-5)
int(sec(x)^2)
pretty(int(1 - 10*x + 9 * x^2))

int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2)
pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))

 

pretty 함수는 더 읽기 쉬운 형식으로 표현식을 반환합니다.

파일을 실행할 때, 다음과 같은 결과를 표시합니다. 

ans =
   sin(x)
 
ans =
   exp(x)
 
ans =
   x*(log(x) - 1)
 
ans =
   log(x)
 
ans =
(24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5
                                    2             4 
   24 cos(5 x)   24 x sin(5 x)   12 x  cos(5 x)   x  cos(5 x) 
   ----------- + ------------- - -------------- + ------------ 
      3125            625             125              5 
   
        3             5 
 
   4 x  sin(5 x)   x  sin(5 x) 
   ------------- + ----------- 
         25              5
 
ans =
-1/(4*x^4)
 
ans =
tan(x)
        2 
  x (3 x  - 5 x + 1)
 
ans = 
- (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2
 
      6      5      4    3 
    7 x    3 x    5 x    x 
  - ---- - ---- + ---- + -- 
     12     5      8     2

 

MATLAB을 사용하여 정적분 구하기

정의에 따르면 정적분은 기본적으로 합계의 한계입니다. 곡선과 x축 사이의 영역, 두 곡선 사이의 면적과 같은 영역을 찾기 위해 정적분을 사용합니다. 한정 적분은 필요한 수량을 합계의 한계로 표현할 수 있는 다른 상황에서도 사용할 수 있습니다.

 

int 함수는 적분을 계산하려는 한계를 전달하여 명확한 적분에 사용할 수 있습니다.

 

계산하려면

 

int(x, a, b)

 

예를 들어, 

int(x, 4, 9)

 

MATLAB은 위의 문을 실행하고 다음과 같은 결과를 반환합니다 -

ans =
   65/2

 

다음은 위의 계산에 해당하는 옥타브입니다 -

pkg load symbolic
symbols

x = sym("x");
f = x;
c = [1, 0];
integral = polyint(c);

a = polyval(integral, 9) - polyval(integral, 4);
display('Area: '), disp(double(a));

 

옥타브는 코드를 실행하고 다음과 같은 결과를 반환합니다 -

Area: 

   32.500

 

다음과 같이 Octave에서 제공하는 quad() 함수를 사용하여 다른 솔루션을 제공 할 수 있습니다 -

pkg load symbolic
symbols

f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);

display('Area: '), disp(double(a));

 

옥타브는 코드를 실행하고 다음과 같은 결과를 반환합니다 -

Area: 
   32.500

 

예제 1

x축과 곡선 y = x^3-2x+5 사이에 포함된 면적을 계산하고 세로좌표 x = 1과 x = 2를 계산합니다.

필요한 영역은 다음과 같이 주어집니다.

 

스크립트 파일을 만들고 다음 코드를 입력하십시오 -

f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));

 

파일을 실행할 때, 다음과 같은 결과를 표시합니다. 

a =
23/4
Area: 
   5.7500

다음은 위의 계산에 해당하는 옥타브입니다 -

pkg load symbolic
symbols

x = sym("x");
f = x^3 - 2*x +5;
c = [1, 0, -2, 5];
integral = polyint(c);

a = polyval(integral, 2) - polyval(integral, 1);
display('Area: '), disp(double(a));

 

옥타브는 코드를 실행하고 다음과 같은 결과를 반환합니다 -

Area: 

   5.7500

 

다음과 같이 Octave에서 제공하는 quad() 함수를 사용하여 다른 솔루션을 제공 할 수 있습니다 -

pkg load symbolic
symbols

x = sym("x");
f = inline("x^3 - 2*x +5");

[a, ierror, nfneval] = quad(f, 1, 2);
display('Area: '), disp(double(a));

 

옥타브는 코드를 실행하고 다음과 같은 결과를 반환합니다 -

Area: 
   5.7500

 

예제 2

곡선 아래의 넓이를 구합니다. -4 ≤ x ≤ 9인 경우 f(x) = x2 cos(x)입니다.

 

스크립트 파일을 만들고 다음 코드를 작성하세요. 

f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));

 

파일을 실행할 때, MATLAB은 그래프를 플롯합니다. 

 

출력은 다음과 같습니다 -

a = 
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
   0.3326

 

다음은 위의 계산에 해당하는 옥타브입니다 -

pkg load symbolic
symbols

x = sym("x");
f = inline("x^2*cos(x)");

ezplot(f, [-4,9])
print -deps graph.eps

[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
728x90
반응형
그리드형