You are on page 1of 21

GIẢI TOÁN CAO CẤP

Giảng viên: TS. Nguyễn Nhựt Tiến


Khoa Kỹ Thuật Điện
Trường Bách Khoa
Email: nntien@ctu.edu.vn
1. Biểu thức đại số
2. Phương trình đại số cơ bản
3. Phương trình bậc cao
4. Hệ phương trình
5. Biểu diễn hàm số dưới dạng chuỗi
6. Giới hạn
7. Đạo hàm
8. Giải phương trình vi phân thường
9. Hệ phương trình vi phân
10. Tích phân
11. Tích phân nhiều lớp
12. Tích phân số
2020/9/22 2
1. Biểu thức đại số

a. Triển khai biểu thức đại số


Lệnh expand(f(x)) dùng để khai triển biểu thức đại số
Ví dụ:
expand((x - 1)*(x + 4))
ans =
x^2 + 3*x - 4

expand(cos(x + y))
ans =
cos(x)*cos(y)-sin(x)*sin(y)

2020/9/22 3
1. Biểu thức đại số

b. Phân tích thành nhân tử


Lệnh factor(f(x)) được dùng để phân tích biểu thức đại số thành nhân tử.
Ví dụ:
factor(x^2 - y^2)
ans =
(x + y)*(x – y)
c. Rút gọn biểu thức
Lệnh simplify(f(x)) được dùng để rút gọn biểu thức.
Ví dụ:
simplify((x^4 - 81)/(x^2 - 9)) simplify(exp(2*log(3*x)))
ans = ans =
x^2 + 9 9*x^2

2020/9/22 4
2. Phương trình đại số cơ bản

a. Khai báo biến


Lệnh syms được dùng để khai báo các biến có trong biểu thức toán học
Ví dụ:
syms a b c x
y = a*x^2 + b*x + c
b. Giải phương trình
Lệnh solve(eqns) được dùng để giải phương trình đại số
Ví dụ:
syms x
eqn = x + 3 == 0
solve(eqn)

2020/9/22 5
2. Phương trình đại số cơ bản

b. Giải phương trình


Matlab có thể giải phương trình có cả hằng số
Ví dụ:
syms a x
eqn = a*x^2 - 2 == 0
solve(eqn)

2020/9/22 6
3. Phương trình bậc cao

Lệnh solve cũng được dùng để giải phương trình bậc cao. Do phương trình bậc cao
có nhiều nghiệm nên các nghiệm có thể được tách riêng ra từng phần.
Ví dụ: Giải phương trình sau và vẽ đồ thị phương trình bằng lệnh fplot
x2 - 6x - 12 = 0
syms x
eqn = x^2 - 6*x - 12 == 0
x = solve(eqn)
x1 = x(1)
x2 = x(2)

fplot(@(x) x.^2 - 6*x -12, [-2, 8])

2020/9/22 7
3. Phương trình bậc cao

Ví dụ: Giải phương trình sau và vẽ đồ thị:


x4 – 5x3 + 4x2 – 5x + 6 = 0 với -10 < x < 10
syms x
eqn = x^4 - 5*x^3 + 4*x^2 - 5*x + 6 == 0
x = solve(eqn, 'MaxDegree', 4)
x1 = double(x(1))
x2 = double(x(2))
x3 = double(x(3))
x4 = double(x(4))

fplot(@(x) x^4 - 5*x^3 + 4*x^2 - 5*x + 6, [-10 10])

2020/9/22 8
4. Hệ phương trình

Lệnh solve([eqn1, eqn2,eqn3,…]) được dùng để giải hệ phương trình. Kết quả
được lưu vào biến đóng vai trò như một mảng. Để xem kết quả lần lượt gọi các biến
Ví dụ: Giải hệ phương trình sau:  w + x + 4 y + 3 z = 5
 2w + 3x + y − 2 z = 1


w + 2 x − 5 y + 4 z = 3

 w − 3z = 9
syms w x y z
eqn1 = w + x + 4*y +3*z == 5
eqn2 = 2*w + 3*x + y - 2*z == 1
eqn3 = w + 2*x - 5*y + 4*z == 3 wSol = sol.w
xSol = sol.x
eqn4 = w - 3*z == 9
ySol = sol.y
sol = solve([eqn1, eqn2, eqn3, eqn4]); zSol = sol.z

2020/9/22 9
4. Hệ phương trình

Lệnh vpasolve được dùng để giải phương trình toán cao cấp.
Ví dụ: Giải hệ phương trình:
 y = 32 x

 y = 5 x
+1

syms x y
eqn1 = 3^(2*x) - y == 0
eqn2 = 5^x -y == -1
sol = vpasolve([eqn1, eqn2], [x, y]);
xSol = sol.x
ySol = sol.y

2020/9/22 10
5. Biểu diễn hàm số dưới dạng chuỗi

