Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 125 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
125
Dung lượng
3,47 MB
Nội dung
Kỹ thuật tính toán trong công nghệ hóa học Mục Lục Lời nói đầu 2 Phần I: Cơ sở về Matlab 3 Chương I:Bắt đầu với Matlab 4 1.1 Nhập dữ liệu qua dòng lệnh 4 1.2 Sử dụng help trực tuyến 6 1.3 Đường dẫn 6 1.4 Lưu và tải dữ liệu 6 Chương 2: Các cấu trúc cơ bản và biến 7 2.1 Tính toán với Matlab 7 2.2 Giới thiệu dạng dữ liệu 8 Chương 3: Tính toán với ma trận và vec tơ 9 3.1 Vec tơ 9 3.1.1 Kí tự hai chấm và trích các phần tử của vec tơ 10 3.1.2 Vec tơ cột và sự chuyển vị 11 3.1.3 Nhân, chia và mũ của vec tơ 12 3.2 Ma trận 13 3.2.1 Các ma trận đặc biệt 15 3.2.2 Xây dựng ma trận và cách trích các phần tử của ma trận 16 3.2.3 Các phép toán với ma trận 19 Chương 4: Đồ họa 21 4.1 Đồ thị đơn giản 21 4.2 Vẽ đường 22 4.3 Vẽ mặt 26 Chương 5: Các luồng điều khiển 29 5.1 Các toán tử logic 29 5.2 Lệnh find 29 5.3 Câu lệnh if 31 5.4 Cấu trúc lặp 33 Chương 6: Phương pháp số 34 6.1 Đường cong hồi quy 34 6.2 Phép nội suy 34 6.3 Giá trị của hàm số 35 6.3.1 Hàm ‘inline’ 36 6.4 Phép tính tích phân và tích phân 37 6.5 Tính toán số học và cấu trúc điều khiển 38 Chương 7: Viết chương trình trong Matlab 38 7.1 Kịch bản và hàm m-file 38 7.2 Hàm m-file 38 7.2.1 Những biến đặc biệt của hàm số 39 7.2.2 Biến địa phương và biến toàn cục 40 7.2.3 Tính giá trị hàm số cách gián tiếp 40 Chương 8: Văn bản 42 8.1 Chuỗi kí tự 42 8.2 Vào - ra dữ liệu 43 8.2.1 Vào ra dữ liệu từ bàn phím 43 8.2.2 Đưa dữ liệu ra màn hình 44 8.2.3 Xử lí file văn bản 46 Phần II: Ứng dụng của Matlab 50 trong công nghệ hóa học 50 1 Kỹ thuật tính toán trong công nghệ hóa học Chương 1: Dẫn nhiệt và đối lưu 51 1.1. Dẫn nhiệt 51 1.1.1. Tóm tắt lí thuyết 51 1.1.2. Ví dụ 52 1.2. Đối lưu 55 1.2.1. Tóm tắt lí thuyết 55 1.2.2.Ví dụ 58 Chương 2: Bức xạ nhiệt và truyền nhiệt 63 2.1. Trao đổi nhiệt bức xạ giữa các vật 63 2.1.1. Tóm tắt lí thuyết 63 2.1.2. Ví dụ 64 2.2. Truyền nhiệt và thiết bị trao đổi nhiệt 66 2.2.1 Tóm tắt lí thuyết 66 2.1.2. Ví dụ 67 Chương 3: Kỹ thuật tách chất 73 3.1 Cân bằng lỏng hơi 73 3.1.1 Tóm tắt lý thuyết 73 3.1.2 Ví dụ 75 3.1.3. Bài tập 79 3.2 Phương pháp McCabe Thiele 80 3.2.1 Tóm tắt lý thuyết 80 3.2.2 Ví dụ 82 Chương 4: Kỹ thuật phản ứng 89 4.1 Nhiệt động học 89 4.1.1 Tóm tắt lý thuyết 89 4.1.2 Ví dụ 91 4.2 Các kỹ thuật tiến hành phản ứng 94 4.2.1 Tóm tắt lý thuyết 94 4.2.2 Ví dụ 95 4.2.3Bài tập 99 Phụ lục 99 Tìm hiểu về các hàm xây dựng 100 Tài liệu tham khảo 125 Lời nói đầu Các bài toán công nghệ hóa học trong thực tế là rất phức tạp, chúng ta cần có công cụ hỗ trợ để giải nó. Thực tế có rất nhiều phần mền, tuy nhiên, trong cuốn sách này, chúng tôi muốn giới thiệu đến các sinh viên nghành công nghệ hóa một công cụ rất mạnh, đó là matlab . Mat lab là một công cụ toán học rất mạnh, ngoài ra nó còn hỗ trợ ngôn ngữ lập trình bậc 4 với cấu trúc đơn giản, gần gũi, dễ tiếp cận, có thể linh hoạt giải quyết các bài toán thực tế để đạt được yêu cầu mong muốn. Do đó, việc sử dụng nó làm công cụ để giải quyết các bài toán kĩ thuật là rất tốt . Nội dung cuốn sách bao gồm: • Phần I: Cơ sở về Matlab nhằm giới thiệu cho bạn đọc sơ lược về Matlab 2 Kỹ thuật tính toán trong công nghệ hóa học • Phần II: Ứng dụng Matlab trong công nghệ hóa học gồm có các chương: Dẫn nhiệt và đối lưu; bức xạ và truyền nhiệt; kỹ thuật tách chất; kỹ thuật phản ứng . Trong từng chương có tóm tắt cơ sở lí thuyết, kèm theo mỗi chương đó thì có các ví dụ và bài tập liên quan đi kèm, mỗi một ví dụ minh họa được giải bằng tay sau đó được giải lại bằng matlab một cách sinh động và dễ hiểu, có tính tổng quát cao . Đưa matlab vào công nghệ hóa là mục đích của chúng tôi. Tuy nhiên, do được biên soạn lần đầu nên không thể tránh được những sai sót, rất mong nhận được đóng góp của bạn đọc để cuốn sách trở lên gần gũi hơn với các sinh viên công nghệ hóa cũng như những người quan tâm đến lĩnh vực này . Phần I: Cơ sở về Matlab Matlab là công cụ toán học, trước hết là các phép tính khoa học, ngoài ra nó còn cho phép vẽ các đồ thị, tính toán ma trận, làm việc với các đa thức và các hàm tích phân. Đồng thời,chúng ta có thể lập trình các chương trình tính toán một cách linh hoạt theo nhu cầu của mình. Đặc biệt Matlab tỏ ra rất mạnh mẽ trong việc thiết kế và tính toán vector và ma trận. Khi khởi chạy Matlab thì xuất hiện một hoặc nhiều cửa sổ trên màn hình, trong đó quan trọng nhất là Command window, nó cho phép nhập lệnh và hiển thị kết quả. 3 Kỹ thuật tính toán trong công nghệ hóa học Chương I:Bắt đầu với Matlab 1.1 Nhập dữ liệu qua dòng lệnh *) Các lệnh sẽ được thực hiện ngay sau khi ấn phím Enter. Kết quả sẽ được hiển thị trên màn hình nếu muốn. Tuy nhiên, nó chỉ thực hiện khi các dòng lệnh là hợp lệ. Có thể tìm hiểu thêm từ menu Help. Ví dụ : >> 3 + 7.5 >> 18/4 4 Kỹ thuật tính toán trong công nghệ hóa học >> 3 * 7 Chú ý : các dấu cách không quan trọng trong Matlab *) Kết quả tính toán sẽ được tự động lưu vào biến ans Ví dụ : >> 14/4 ans = 3.5000 >> ans^(-6) ans = 5.4399e-04 Chúng ta có thể định nghĩa biến cho riêng mình. Ví dụ: >> a = 14/4 a = 3.5000 >> b = a^(-6) b = 5.4399e-04 Dữ liệu sẽ được lưu vào biến a và b. *) Khi kết thúc dòng lệnh kết thúc bằng dấu “;” thì sẽ không hiển thị kết quả ra màn hình, có thể kiểm chứng bằng hai biểu thức sau : >> 3 + 7.5 >> 3 + 7.5; *) Có thể thực thi nhiều lệnh cùng một lúc, các câu lệnh ngăn cách nhau bởi dấu phẩy hoặc dấu chấm phẩy. >> sin(pi/4), cos(pi); sin(0) ans = 0.7071 ans = 0 Chú ý : cos(pi) không được in ra màn hình *) Mặc định Matlab chỉ hiển thị 5 chữ số. Do đó, muốn có kết quả chính xác hơn thì ta dùng lệnh format long thì có thể hiển thị được tới 15 chữ số >> 312/56 ans = 5.5714 5 Kỹ thuật tính toán trong công nghệ hóa học >> format long >> 312/56 ans = 5.57142857142857 Có thể tìm hiểu thêm: >> help format *) Khi dòng quá dài có thể dùng dấu “…” để nối câu xuống dòng sau >> sin(1) + sin(2) - sin(3) + sin(4) - sin(5) + sin(6) - sin(8) + sin(9) - sin(10) + sin(11) - sin(12) ans = 1.0357 *) Dòng kí tự đặt sau dấu “%” chỉ có tác dụng làm dòng chú thích >> sin(pi) % dùng để tính giá trị của sin (pi) 1.2 Sử dụng help trực tuyến Chúng ta có thể dùng cấu trúc >> help <câu lệnh> Vd: help ops Hoặc >> lookfor <câu lệnh> Vd : lookfor inverse 1.3 Đường dẫn Trong Matlab, các lệnh hay các chương trình được chứa trong m-file, cái mà được biên soạn từ file văn bản nhưng khi lưu với đuôi mở rộng là “.m”. M-file chỉ chạy được khi nó nằm ở thư mục current working directory 1.4 Lưu và tải dữ liệu Rất dễ dàng lưu hoặc gọi 1 biến nào đó, ta chỉ cần click vào File- menu sau đó chọn Save Workspace as hoặc Load Workspace Vd : khi save >> s1 = sin(pi/4); >> c1 = cos(pi/4); c2 = cos(pi/2); >> str = ’hello world’; % đây là 1 chuỗi >> save % lưu toàn bộ biến với định dạng matlab.mat >> save data % lưu các biến với định dạng nhị phân data.mat 6 Kỹ thuật tính toán trong công nghệ hóa học >> save numdata s1, c1 % lưu các biến số s1 và c1 tới numdata.mat >> save strdata str % lưu biến chuỗi str vào strdata.mat >> save allcos.dat c* -ascii % saves c1,c2 in 8-digit ascii format to allcos.dat Còn khi load >> load % tải tất cả các biến từ file matlab.mat >> load data s1 c1 % chỉ tải riêng từng biến trong file data.mat >> load str data % tải tất cả các biến từ file strdata.mat Chương 2: Các cấu trúc cơ bản và biến 2.1 Tính toán với Matlab Có 3 loại biến số học: Số nguyên, số thực, số phức. Matlab còn hỗ trợ thêm những loại không phải là số: Inf (giá trị vô cực, ví dụ : 1/0 sẽ cho kết quả như vậy) hoặc NaN (không phải là số, là kết quả của các phép tính như 0/0 hoặc vô cùng – vô cùng) Chúng ta có thể viết các biểu thức trên dòng lệnh của Matlab : >> (23*17)/7 Kết quả sẽ là : ans = 7 Kỹ thuật tính toán trong công nghệ hóa học 55.8571 Matlab có 6 toán tử cơ bản là : +, - , * , \ , /(chia phải hoặc trái) và ^(hàm mũ) Chú ý sự khác nhau của toán tử chia trái và chia phải : >> 19/3 % thực hiện phép chia: 19/3 ans = 6.3333 >> 19\3, 3/19 % thực hiện phép chia: 3/19 ans = 0.1579 ans = 0.1579 Những hàm cơ bản về lượng giác, mũ … có thể tìm hiểu >> help elfun Bài tập: Xác định giá trị các biểu thức dưới đây bằng tay và bằng Matlab để so sánh. Chú ý tới sự khác nhau giữa chia trái và phải, và dùng lệnh help để tìm hiểu về các hàm: round, floor, ceil … • 2/2 - 3 • 8 - 5\4 • 8 - (5\4) • 7 − 5 - 4\9 • 6 − 2/5 + 7^2 − 1 • 10/2\5 − 3 + 2 - 4 • 3^2/4 • 3^2^3 • 2 + round (6/9 + 3 - 2)/2 • 2 + floor (6/9 + 3 - 2)/2 • 2 + ceil (6/9 + 3 - 2)/2 • x = pi/3, x = x − 1, x = x + 5, x = abs(x)/x 2.2 Giới thiệu dạng dữ liệu Mặc dù tất cả các tính toán số trong Matlab đều được tính toán với độ chính xác kép (double precision), nhưng khuôn dạng của dữ liệu đưa ra có thể định dạng lại nhờ các lệnh định dạng của Matlab. Các biến ngầm định cũng như các biến của người sử dụng định nghĩa đều có thể đưa ra nhiều định dạng khác nhau. Định dạng được chọn nhờ sử dụng lệnh format tiếp đến là chỉ định long hay short và cuối cùng có thể là dạng biểu diễn của dữ liệu, cụ thể là e đối với dạng hàm mũ, f đối dạng dấu phẩy 8 Kỹ thuật tính toán trong công nghệ hóa học động(ngầm định là f). Một khuôn dạng ít dùng hơn là rat để đưa dữ liệu ra dưới dạng phân số (chính xác hoặc gần đúng ). Ví dụ: >> 4*atan(1) ans = 3.1416 >> format long e >> ans ans = 3.141592653589793e+000 >> format long f >> ans ans = 3.14159265358979 >> format short e >> ans ans = 3.1416e+000 >> format rat >> ans ans = 355/113 Chương 3: Tính toán với ma trận và vec tơ Nền tảng của Matlab chính là ma trận (hay mảng). Trường hợp đặc biệt: 1 ma trận 1 × 1: là 1 số vô hướng; 1 ma trận chỉ có 1 dòng hoặc 1 cột: là 1 vec tơ 3.1 Vec tơ Vec tơ hàng là 1 danh sách các số được ngăn cách nhau bởi dấu cách hoặc dấu phẩy. Số lượng phần tử của 1 vec tơ được gọi là length của vec tơ. Các phần tử nhập vào phải đặt trong dấu “[ ]”. Vd: >> v = [-1 sin(3) 7] v = 9 Kỹ thuật tính toán trong công nghệ hóa học -1.0000 0.1411 7.0000 >> length(v) ans = 3 Một số phép toán có thể thực hiện với vec tơ như nhân vô hướng, cộng hoặc trừ từ các vec tơ khác có số phần tử tương tự, hoặc giữa 1 số với vec tơ. Mọi phép toán đều được thực hiện trên từng phần tử. Các vec tơ cũng có thể được xây dựng từ các phần tử hữu hạn. >> v = [-1 2 7]; w = [2 3 4]; >> z = v + w % cộng từng phần tử z = 1 5 11 >> vv = v + 2 % cộng 2 vào tất cả các phần tử vào vec tơ vv = 1 4 9 >> t = [2*v, -w] ans = -2 4 14 -2 -3 -4 Đồng thời 1 phần tử có thể được trích dẫn ra, hoặc chỉnh sửa: >> v(2) = -1 % sửa phần tử thứ 2 của v v = -1 -1 7 >> w(2) % hiển thị phần tử thứ 2 của w ans = 3 3.1.1 Kí tự hai chấm và trích các phần tử của vec tơ Dấu hai chấm là phím tắt quan trọng dùng để tạo ra vec tơ hàng: >> 2:5 ans = 2 3 4 5 >> -2:3 ans = -2 -1 0 1 2 3 10 [...]... 27 Kỹ thuật tính toán trong công nghệ hóa học Hình 6b: Vẽ mặt trong 3 chiều tránh khuyết Ví dụ Vẽ z=sin(r)/r với r = x2 + y2 , −8 ≤ x ≤ 8, −8 ≤ y ≤ 8 >> x=-8:.5:8;y=-8:.5:8; >> [x,y]=meshgrid(x,y); >> r=sqrt(x.^2+y.^2)+eps; >> z=sin(r)./r; >> mesh(x,y,z) Hình 7: vẽ mặt trong 3 chiều bởi mesh Điểm khác nhau giữa hai lệnh surf và mesh là: surf tô màu bề mặt,còn mesh thì không 28 Kỹ thuật tính toán trong. .. bước chia 0.1 [ − ,2] × − ,1] 2 [ 1 >> [x,y]=meshgrid(-2:.1:2,-1:.1:1); Sử dụng phép toán vec tơ hóa để xác định Z >> z=(x.^2).*y-2*y; Cuối cùng ta vẽ >> surf(x,y,z) >> title('Do thi cua ham so f(x,y)=x^2y-2y') 26 Kỹ thuật tính toán trong công nghệ hóa học Hình 5: Vẽ mặt f ( x, y ) = x 2 y − 2 y trong 3 chiều Một trong những khó khăn khi vẽ mặt là phải đối mặt với phép chia cho 0 Chẳng hạn, ta muốn... trình tham số trong không gian 3 chiều Để vẽ đường trong tọa độ cực ρ = θ 2 , với 0 ≤ θ ≤ π : >> theta = 0:.2:5*pi; 25 Kỹ thuật tính toán trong công nghệ hóa học >> rho=theta.^2; >> polar(theta,rho,'hb') Hình 4b: vẽ đồ thị trong hệ tọa độ cực 4.3 Vẽ mặt Để đồ thị hàm số f ( x, y ) trên miền hình chữ nhật R =[ a, b] × c, d ] ={( x, y ) a ≤ x ≤b & c ≤ y ≤d }, [ Trước hết ta tạo lưới điểm trong miền khảo... 0.5000 0.4000 3.2 Ma trận Một ma trận A= 1 4 7 2 5 8 3 6 9 Được định nghĩa trong Matlab như sau: 13 Kỹ thuật tính toán trong công nghệ hóa học >> A = [1 2 3; 4 5 6; 7 8 9] % nhập theo hàng A= 1 2 3 4 5 6 7 8 9 Hoặc cũng có thể: >> A2 = [1:4; -1:2:5] A2 = 1 2 3 4 -1 1 3 5 >> A3 = [1 3 -4 7] A3 = 1 3 -4 7 Phép toán chuyển vị ma trận cũng có thể thực hiện 1 cách dễ dàng: >> A2 A2 = 1 2 3 4 -1... ‘enter’ hoặc dấu chấm phẩy: >> z = [1 7 7]; z= 1 7 7 >> u = [-1; 3; 5] 11 Kỹ thuật tính toán trong công nghệ hóa học u= -1 3 5 Các phép toán cũng được thực hiện 1 cách tương tự, và cũng có thể chuyển dạng thành vec tơ hàng: >> u’ % u là vec tơ hàng còn u’ là vec tơ cột ans = -1 3 5 3.1.3 Nhân, chia và mũ của vec tơ Chúng ta có thể tính tích vô hướng của 2 vec tơ có cùng độ dài: >> u = [-1; 3; 5] % 1 vec... trong Matlab,điều đó có nghĩa là nó sẽ thực hiện từ trái qua phải 5.2 Lệnh find Chúng ta có thể trích các phần tử trong vec tơ và ma trận thỏa mãn những điều kiện nào đó, bằng toán tử xác định vị trí Chẳng hạn như dùng lệnh xác định vị trí find 29 Kỹ thuật tính toán trong công nghệ hóa học >> x = [1 1 3 4 1]; >> i = (x == 1) i= 1 1 0 0 1 >> y = x(i) y= 1 1 1 >> j = find(x = = 1) % j là chỉ số của phần... plot (x(k), y(k), ’ro’); >> r = find (x > 0.5 & y > 0) r= 35 36 37 38 39 40 41 >> plot (x(r), y(r), ’r*’); Dùng toán tử find trong ma trận một cách tương tự: >> A = [1 3 -3 -5; -1 2 -1 0; 3 -7 2 7]; >> k = find (A >= 2.5) k= 3 4 12 >> A(k) ans = 30 Kỹ thuật tính toán trong công nghệ hóa học 3 3 7 Chúng ta cũng có thể xác định vị trí theo hàng cột >> [I,J] = find (A >= 2.5) I= 3 1 3 J= 1 2 4 >> [A(I(1),... lặp while 33 Kỹ thuật tính toán trong công nghệ hóa học Các câu lệnh trong thân của vòng lặp while sẽ được lặp lại chừng nào biểu thức expression còn là true: Chương 6: Phương pháp số 6.1 Đường cong hồi quy Với lệnh polyfit bất kỳ đa thức nào có thể khớp nhau đối với dữ liệu polyfit ( x, y, n) để tìm thấy các hệ số của một đa thức với bậc n mà phù hợp với dữ liệu nhất(tìm mối quan hệ tuyến tính giữa x... points’,’4 points’,’16 points’,’256 points’) Trong Matlab cũng có những hàm nội suy như: interp1(hồi quy 1 chiều), interp2, spline Ta thực hiện lệnh sau: >> N = 50; 34 Kỹ thuật tính toán trong công nghệ hóa học >> x = linspace(0,5,N); >> y = sin(x) *sin(6*x); >> subplot(2,1,1); plot(x,y); >> hold on >> p = randperm(N); >> pp = p(1:round(N/2)); % chọn ngẫu nhiên N/2 số trong [0,5] >> pp = sort(pp); % phân loại... phần có thể được trích từ 1 ma trận tương tự như cách lấy của vectơ Mỗi phần tử trong ma trận được mang chỉ số bởi vị trí của nó trong hàng và cột Ví dụ: >> A = [1:3; 4:6; 7:9] A= 123 456 789 >> A(1,2), A(2,3), A(3,1) ans = 2 ans = 6 17 Kỹ thuật tính toán trong công nghệ hóa học ans = 7 >> A(4,3) % this is not possible: A is a 3-by-3 matrix! ??? Index exceeds matrix dimensions >> A(2,3) = A(2,3) + 2*A(1,1) . 2 Kỹ thuật tính toán trong công nghệ hóa học • Phần II: Ứng dụng Matlab trong công nghệ hóa học gồm có các chương: Dẫn nhiệt và đối lưu; bức xạ và truyền nhiệt; kỹ thuật tách chất; kỹ thuật. 44 8.2.3 Xử lí file văn bản 46 Phần II: Ứng dụng của Matlab 50 trong công nghệ hóa học 50 1 Kỹ thuật tính toán trong công nghệ hóa học Chương 1: Dẫn nhiệt và đối lưu 51 1.1. Dẫn nhiệt 51 1.1.1 >> 3 + 7.5 >> 18/4 4 Kỹ thuật tính toán trong công nghệ hóa học >> 3 * 7 Chú ý : các dấu cách không quan trọng trong Matlab *) Kết quả tính toán sẽ được tự động lưu vào biến