You are on page 1of 41

ĐẠI HỌC QUỐC GIA TP.

HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC ỨNG DỤNG

BÁO CÁO
BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH

ĐỀ TÀI 2

Giảng viên hướng dẫn: VÕ TRẦN AN


Nhóm: L01 – 02
Ngày 11 tháng 05 năm 2021
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC ỨNG DỤNG

BÁO CÁO
BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH

ĐỀ TÀI 2

Nhóm 2: 1.PHAN ĐÌNH ẤN MSSV: 2010144


2.BÙI ĐỨC ANH MSSV: 2010108
3.NGUYỄN NHẬT HUY MSSV: 2010191
4. DƯƠNG HẢI ĐĂNG MSSV: 2010217
5. CHÂU GIA HÂN MSSV: 2011167
6. HÀ DUY KHANG MSSV: 2010313
7. PHẠM PHONG VŨ MSSV: 2010797
8. TỐNG PHƯỚC THỊNH MSSV: 2010657
9. NGUYỄN HOÀNG ANH MSSV: 2010117
10. NGUYỄN HỮU QUANG VINH MSSV: 2010553
11. TRẦN MẠNH KHẢI MSSV: 1913785
12. NGUYỄN PHẠM KHÁNH DUY MSSV: 2010185

Tp. HCM, 05/2021


MỤC LỤC

TRANG

MỤC LỤC

Chương 1: CƠ SỞ LÝ THUYẾT PHƯƠNG PHÁP CHIA ĐÔI


1.1. MÔ TẢ PHƯƠNG PHÁP ............................................................................................ 4
1.2. SỰ HỘI TỤ CỦA PHƯƠNG PHÁP VÀ SAI SỐ

1.2.1. Sự hội tụ .............................................................................................................. 5

1.2.2. Sai số ................................................................................................................... 5


Chương 2: NỘI DUNG BÀI LÀM
2.1. BÀI 8.6

2.1.1.a. Các bước làm cụ thể câu a ............................................................................... 6


2.1.2.a. Code Matlab câu a ............................................................................................ 9

2.1.3.a. Kết quả câu a .................................................................................................. 10

2.1.1.b. Các bước làm cụ thể câu b ............................................................................. 10

2.1.2.b. Code Matlab câu b ......................................................................................... 13

2.1.3.b. Kết quả câu b ................................................................................................. 14

2.2. BÀI 8.7

2.2.1. Các bước làm cụ thể.......................................................................................... 15

2.2.2. Code Matlab ...................................................................................................... 18

2.2.3. Kết quả .............................................................................................................. 19

2.3. BÀI 8.9

2.3.1. Các bước làm cụ thể.......................................................................................... 20

2.3.2. Code Matlab ...................................................................................................... 24

2.3.3. Kết quả .............................................................................................................. 25

1
2.4. BÀI 8.12

2.4.1. Các bước làm cụ thể.......................................................................................... 26

2.4.2. Code Matlab ...................................................................................................... 29

2.4.3. Kết quả .............................................................................................................. 30

2.5. BÀI 8.13

2.5.1.a. Các bước làm cụ thể câu a ............................................................................. 32

2.5.1.b. Các bước làm cụ thể câu b ............................................................................. 35

2.5.2. Code Matlab ...................................................................................................... 35

2.5.3. Kết quả .............................................................................................................. 37

Chương 3: KẾT LUẬN

2
NỘI DUNG ĐỀ TÀI

Yêu cầu :

Sử dụng phương pháp chia đôi (bisection method) để giải các bài 8.6, 8.7,
8.9, 8.12, 8.13 page 217, khoảng cách ly nghiệm (isolated interval containing root)
được xác định bằng phương pháp hình học sao cho sai số nhỏ hơn 10-4.

3
Chương 1: CƠ SỞ LÝ THUYẾT PHƯƠNG PHÁP CHIA ĐÔI

1.1. MÔ TẢ PHƯƠNG PHÁP

Giả sử (a,b) là khoảng cách ly nghiệm của phương trình . Tìm nghiệm thực
gần đúng của phương trình trong (a,b), sai số .