Chuỗi Taylor được sử dụng phổ biến để biểu diễn hàm số dưới dạng chuỗi. Trong đó:
+ taylor(f, x) trả lại đa thức Maclaurin bậc 5 xấp xỉ với hàm f.
+ taylor(f, 'Order’, n) trả lại đa thức Maclaurin bậc n-1.
Ví dụ: Triển khai chuỗi sinx ở bậc 19:

syms x
s = taylor(sin(x),'Order', 20)

2020/9/22 11
6. Giới hạn

Lệnh limit(f,a) được dùng để tính giới hạn của f khi x→a.
Ví dụ: Tính giới hạn khi x→ 3: f = 2 x + 1 , g = x 2 + 1
x−2
syms x
f = (2*x + 1)/(x - 2) limit(f, 3)
g = x^2 + 1 limit(g, 3)
Khi tính tới hạn: Nếu a = 0 thì mặc định không cần nhập. Nếu a→ thì nhập inf.
Ví dụ:Tính giới hạn khi x→:
f = x2 + x − x
syms x
f = (sqrt(x^2 + x) - x)
limit(f, inf)

2020/9/22 12
6. Giới hạn

Nếu tính giới hạn trái hoặc phải thì lần lượt thêm left hoặc right vào lệnh limit như
lim− ( f ( x ) , x, a, 'left' ) , lim+ ( f ( x ) , x, a, 'right' )
sau:
x →a x →a
x −3
Ví dụ: Tính giới hạn sau: lim
x →3 x − 3

syms x
f = (x - 3)/abs(x-3)
limit(f,x,3, 'left')

limit(f,x,3, 'right')

2020/9/22 13
7. Đạo hàm

Lệnh diff(f,n) được dùng để tính đạo hàm bậc n của hàm số f.
Ví dụ: Chứng tỏ rằng:
f =x 2
thõa df
− + 2 x = 0
syms x dx
f = x^2;
g = 2*x;
h = diff(f);
-h + g

2020/9/22 14
8. Giải phương trình vi phân thường

Lệnh dsolve(‘equ’,’cond1’,’cond2’…) được dùng để giải phương trình vi phân.


Ví dụ: Giải phương trình vi phân sau và vẽ đồ thị nghiệm với -50 < x <50
d 2 f sin x  2  2 cos x
− 1 − 2  − = 0, f ( 0 ) = 2, f ' (0) = 0
dx 2
x  x  x 2

syms f(x)
eqn = diff(f,x,2) - sin(x)/x*(1 - 2/x^2) - 2*cos(x)/x^2 == 0;
Df = diff(f,x);
cond = [f(0) == 2, Df(0) == 0];
fSol(x) = dsolve(eqn,cond)

fplot(fSol,[-50 50]), grid on

2020/9/22 15
9. Hệ phương trình vi phân

Lệnh dsolve được dùng để giải từng phương trình của hệ.
Ví dụ: Giải hệ phương trình vi phân sau:
d 2 x dx 1 dp 1 1
2
+ + x = 0, = − p − x, x ( 0 ) = 4, x ( 0 ) = 0, p (0) = 0
dt dt 4 dt 2 4
syms x(t) p(t)
eqn1 = diff(x,t,2) + diff(x,t) + 1/4*x == 0;
eqn2 = diff(p,t) == -1/2*p - 1/4*x;
Dx = diff(x,t);
cond = [x(0) == 4, Dx(0) == 0, p(0) == 0];
sol = dsolve([eqn1,eqn2],cond);
xSol = sol.x
pSol = sol.p

2020/9/22 16
10. Tích phân

a. Tích phân bất định


Tích phân bất định của hàm f được biểu thị như sau: int(f)
Ví dụ: Tính tích phân sau:  x n dx

syms x n
f = x^n;
int(f)

2020/9/22 17
10. Tích phân

b. Tích phân xác định


Khi tính tích phân xác định thì dùng lệnh: int(f,a,b)
Ví dụ: Tính diện tích giới hạn bởi đường cong f = x2cosx và trục hoành trong khoảng
-6 < x < 6

syms x
f = x^2*cos(x);
double(int(f,-6,6))

2020/9/22 18
11. Tích phân nhiều lớp

Tích phân nhiều lớp được tính bằng cách lồng các hàm int vào nhau.
Ví dụ: Tính tích phân sau:
xyz 5 dxdydz

syms x y z
f = x*y*z^5;
int(int(int(f,x),y),z)

2020/9/22 19
12. Tích phân số

Matlab sử dụng phương pháp tích phân dạng bậc thang với lệnh trapz(x,y) để tính
tích phân số.
Ví dụ: Tính tích phân sau bằng phương pháp hình thang trong trường hợp 10 và 20
bậc chẵn. Tính sai số trong từng trường hợp.
2
0
x 2 dx
syms x
f = x^2;
F0 = int(f,0,2)
x = linspace(0,2,10);
x = linspace(0,2,20);
y = x.^2;
z = x.^2;
F1 = trapz(x,y); F2 = trapz(x,z);
err10 = double(100*abs((F0 - F1)/F0)); err20 = double(100*abs((F0 - F2)/F0));

2020/9/22 20
Thank you for your attention!

You might also like