MATLAB - Tích hợp
Tích hợp giải quyết hai loại vấn đề cơ bản khác nhau.
Trong kiểu đầu tiên, đạo hàm của một hàm được đưa ra và chúng ta muốn tìm hàm. Do đó, về cơ bản chúng ta đảo ngược quá trình phân hóa. Quá trình ngược lại này được gọi là chống phân biệt, hoặc tìm ra hàm nguyên thủy, hoặc tìm mộtindefinite integral.
Loại bài toán thứ hai liên quan đến việc cộng một số lượng rất lớn các đại lượng rất nhỏ và sau đó lấy một giới hạn khi kích thước của các đại lượng tiến dần đến 0, trong khi số lượng số hạng có xu hướng vô cùng. Quá trình này dẫn đến định nghĩa củadefinite integral.
Tích phân xác định được sử dụng để tìm diện tích, thể tích, trọng tâm, mômen quán tính, công do một lực thực hiện và trong nhiều ứng dụng khác.
Tìm tích phân không xác định bằng MATLAB
Theo định nghĩa, nếu đạo hàm của hàm f (x) là f '(x), thì chúng ta nói rằng tích phân bất định của f' (x) đối với x là f (x). Ví dụ, vì đạo hàm (đối với x) của x 2 là 2x, chúng ta có thể nói rằng một tích phân không xác định của 2x là x 2 .
Trong các ký hiệu -
f'(x2) = 2x, vì thế,
∫ 2xdx = x2.
Tích phân không xác định không phải là duy nhất, bởi vì đạo hàm của x 2 + c, với bất kỳ giá trị nào của một hằng số c, cũng sẽ là 2x.
Điều này được thể hiện bằng các ký hiệu như -
∫ 2xdx = x2 + c.
Trong đó, c được gọi là 'hằng số tùy ý'.
MATLAB cung cấp một intlệnh tính tích phân của một biểu thức. Để tính được một biểu thức cho tích phân không xác định của một hàm, chúng ta viết:
int(f);
Ví dụ, từ ví dụ trước của chúng tôi -
syms x
int(2*x)
MATLAB thực hiện câu lệnh trên và trả về kết quả sau:
ans =
x^2
ví dụ 1
Trong ví dụ này, chúng ta hãy tìm tích phân của một số biểu thức thường dùng. Tạo một tệp script và nhập mã sau vào đó:
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)
Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:
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)
Ví dụ 2
Tạo một tệp script và nhập mã sau vào đó:
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))
Lưu ý rằng pretty hàm trả về một biểu thức ở định dạng dễ đọc hơn.
Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:
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
Tìm tích phân xác định bằng MATLAB
Theo định nghĩa, tích phân xác định về cơ bản là giới hạn của một tổng. Chúng tôi sử dụng các tích phân xác định để tìm các khu vực như diện tích giữa đường cong và trục x và diện tích giữa hai đường cong. Tích phân xác định cũng có thể được sử dụng trong các trường hợp khác, trong đó đại lượng yêu cầu có thể được biểu thị dưới dạng giới hạn của một tổng.
Các int hàm có thể được sử dụng để tích phân xác định bằng cách vượt qua các giới hạn mà bạn muốn tính tích phân.
Tính toán
chúng tôi viết,
int(x, a, b)
Ví dụ, để tính toán giá trị của
int(x, 4, 9)
MATLAB thực hiện câu lệnh trên và trả về kết quả sau:
ans =
65/2
Sau đây là Octave tương đương với phép tính trên:
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));
Octave thực thi mã và trả về kết quả sau:
Area:
32.500
Một giải pháp thay thế có thể được đưa ra bằng cách sử dụng hàm quad () do Octave cung cấp như sau:
pkg load symbolic
symbols
f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);
display('Area: '), disp(double(a));
Octave thực thi mã và trả về kết quả sau:
Area:
32.500
ví dụ 1
Chúng ta hãy tính diện tích nằm giữa trục x và đường cong y = x 3 −2x + 5 và các hoành độ x = 1 và x = 2.
Diện tích bắt buộc được đưa ra bởi -
Tạo tệp kịch bản và nhập mã sau:
f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));
Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:
a =
23/4
Area:
5.7500
Sau đây là Octave tương đương với phép tính trên:
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));
Octave thực thi mã và trả về kết quả sau:
Area:
5.7500
Một giải pháp thay thế có thể được đưa ra bằng cách sử dụng hàm quad () do Octave cung cấp như sau:
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));
Octave thực thi mã và trả về kết quả sau:
Area:
5.7500
Ví dụ 2
Tìm diện tích dưới đường cong: f (x) = x 2 cos (x) với −4 ≤ x ≤ 9.
Tạo tệp kịch bản và viết mã sau:
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Khi bạn chạy tệp, MATLAB vẽ biểu đồ -
Đầu ra được đưa ra dưới đây -
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
Sau đây là Octave tương đương với phép tính trên:
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));