Ta tìm nghiệm trên bằng phương pháp sau :

- Chọn x0 là điểm giữa [a,b] làm nghiệm gần


y
đúng.

 Nếu là nghiệm đúng.


Dừng. x
 Nếu và sai số thì
là nghiệm gần đúng cần tìm với sai số Dừng.
 Nếu và sai số thì xét dấu :
Nếu thì khoảng cách ly nghiệm mới ( )
Nếu thì khoảng cách ly nghiệm mới ( )
 Lặp lại phương pháp chia đôi với khoảng cách ly nghiệm mới
 Quá trình lặp lần lượt cho ta các nghiệm gần đúng , ,… Và kết thúc khi
tìm được với sai số

4
1.2. SỰ HỘI TỤ CỦA PHƯƠNG PHÁP VÀ SAI SỐ :

1.2.1. Sự hội tụ:

Dãy đơn điệu tăng và bị chặn bởi b, dãy đơn điệu giảm
và bị chặn bởi a. Mặt khác dãy dương và giảm dần về 0, như vậy khi ta
có:

Do tính liên tục của hàm và ta có

Suy ra , hay chính chính là nghiệm của phương trình

1.2.1. Sai số:

Sai số sau n lần lặp : (Phương pháp chia đôi)

Sai số tính theo công thức sai số tổng quát :

Với

5
Chương 2: NỘI DUNG BÀI LÀM
2.1. Bài 8.6
Đề bài:

Các phản ứng hóa học sau xảy ra trong 1 hệ thống kín:

2A+B C (1)

A+D C (2)

Ở trạng thái cân bằng, chúng có thể được tính bằng các công thức:

K1 =

K2 =

Với ci là nồng độ của các chất thành phần i. Nếu x1 và x2 lần lượt là số mol của C
trong các phản ứng 1 và 2. Sử dụng phương pháp tương tự bài 8.5 để đưa ra mối quan hệ
về nồng độ ban đầu của các chất. Sử dụng phương pháp chia đôi tìm x1, x2 biết K1=4.10-4,
K2=3,7.10-2, ca,0=50, cb,0=20, cc,0=5, cd,0=10.

2.1.1.a. Các bước làm cụ thể :

Bước 1 : Tìm hàm f(x):


Theo đề bài ta có:

6
Bước 2 : Tìm khoảng cách ly nghiệm của hàm f(x):

1) Nhập hàm f  x  trong TABLE của MTBT

2) Chọn khoảng chạy cho f  x 

3) Xác định khoảng cách ly nghiệm (Qua đó f  x  đổi dấu):

Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

Bước 3 : Tìm nghiệm gần đúng của bằng phương pháp chia đôi

1) Ta có: < 0 và

2) Sử dụng máy tính cầm tay để xác định dấu của trên khoảng cách ly
nghiệm:

Ta thấy: nên ta sẽ có bảng xét dấu của như sau:

7
x 4,5 5

>0

Suy ra: =
3) Ta có được bảng số liệu như sau:

n a b

0 4,5 5 4,75 - 0,1048


1 4,75 5 4,875 + 0,0289
2 4,75 4,875 4,8125 - 0,0352
3 4,8125 4,875 155/32 - 0,0032
4 155/32 4,875 311/64 + 0,0125
5 155/32 311/64 621/128 + 0,0046
6 155/32 621/128 1241/256 + 0,0007
7 155/32 1241/256 2481/512 - 0,0012
8 2481/512 1241/256 4963/1024 - 0,0003
9 4963/1024 1241/256 4,8472 + 0,0003
10 4963/1024 4,8472 4,8469 - 4,9.10-5 < 10-4

Vậy 4,8469

8
2.1.2.a. Code MatLab:
function Use_86_x1
%+ n: Số lần lặp thực tế
%+ a: Giá trị biên bên trái
%+ b: Giá trị biên bên phải
%+ x: Nghiệm của phương trình
%+ f: Giá trị của hàm f(x)
%+ e: Sai số
format long;

%Thiết lập các giá trị ban đầu


