MATLAB - Đại số

Cho đến nay, chúng ta đã thấy rằng tất cả các ví dụ đều hoạt động trong MATLAB cũng như GNU của nó, còn được gọi là Octave. Nhưng để giải các phương trình đại số cơ bản, cả MATLAB và Octave đều có chút khác biệt, vì vậy chúng tôi sẽ cố gắng trình bày MATLAB và Octave trong các phần riêng biệt.

Chúng ta cũng sẽ thảo luận về việc phân tích nhân tử và đơn giản hóa các biểu thức đại số.

Giải các phương trình đại số cơ bản trong MATLAB

Các solvehàm được sử dụng để giải các phương trình đại số. Ở dạng đơn giản nhất, hàm giải lấy phương trình được đặt trong dấu ngoặc kép làm đối số.

Ví dụ, hãy để chúng tôi giải cho x trong phương trình x-5 = 0

solve('x-5=0')

MATLAB sẽ thực hiện câu lệnh trên và trả về kết quả sau:

ans =
   5

Bạn cũng có thể gọi hàm giải quyết là -

y = solve('x-5 = 0')

MATLAB sẽ thực hiện câu lệnh trên và trả về kết quả sau:

y =
   5

Bạn thậm chí có thể không bao gồm vế phải của phương trình -

solve('x-5')

MATLAB sẽ thực hiện câu lệnh trên và trả về kết quả sau:

ans =
   5

Nếu phương trình liên quan đến nhiều ký hiệu, thì MATLAB theo mặc định giả định rằng bạn đang giải cho x, tuy nhiên, hàm giải có dạng khác:

solve(equation, variable)

ở đâu, bạn cũng có thể đề cập đến biến.

Ví dụ, chúng ta hãy giải phương trình v - u - 3t 2 = 0, với v. Trong trường hợp này, chúng ta nên viết:

solve('v-u-3*t^2=0', 'v')

MATLAB sẽ thực hiện câu lệnh trên và trả về kết quả sau:

ans =
   3*t^2 + u

Giải các phương trình đại số cơ bản trong quãng tám

Các roots hàm được sử dụng để giải phương trình đại số trong Octave và bạn có thể viết các ví dụ trên như sau:

Ví dụ, hãy để chúng tôi giải cho x trong phương trình x-5 = 0

roots([1, -5])

Octave sẽ thực hiện câu lệnh trên và trả về kết quả sau:

ans = 5

Bạn cũng có thể gọi hàm giải quyết là -

y = roots([1, -5])

Octave sẽ thực hiện câu lệnh trên và trả về kết quả sau:

y = 5

Giải phương trình bậc hai trong MATLAB

Các solvehàm cũng có thể giải các phương trình bậc cao. Nó thường được sử dụng để giải các phương trình bậc hai. Hàm trả về gốc của phương trình trong một mảng.

Ví dụ sau giải phương trình bậc hai x 2 -7x +12 = 0. Tạo tệp script và nhập đoạn mã sau:

eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

The first root is: 
   3
The second root is: 
   4

Giải phương trình bậc hai trong quãng tám

Ví dụ sau đây giải phương trình bậc hai x 2 -7x +12 = 0 trong Octave. Tạo một tệp kịch bản và nhập mã sau:

s = roots([1, -7, 12]);

disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

The first root is: 
   4
The second root is: 
   3

Giải các phương trình bậc cao trong MATLAB

Các solvehàm cũng có thể giải các phương trình bậc cao. Ví dụ, chúng ta hãy giải một phương trình bậc ba là (x-3) 2 (x-7) = 0

solve('(x-3)^2*(x-7)=0')

MATLAB sẽ thực hiện câu lệnh trên và trả về kết quả sau:

ans =
   3
   3
   7

Trong trường hợp phương trình bậc cao, căn dài chứa nhiều số hạng. Bạn có thể nhận được giá trị số của các gốc như vậy bằng cách chuyển đổi chúng thành gấp đôi. Ví dụ sau đây giải phương trình bậc 4 x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.

Tạo tệp kịch bản và nhập mã sau:

eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
disp('The third root is: '), disp(s(3));
disp('The fourth root is: '), disp(s(4));

% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));

Khi bạn chạy tệp, nó trả về kết quả sau:

The first root is: 
6.630396332390718431485053218985
 The second root is: 
1.0597804633025896291682772499885
 The third root is: 
- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i
 The fourth root is: 
- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i
Numeric value of first root
   6.6304
Numeric value of second root
   1.0598
Numeric value of third root
   -0.3451 - 1.0778i
