1. Trang chủ
  2. » Luận Văn - Báo Cáo

kỹ thuật tính toán trong công nghệ hóa học

125 2K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

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 mat

Trang 1

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

Trang 2

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:

Trang 3

• 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ả

Trang 4

Chương I:Bắt đầu với Matlab

Trang 5

>> 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

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 :

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

Trang 6

*) 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)

đượ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

Trang 7

>> 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 =

Trang 8

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 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

Trang 9

độ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

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 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 =

Trang 10

-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

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:

Trang 11

Dạng tổng quát “first:step:last”, khởi tạo vec tơ dòng bắt đầu từ phần tử first, kết thúc tại phần tử last và với độ dài bước là step Nếu không chỉ ra step, thì giá trị mặc

>> r(5:-1:2) % chuyện gì sẽ xảy ra với trường hợp này?

3.1.2 Vec tơ cột và sự chuyển vị

Để tạo 1 vec tơ cột, chúng ta phải tách các phần tử bởi phím ‘enter’ hoặc dấu chấm phẩy:

Trang 12

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 tơ cột

>> v = [-1; 2; 7] % 1 vec tơ cột

>> u * v % chúng ta không thể nhân vec tơ cột với vecto cột

??? Error using ==> *

Inner matrix dimensions must agree.

>> u’ * v % đây mới là tích vô hướng

ans =

42

Một cách khác để tính tích vô hướng là sử dụng dấu “.*”:

>> u * v %nhân từng phần tử cho nhau

>> x = 2:2:10

Trang 13

>> x./z % chia 4/0, kết quả ra Inf

Warning: Divide by zero.

ans =

-2.0000 Inf 6.0000 4.0000 3.3333

>> z./z % chia 0/0, kết quả ra NaN

Warning: Divide by zero.

Matrix dimensions must agree.

>> 2./x % nhưng thế này thì được!

6 5 4

3 2 1

Được định nghĩa trong Matlab như sau:

Trang 18

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) % sửa giá trị của phần tử A(2,3)

>> A(4,:) = [2, 1, 2]; % gán vec tơ [2, 1, 2] cho hàng thứ 4 của A

>> A(5,[1,3]) = [4, 4]; % gán : A(5,1) = 4 và A(5,3) = 4

Trang 19

Matrix dimensions must agree.

>> 4./B % nhưng đây lại có thể ; tương đương với: 4.*ones(size(B)) / B

Trang 22

Hàm plot được sử dụng để vẽ dữ liệu trên mặt phẳng Cho vec tơ x gồm các

hoành độ x1,…,xn và vec tơ y gồm các tung độ y1,…yn, lệnh plot(x,y) sẽ vẽ các điểm

từ (x1,y1) đến (xn,yn) Theo mặc định, các điểm này sẽ được nối theo thứ tự bởi các đoạn thẳng

- solid: dotted- dashdot dashed

Trang 23

< tam giác chỉ sang trái

> tam giác chỉ sang phải

Ta cũng có thể gần đúng đồ thị hàm số bằng cách lấy nhiều điểm Ví dụ vẽ đồ thị

đến 2 với độ dài bước chia là 0.05

Trang 24

Hình 1: Đồ thị hàm số f(x) =x3

Vẽ các đường cong tham số cũng tương tự:

)) 1 /(

sin 2 ), 1 /(

cos 2

>> title( '(2t cos t/ (t+1)),2t sin t/(t+1)' )

Chú ý: các phép toán nhân chia phải được thực hiện trên từng phần tử(nghĩa là *,

./ hoặc ^)

Để có tỷ lệ chính xác ta dùng:

>> axis equal

Hình 2: Đồ thị hàm số cho bởi phương trình tham số

Để vẽ nhiều đường trên cùng 1 hình ta dùng lệnh “hold on”.

trình tham số:

Trang 25

) sin 2 , cos 2 (

Trong không gian 3 chiều thì thay lệnh plot bằng plot3 Ví dụ:

Để vẽ đường tham số r(t) = (cos(t), sin(t),t) với t∈ [ 0 , 8 π ] ta có thể làm như sau:

t=0:.1:8*pi;

>> plot3(cos(t),sin(t),t)

>> title('(cos t,sin t,t)')

Hình 4a: vẽ đồ thị đường cho bởi phương trình tham số trong không gian 3 chiều

>> theta = 0:.2:5*pi;

Trang 26

] , [ ] ,

Trang 27

Hình 5: Vẽ mặt f(x,y) =x2y− 2y trong 3 chiềuMộ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 vẽ đồ thị của hàm số

2 2

)

,