N = 100; %Số lần lặp tối đa
eps = 1.0E-4; %Sai số cho phép
a = input('Nhap gia tri bien trai'); b = input('Nhap gia tri bien
phai'); %Gia tri nghiem trong khoang [a,b]
err = eps+0.1; %Sai số
n = 0; %Thứ tự lần lặp

%Trang trí kết quả


fprintf('%3c %10c %17c %18c %18c %20c\n',['n' 'a' 'b' 'x' 'f'
'e']);
fprintf('--------------------------------------------------------
-----------------------------------------\n');
syms x

while (n<N&&err>eps)
x1 = (a + b)/2;
a2 = a; b2 = b; %Dùng để thể hiện bảng kết quả
m = subs(diff(f(x)),x,a);
if subs(f(x),x,a)*subs(f(x),x,x1)>0 %Nghiệm không nằm trong
khoảng [a,c]
a = x1;
else %Nghiệm thuộc [a,c]
b = x1;
end

err = abs(subs(f(x),x,x1)/m);
n = n + 1;
%Xuất kết quả ra màn hình
fprintf('%3d %15.9f %17.9f %18.9f %19.9f %20.9f\n',[n a2 b2
x1 subs(f(x),x,x1) err]);
end

9
disp('** Vay so mol cua C trong phan ung 1 la: ' +
string(round(x1,4))+ ' ' + '(mol)')

function fx = f(x)
K1 = 4.0E-4;
Ca0 = 50;
Cb0 = 20;
Cc0 = 5;
fx = (Cc0+x)/((Ca0-2*x)^2*(Cb0-x)) - K1;
% khoảng cách li nghiệm [4,5:5]
2.1.3.a. Kết quả:

2.1.1.b. Các bước làm cụ thể :

Bước 1 : Tìm hàm f(x):


Theo đề bài ta có:

Bước 2 : Tìm khoảng cách ly nghiệm của hàm f(x):

1) Nhập hàm f  x  trong TABLE của MTBT

10
2) Chọn khoảng chạy cho f  x 

3) Xác định khoảng cách ly nghiệm (Qua đó f  x  đổi dấu):

Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

Bước 3 : Tìm nghiệm gần đúng của bằng phương pháp chia đôi

1) Ta có: > 0 và

2) Sử dụng máy tính cầm tay để xác định dấu của trên khoảng cách li
nghiệm:

Ta thấy: nên ta sẽ có bảng xét dấu của như sau:

11
x 4 4,5

>0

Suy ra: =
3) Ta có được bảng số liệu như sau:

n a b

0 4 4,5 4,25 + 0,1881


1 4,25 4,5 35/8 - 0,0440
2 35/8 4,5 71/16 - 0,0212
3 35/8 71/16 141/32 + 0,0106
4 141/32 71/16 283/64 - 0,0052
5 141/32 283/64 565/128 + 0,0026
6 565/128 283/64 1131/256 - 0,0013
7 565/128 1131/256 2261/512 + 0,0007
8 2261/512 1131/256 4523/1024 - 0,0003
9 2261/512 4523/1024 9045/2048 + 0,0002
10 9045/2048 4523/1024 4,4167 - 2,1.10-6 < 10-4

Vậy 4,4167

12
2.1.2.b. Code MatLab:

function Use_86_x2
%+ n: Số lần lặp thực tế
%+ a: Giá trị biên bên trái
%+ b: Giá trị biên bên phải
%+ x: Nghiệm của phương trình
%+ f: Giá trị của hàm f(x)
%+ e: Sai số
format long;

%Thiết lập các giá trị ban đầu