Numeric value of fourth root
   -0.3451 + 1.0778i

Xin lưu ý rằng hai căn cuối cùng là số phức.

Giải các phương trình bậc cao hơn trong quãng tám

Ví dụ sau đây giải phương trình bậc 4 x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.

Tạo tệp kịch bản và nhập mã sau:

v = [1, -7,  3, -5, 9];
s = roots(v);

% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));

Khi bạn chạy tệp, nó trả về kết quả sau:

Numeric value of first root
 6.6304
Numeric value of second root
-0.34509 + 1.07784i
Numeric value of third root
-0.34509 - 1.07784i
Numeric value of fourth root
 1.0598

Giải hệ phương trình trong MATLAB

Các solveHàm cũng có thể được sử dụng để tạo ra các nghiệm của hệ phương trình có nhiều hơn một biến. Hãy để chúng tôi lấy một ví dụ đơn giản để chứng minh công dụng này.

Hãy để chúng tôi giải các phương trình -

5x + 9y = 5

3x - 6y = 4

Tạo tệp kịch bản và nhập mã sau:

s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

ans =
   22/19
ans =
   -5/57

Theo cách tương tự, bạn có thể giải các hệ thống tuyến tính lớn hơn. Hãy xem xét tập hợp các phương trình sau:

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Giải hệ phương trình trong quãng tám

Chúng ta có một cách tiếp cận hơi khác để giải hệ phương trình tuyến tính 'n' với ẩn số 'n'. Hãy để chúng tôi lấy một ví dụ đơn giản để chứng minh công dụng này.

Hãy để chúng tôi giải các phương trình -

5x + 9y = 5

3x - 6y = 4

Hệ phương trình tuyến tính như vậy có thể được viết dưới dạng phương trình ma trận đơn Ax = b, trong đó A là ma trận hệ số, b là vectơ cột chứa vế phải của phương trình tuyến tính và x là vectơ cột biểu diễn nghiệm như được hiển thị trong chương trình dưới đây -

Tạo tệp kịch bản và nhập mã sau:

A = [5, 9; 3, -6];
b = [5;4];
A \ b

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

ans =

   1.157895
  -0.087719

Theo cách tương tự, bạn có thể giải các hệ thống tuyến tính lớn hơn như được đưa ra bên dưới:

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Mở rộng và Thu thập các phương trình trong MATLAB

Các expandcollecthàm mở rộng và thu thập một phương trình tương ứng. Ví dụ sau minh họa các khái niệm -

Khi bạn làm việc với nhiều hàm tượng trưng, ​​bạn nên khai báo rằng các biến của bạn là biểu tượng.

Tạo tệp kịch bản và nhập mã sau:

syms x   %symbolic variable x
syms y   %symbolic variable x
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
 
% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

ans =
   x^2 + 4*x - 45
ans =
   x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
   2*cos(x)*sin(x)
ans =
   cos(x)*cos(y) - sin(x)*sin(y)
ans =
   x^4 - 7*x^3
ans =
   x^6 - 8*x^5 + 15*x^4

Mở rộng và thu thập phương trình trong quãng tám

Bạn cần phải có symbolic gói, cung cấp expandcollecthàm để mở rộng và thu thập một phương trình, tương ứng. Ví dụ sau minh họa các khái niệm -

Khi bạn làm việc với nhiều hàm tượng trưng, ​​bạn nên khai báo rằng các biến của bạn là biểu tượng nhưng Octave có cách tiếp cận khác để xác định các biến biểu tượng. Lưu ý việc sử dụngSinCos, cũng được định nghĩa trong gói biểu tượng.

Tạo tệp kịch bản và nhập mã sau:

% first of all load the package, make sure its installed.
pkg load symbolic

% make symbols module available
symbols

% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');

% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))
 
% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

ans =

-45.0+x^2+(4.0)*x
ans =

210.0+x^4-(43.0)*x^2+x^3+(23.0)*x
ans =

sin((2.0)*x)
ans =

cos(y+x)
ans =

x^(3.0)*(-7.0+x)
ans =

(-3.0+x)*x^(4.0)*(-5.0+x)

Thừa số hóa và đơn giản hóa biểu thức đại số

Các factor hàm thừa số hóa một biểu thức và simplifyhàm đơn giản hóa một biểu thức. Ví dụ sau thể hiện khái niệm -

Thí dụ

Tạo tệp kịch bản và nhập mã sau:

syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])
simplify((x^4-16)/(x^2-4))

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

ans =
   (x - y)*(x^2 + x*y + y^2)
ans =
   [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]
ans =
   x^2 + 4