(

y x

xy y

Warning: Divide by zero.

Nếu ta cứ vẽ mặt như vậy điểm lưới tại (0,0) sẽ khuyết

Hình 6a: Vẽ mặt ( , ) 2 2

y x

xy y

x f

Trang 28

Hình 6b: Vẽ mặt trong 3 chiều tránh khuyết

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

Trang 29

Chương 5: Các luồng điều khiển

5.1 Các toán tử logic

Bảng 1: mối quan hệ giữa các phép toán logic

Chú ý : toán tử & và toán tử | có mức ưu tiên như nhau 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

Trang 32

Chú ý: bài tập dưới đây có thể sử dụng m-file Script Đó là tập tin được lưu ở

ngoài Chúng ta có thể sử dụng bất kì chương trình soạn thảo nào nhưng phải lưu với đuôi mở rộng là “.m” (sẽ được tìm hiểu kĩ trong chương sau)

Trang 33

Một loại cấu trúc điều kiện khác là switch Câu lệnh này cho phép thực hiện rẽ

nhánh dựa trên các giá trị biểu thức

Cấu trúc này sẽ tránh sự dài dòng và khó hiểu của cấu trúc if…end khi sử dụng

quá nhiều điều kiện

5.4 Cấu trúc lặp

*) vòng lặp for

Chỉ số của phép lặp có thể là vec tơ:

*) Vòng lặp while

Trang 34

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 và y) Chúng ta hãy bắt đầu làm việc với hồi quy tuyến tính của dữ liệu nào đó:

>> x = 0:10;

>> y = [-.10 24 1.02 1.58 2.84 2.76 2.99 4.05 4.83 5.22 7.51]

>> p = polyfit (x, y, 1) % tìm đa thức hồi quy bậc 1

p = 0.6772 -0.3914

Biến ra của lệnh polyfit là 1 vec tơ hàng các hệ số của đa thức hồi quy Như ở ví

6.2 Phép nội suy

Cách đơn giản nhất để khảo sát một phép nội suy là vẽ đồ thị hàm số bằng hàm

plot Các số liệu lân cận được nối với nhau bởi đoạn thẳng:

>> legend(’2 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;

Trang 35

>> 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 tử

Trang 37

=

x x

x

ta có thể thực hiện với độ chính xác hơn

>> format long % thay đổi định dạng để tăng thêm độ chính xác

=

x x

Trang 38

6.5 Tính toán số học và cấu trúc điều khiển

Chúng ta có thể gặp những bài toán như khai triển Taylor Chúng ta có thể khai

1

x x

x x

path Thư mục mà Matlab luôn khảo sát đó chính là ‘Current Directory’, người dùng

có thể thay đổi

Một m-file có thể được biên soạn như sau:

Chẳng hạn chúng ta lưu file sinplot.m có nội dung:

Trang 39

biến ra đặt trong dấu [] và biến vào đặt trong dấu ()

Chú ý: tên của hàm và tên m-file lưu phải đồng nhất

Ví dụ: tạo hàm average có tên được lưu là average.m Những dòng chú ý đặt sau

dòng function và trước các dòng lệnh nội dung là dòng chú thích về hàm, nó có thể được hiển thị nhờ lệnh >>help average Có thể gọi hàm average.m bằng cách

avr1 = average(1:10)

function avr = average (x)

%AVERAGE tính toán giá trị trung bình của các giá trị trong vec tơ

% và kết quả được gán vào avr

function [avr,sd] = stat(x)

%STAT thống kê đơn giản.

% tính toán giá trị trung bình và độ lệch tiêu chuẩn của vec tơ x.

n = length(x);

avr = sum(x)/n;

sd = sqrt(sum((x - avr).^2)/n);

return;

7.2.1 Những biến đặc biệt của hàm số

Mỗi hàm số đều có 2 biến bên trong: Số lượng đối số vào được gọi trong hàm là

nargin và nargout là số biến ra Việc sử dụng nargin cho phép ta đặt giá trị ngầm

định cho các biến vào vắng mặt

function [out1,out2] = checkarg (in1,in2,in3)

%CHECKARG mô tả cách sử dụng biến nargin và nargout.

Trang 40

disp(’1 input argument’);

7.2.2 Biến địa phương và biến toàn cục

Các biến thông thường đều được mặc định là biến địa phương, nó chỉ được tham chiếu trong hàm chứa nó Còn các biến cục bộ được khai báo sau từ ‘global’, nó sẽ được tham chiếu trong toàn bộ modun

7.2.3 Tính giá trị hàm số cách gián tiếp

Việc tính hàm số gián tiếp giúp cho việc lập trình trở lên tổng quát hơn Trong

Ngày đăng: 18/01/2015, 14:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w