N = 100; %Số lần lặp tối đa
eps = 1.0E-4; %Sai số cho phép
a = input('Nhap gia tri bien trai'); b = input('Nhap gia tri bien
phai'); %Gia tri nghiem trong khoang [a,b]
err = eps+0.1; %Sai so
n = 0; %Thứ tự lần lặp

%Trang trí kết quả


fprintf('%3c %10c %17c %18c %18c %20c\n',['n' 'a' 'b' 'x' 'f'
'e']);
fprintf('--------------------------------------------------------
-----------------------------------------\n');
syms x

while (n<N&&err>eps)
x1 = (a + b)/2;
a2 = a; b2 = b; %Dùng để thể hiện bảng kết quả
m = subs(diff(f(x)),x,a);
if subs(f(x),x,a)*subs(f(x),x,x1)>0 %Nghiệm không nằm trong
khoảng [a,c]
a = x1;
else %Nghiệm thuộc [a,c]
b = x1;
end

err = abs(subs(f(x),x,x1)/m);
n = n + 1;
%Xuất kết quả ra màn hình

13
fprintf('%3d %15.9f %17.9f %18.9f %19.9f %20.9f\n',[n a2 b2
x1 subs(f(x),x,x1) err]);
end
disp('** Vay so mol cua C trong phan ung 1 la: ' +
string(round(x1,4))+ ' ' + '(mol)')

function fx = f(x)
K2 = 3.7E-2;
Ca0 = 50;
Cc0 = 5;
Cd0 = 10;
fx = (Cc0+x)/((Ca0-x)*(Cd0-x)) - K2;
% Khoảng cách li nghiệm [4:4,5]
2.1.3.b. Kết quả:

2.2. Bài 8.7:


Đề bài:

Phương trình trạng thái Redlich – Kwong được cho bởi :

với R là hằng số chất khí [ = 0.518 kJ/(kg.K) ], T là nhiệt độ tuyệt đối (K), p là áp suất
tuyệt đối (kPa) và v là thể tích khí trong 1 kg ( m3 / kg ). Các thông số a và b được tính
bởi :

14
với là áp suất tới hạn (kPa) và là áp suất tới hạn (K). Là một kĩ sư hóa học bạn được
yêu cầu xác định lượng metan lỏng (CH4) ( =4600 kPa và =191 K) có thể chứa trong
một thùng có thể tích 3 trong điều kiện nhiệt độ và áp suất 65,000kPa. Sử dụng
một phương pháp xác định nghiệm theo ý muốn để xác định v và từ đó tính lượng CH4
lỏng chứa trong thùng.

2.2.1. Các bước làm cụ thể :

Bước 1 : Tìm hàm f(x):


Theo đề bài ta có:

Mà:

Vậy đặt

Bước 2 : Tìm khoảng cách ly nghiệm của hàm f(x):

1) Nhập hàm f  x  trong TABLE của MTBT

2) Chọn khoảng chạy cho f  x 

3) Xác định khoảng cách ly nghiệm (Qua đó f  x  đổi dấu):

15
Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

Bước 3 : Tìm nghiệm gần đúng của bằng phương pháp chia đôi

1) Ta có: > 0 và

2) Sử dụng máy tính cầm tay để xác định dấu của trên khoảng cách li
nghiệm:

16
Ta thấy: nên ta sẽ có bảng xét dấu của như
sau:

x 0,002 0,004

<0

Suy ra: =
3) Ta có được bảng số liệu như sau:

17
n a b
0 0,002 0, 004 0,003 - 0,001309933
1 0,0025 0,003 0,0025 + 0,000777843
2 0,0025 0,003 0,00275 + 0,000097839  104

Vậy, với n = 2, ta lấy nghiệm

x2  0,00275  v  0,00275  m3 / kg   mme tan 


3
1090,9091  kg  `.
v
2.2.2. Code MatLab:
function Use_87
%+ n: Số lần lặp thực tế
%+ a: Giá trị biên bên trái
%+ b: Giá trị biên bên phải
%+ x: Nghiệm của phương trình
%+ f: Giá trị của hàm f(x)
%+ e: Sai số
format long;

%Thiết lập các giá trị ban đầu


N = 100; %Số lần lặp tối đa
eps = 1.0E-4; %Sai số cho phép
a = input('Nhap gia tri bien trai'); b = input('Nhap gia tri bien
phai'); %Gia tri nghiem trong khoang [a,b]
err = eps+0.1; %Sai so
n = 0; %Thứ tự lần lặp
V = 3;

%Trang trí kết quả


fprintf('%3c %10c %17c %18c %18c %20c\n',['n' 'a' 'b' 'x' 'f'
'e']);
fprintf('--------------------------------------------------------
-----------------------------------------\n');
syms x

while (n<N&&err>eps)
x1 = (a + b)/2;
a2 = a; b2 = b; %Dùng để thể hiện bảng kết quả

18
m = abs(subs(diff(f(x)),x,b));% Hàm f''(x) luôn âm trong
khoảng đó với là f'(a) vs f'(b) < 0
if subs(f(x),x,a)*subs(f(x),x,x1)>0 %Nghiệm không nằm trong
khoảng [a,c]
a = x1;
else %Nghiệm thuộc [a,c]
b = x1;
end

err = abs(subs(f(x),x,x1))/m;
n = n + 1;
%Xuất kết quả ra màn hình
fprintf('%3d %15.9f %17.9f %18.9f %19.9f %20.9f\n',[n a2 b2
x1 subs(f(x),x,x1) err]);
end
disp('Luong Ch4 long chua trong thung la: ' + string(V/x1) + ' '
+ '(kg)')

function fx = f(x)
R = 0.518;
Pc = 4600;
Tc = 191;
T = 233;
P = 65000;
a = (0.427*R^2*Tc^2.5)/Pc;
b = 0.0866*R*(Tc/Pc);
fx = R*T/(x-b)-a/(x*(x+b)*T^0.5) - P;
% khoảng cách li nghiệm [0.002:0.004]
2.2.3. Kết quả:

2.3. Bài 8.9:


Đề bài:

19
Thể tích V của chất lỏng trong bình hình cầu có bán kính r và độ cao h được tính
bằng:

V=

Xác định h biết r = 1(m) và V = 0,5 (m3)

2.3.1. Các bước làm cụ thể:

Bước 1 : Tìm hàm f(x):

Theo đề bài ta có:

V=

Thay r=1, V=0.5, ta được: 0.5 =

Vậy ta tìm được hàm f(x):

f(x)=

Bước 2 : Tìm khoảng cách ly nghiệm của hàm f(x):

1) Nhập hàm f  x  trong TABLE của MTBT

2) Chọn khoảng chạy cho f  x 

3) Xác định khoảng cách ly nghiệm (Qua đó f  x  đổi dấu): và

 Trường hợp 1:

Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

20
 Trường hợp 2:

Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

Bước 3 : Tìm nghiệm gần đúng của bằng phương pháp chia đôi

1) Ta có: < 0 và
> 0 và

2) Sử dụng máy tính cầm tay để xác định dấu của trên khoảng cách li
nghiệm: và
 Trường hợp 1:

Ta thấy: nên ta sẽ có bảng xét dấu của như sau:

x 0,1 1

>0

21
Suy ra: =
 Ta có được bảng số liệu như sau:

n a b

0 0.1 1 0.55 + 0.462561703


1 0.1 0.55 0.325 - 0.3419613233
2 0.325 0.55 0.4375 + 0.007968579
3 0.325 0.4375 0.38125 - 0.05928843474
4 0.38125 0.4375 131/320 - 0.02339115816
5 131/320 0.4375 271/640 - 0.007928867
6 271/640 0.4375 551/1280 - 0.000660147
7 551/1280 0.4375 1111/2560 + 0.002873748
8 551/1280 1111/2560 2213/5120 + 0.001108141
9 551/1280 2213/5120 4417/10240 + 0.000227283
10 551/1280 4417/10240 1765/4096 - 0.000212657
11 1765/4096 4417/10240 0.4311279297 + 0.000007267

Vậy 0,4311
 Trường hợp 2:

22
Ta thấy: nên ta sẽ có bảng xét dấu của như sau:

x 2,5 3

<0

Suy ra: =
 Ta có được bảng số liệu như sau:

n a b

0 2.5 3 11/4 + 0.3768427122


1 11/4 3 23/8 + 0.08981629022
2 23/8 3 47/16 + 0.00819436
3 47/16 3 95/32 - 0.02445540605
4 47/16 95/32 189/64 - 0.008311881
5 47/16 189/64 377/128 - 0.000370154
6 47/16 377/128 753/256 + 0.003568352
7 753/256 377/128 1507/512 + 0.0015932026
8 1507/512 377/128 3015/1024 + 0.000611442
9 3015/1024 377/128 2.944824219 + 0.000122159
10 2.944824219 377/128 2.945068359 - 0.000122105
11 2.944824219 2.945068359 2.944946289 - 0.000000004
Vậy

23
2.3.2. Code MatLab:

function Use_89
%+ n: Số lần lặp thực tế
%+ a: Giá trị biên bên trái
%+ b: Giá trị biên bên phải
%+ x: Nghiệm của phương trình
%+ f: Giá trị của hàm f(x)
%+ e: Sai số
format long;

%Thiết lập các giá trị ban đầu


N = 100; %Số lần lặp tối đa
eps = 1.0E-4; %Sai số cho phép
a = input('Nhap gia tri bien trai'); b = input('Nhap gia tri bien
phai'); %Gia tri nghiem trong khoang [a,b]
err = eps+0.1; %Sai so
n = 0; %Thứ tự lần lặp

%Trang trí kết quả


fprintf('%3c %10c %17c %18c %18c %20c\n',['n' 'a' 'b' 'x' 'f'
'e']);
fprintf('--------------------------------------------------------
-----------------------------------------\n');
syms x;

while (n<N&&err>eps)
x1 = (a + b)/2;
a2 = a; b2 = b; %Dùng để thể hiện bảng kết quả
m = abs(subs(diff(f(x)),x,a));
if subs(f(x),x,a)*subs(f(x),x,x1)>0 %Nghiệm không nằm trong
khoảng [a,c]
a = x1;
else %Nghiệm thuộc [a,c]
b = x1;
end

err = abs(subs(f(x),x,x1))/m;
n = n + 1;
%Xuất kết quả ra màn hình

24
fprintf('%3d %15.9f %17.9f %18.9f %19.9f %20.9f\n',[n a2 b2
x1 subs(f(x),x,x1) err]);
end
disp('** Vay do cao h trong binh cau la: ' + string(round(x1,4))+
' ' + '(m)')

function fx = f(x)
r = 1;
V = 0.5;
fx = (pi*x^2*(3*r-x))/3 - V;
% khoảng cách li nghiệm [0.1:1] + [2.5:3]
2.3.3. Kết quả:

25
2.4. Bài 8.12:
Đề bài:

Phương trình Ergun, được trình bày dưới đây, được sử dụng để mô tả dòng chảy
của chất lỏng qua một tầng được đóng gói. ∆p là độ giảm áp suất, p là khối lượng riêng
của chất lỏng, là vận tốc khối lượng (tốc độ dòng chảy khối lượng trên 1 đơn vị diện
tích mặt cắt ngang), là đường kính của các hạt trong lớp. là độ nhớt của chất lỏng, L
là chiều dài của lớp đệm và là phần rỗng của lớp đệm.

Với các giá trị tham số được liệt kê bên dưới, hãy tìm phần rỗng của lớp đệm.

2.4.1. Các bước làm cụ thể :

Bước 1 : Tìm hàm f(x):


Theo đề bài ta có:

(1)

Thay các dữ kiện vào phương trình (1) ta được:

26
Thay bằng x ta được:

Bước 2 : Tìm khoảng cách ly nghiệm của hàm f(x):

1) Nhập hàm f  x  trong TABLE của MTBT

2) Chọn khoảng chạy cho f  x 

3) Xác định khoảng cách ly nghiệm (Qua đó f  x  đổi dấu):

Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

Bước 3 : Tìm nghiệm gần đúng của bằng phương pháp chia đôi

1) Ta có: < 0 và

3x 2 1  x   x3 3 3x 2  2x 3 3
f '( x)  10   10 
1  x  1  x  20
2 2
20

27
2) Sử dụng máy tính cầm tay để xác định dấu của trên khoảng cách li
nghiệm:

Ta thấy: nên ta sẽ có bảng xét dấu của như sau:

x 0,4 0,5

>0

Suy ra: =
3) Ta có được bảng số liệu như sau:

28
n a b

0 0, 4 0,5 0, 45 - 0.017695986

1 0, 45 0,5 0, 475 + 0.014964898

2 0, 45 0, 475 0, 4625 + 0.000701279

3 0,45 0,4625 0,45625 - 0.005975466

4 0,45625 0,4625 0.459375 - 0.002558591

5 0.459375 0,4625 0,4609375 - 0.000931917


0.000138356
6 0.46171875 0,4625 0,46171875 -

7 0,46171875 0,4625 0,462109375 + 0.000253561

8 0,46171875 0,462109375 0,461914062 + 0.000057847

Vậy
2.4.2. Code MatLab:

function Use_812
%+ n: Số lần lặp thực tế
%+ a: Giá trị biên bên trái
%+ b: Giá trị biên bên phải
%+ x: Nghiệm của phương trình
%+ f: Giá trị của hàm f(x)
%+ e: Sai số
format long;

%Thiết lập các giá trị ban đầu


N = 100; %Số lần lặp tối đa
eps = 1.0E-4; %Sai số cho phép
a = input('Nhap gia tri bien trai'); b = input('Nhap gia tri bien
phai'); %Giá trị nghiệm trong khoảng [a,b]
err = eps+0.1; %Sai số
n = 0; %Thứ tự lần lặp

29
%Trang trí kết quả
fprintf('%3c %10c %17c %18c %18c %20c\n',['n' 'a' 'b' 'x' 'f'
'e']);
fprintf('--------------------------------------------------------
-----------------------------------------\n');
syms x;

while (n<N&&err>eps)
x1 = (a + b)/2;
a2 = a; b2 = b; %Dùng để thể hiện bảng kết quả
m = abs(subs(diff(f(x)),x,a));
if subs(f(x),x,a)*subs(f(x),x,x1)>0 %Nghiệm không nằm trong
khoảng [a,c]
a = x1;
else %Nghiệm thuộc [a,c]
b = x1;
end

err = abs(subs(f(x),x,x1))/m;
n = n + 1;
%Xuất kết quả ra màn hình
fprintf('%3d %15.9f %17.9f %18.9f %19.9f %20.9f\n',[n a2 b2
x1 subs(f(x),x,x1) err]);
end
disp('** Vay phan rong e cua lop dem la: ' + string(round(x1,4)))

function fx = f(x)
a = 1000;
b = 10;
fx = (b*x^3)/(1-x) - (150*(1-x))/a - 1.75;
% khoảng cách li nghiệm [0,4:0,5]
2.4.3. Kết quả:

30
2.5. Bài 8.13:
Đề bài:

Độ giảm áp suất trong một đoạn đường ống có thể được tính như sau:

Trong đó: + : sự giảm áp suất (Pa)

+ : hệ số ma sát

+ : chiều dài đường ống (m)

+ : khối lượng riêng của chất lưu trong ống (kg/m3)

+ : vận tốc dòng chảy (m/s)

+ : đường kính ống (m)

Đối với dòng chảy rối, từ phương trình Colebrook giúp ta có thể tính được hệ số
ma sát theo công thức:

Với : độ nhám (m) , : hệ số Renoylds:

31
Với : độ nhớt (N.s/m2).

(a) Xác định đối với 0.2 m ống dài nằm ngang nhẵn (trơn) với
, , , =40 m/s và =
0.0015 mm. Sử dụng phương pháp số để xác định hệ số ma sát. Lưu ý rằng
với ống trơn < 105, có thể thu được kết quả tốt hơn bằng công thức
Blasius, .
(b) Lặp lại tính toán nhưng đối với ống thép thương mại nhám hơn ( = 0.045
mm).

2.5.1.a. Các bước làm cụ thể :

Bước 1 : Tìm hàm f(x):


Theo đề bài ta có:

Đặt f = x ta có:

Bước 2 : Tìm khoảng cách ly nghiệm của hàm f(x):

1) Nhập hàm f  x  trong TABLE của MTBT

2) Chọn khoảng chạy cho f  x 

3) Xác định khoảng cách ly nghiệm ( Qua đó f  x  đổi dấu):

32
Hình 1: Nhập hàm f  x  Hình 2: Chọn khoảng chạy Hình 3: Kết quả

Bước 3 : Tìm nghiệm gần đúng của bằng phương pháp chia đôi

1) Ta có: > 0 và

2) Sử dụng máy tính cầm tay để xác định dấu của trên khoảng cách li
nghiệm:

33
Ta thấy: nên ta sẽ có bảng xét dấu của như
sau:

x 0,025 0,03

<0

Suy ra: =
3) Ta có được bảng số liệu như sau:

34
n a b

0 0,025 0.03 11/400 + 0,0016029


1 11/400 0,03 23/800 + 0,0002304

2 23/800 0,03 47/1600 - 0,0004241

3 23/800 47/1600 93/3200 - 0,00009640 <

Vậy

2.5.1.b. Tương tự câu a ta có bảng số liệu như sau:


n a b

0 0,04 0,045 17/400 - 0,001957


1 0,04 17/400 33/800 - 0,0005187

2 0,04 33/800 13/320 + 0,0001362

3 13/320 33/800 131/3200 - 0,0001818

4 13/320 131/3200 261/6400 - 0,00002302 <

Vậy

2.5.2. Code MatLab:

function Use_813_a
%+ n: Số lần lặp thực tế
%+ a: Giá trị biên bên trái
%+ b: Giá trị biên bên phải
%+ x: Nghiệm của phương trình
%+ f: Giá trị của hàm f(x)
%+ e: Sai số
format long;

%Thiết lập các giá trị ban đầu


N = 100; %Số lần lặp tối đa
eps = 1.0E-4; %Sai số cho phép

35
a = input('Nhap gia tri bien trai'); b = input('Nhap gia tri bien
phai'); %Gia tri nghiem trong khoang [a,b]
err = eps+0.1; %Sai so
n = 0; %Thứ tự lần lặp
ro = 1.23;
D = 0.005;
V = 40;
L = 0.2;

%Trang trí kết quả


fprintf('%3c %10c %17c %18c %18c %20c\n',['n' 'a' 'b' 'x' 'f'
'e']);
fprintf('--------------------------------------------------------
-----------------------------------------\n');
syms x;

while (n<N&&err>eps)
x1 = (a + b)/2;
a2 = a; b2 = b; %Dùng để thể hiện bảng kết quả
m = abs(subs(diff(f(x)),x,b));
if subs(f(x),x,a)*subs(f(x),x,x1)>0 %Nghiệm không nằm trong
khoảng [a,c]
a = x1;
else %Nghiệm thuộc [a,c]
b = x1;
end

err = abs(subs(f(x),x,x1))/m;
n = n + 1;
%Xuất kết quả ra màn hình
fprintf('%3d %15.9f %17.9f %18.9f %19.9f %20.9f\n',[n a2 b2
x1 subs(f(x),x,x1) err]);
end
disp('** Vay do giam ap suat = ' +string((x1*L*ro*V^2)/(2*D)) +'
' +'(Pa)')

function fx = f(x)
ro = 1.23;
muy = 1.79E-5;
D = 0.005;
V = 40;

36
e = 0.0015E-3;% Đối với câu b thì e = 0.045E-3
re = (ro*V*D)/muy;
fx = 1/x^0.5 + 2*log10(e/(3.7*D) + 2.51/(re*x^0.5));
%Khoảng cách li nghiệm câu a [0.025:0.03]
% câu b [0.04:0.045]

2.5.3. Kết quả:

37
Chương 3: KẾT LUẬN

 Xây dựng được lưu đồ giải thuật để giải quyết một bài toán phương pháp tính.
Viết được chương trình bằng "m file" trong MATLAB để giải quyết bài toán phương
pháp tính được đưa ra.

 Giải được các phương trình toán hoc bằng công cụ giải số trong MATLAB.

38
TÀI LIỆU THAM KHẢO

[1] LÊ THÁI THANH, Giáo trình phương pháp tính, NXB Đại học Quốc Gia TP Hồ Chí
Minh -2019
[2] Numerical_Methods_for_Engineers_7th_Edit

39

You might also like