PHƯƠNG PHÁP SỐ TRONG CÔNG NGHỆ HÓA  HỌC

Mã học phần: CH3454

TS. Nguyễn Đặng Bình Thành BM:Máy & TBCN Hóa chất

Numerical Methods in Chemical Engineering

MỞ ĐẦU

Phương pháp số được dùng để phân tích và  giải gần đúng các bài toán với sai số nằm  trong giới hạn cho phép.

…bởi vì hầu hết các bài toán khoa học kỹ  thuật đều không có các lời giải chính xác.

Phương pháp số thường được bắt đầu từ việc  xây dựng mô hình, lựa chọn thuật toán, và  đưa ra các đáp số gần đúng.

MỞ ĐẦU

Phương pháp số có vai trò quan trọng  trong nhiều lĩnh vực như: Thiên văn học,  nông nghiệp, kiến trúc, …

Và tất nhiên rất quan trọng trong kỹ  thuật.

MỞ ĐẦU

Phương pháp số trong Kỹ thuật hóa học:

Mô tả bằng toán học các quá trình và và thiết  bị trong công nghệ hóa học. Tính toán thiết kế các quá trình và thiết bị  hoạt động trong lĩnh vực kỹ thuật hóa học. Tính toán tối ưu hóa các điều kiện làm việc và  kết cấu các thiết bị hóa chất. Xác định các hằng số thực nghiệm bằng  phương pháp hồi quy. …

NỘI DUNG

Chương 1. Các phương pháp giải phương  trình và hệ phương trình. Chương 2. Phương pháp tính tích phân Chương 3. Phương trình và hệ phương trình vi  phân Chương 4. Tối ưu hóa

NỘI DUNG

Chương 1. Các phương pháp giải phương

trình và hệ phương trình

1.1 Phương pháp giải hệ phương trình tuyến tính và

ứng dụng

1.1.1 Giải hệ phương trình tuyến tính bằng phương pháp

Gauss và phương pháp nghịch đảo ma trận

1.1.2 Ứng dụng để tính toán cân bằng vật chất của hệ

thống CNHH

NỘI DUNG

Chương 1. Các phương pháp giải phương

trình và hệ phương trình

1.2 Phương pháp giải phương trình và hệ phương

trình phi tuyến

1.2.1 Giải phương trình phi tuyến bằng phương pháp lặp

đơn giản và phương pháp Newton­Raphson

1.2.2 Giải hệ phương trình phi tuyến bằng phương pháp

lặp đơn giản và phương pháp Newton­Raphson

1.3 Ứng dụng

NỘI DUNG

Chương 2. Phương pháp tính tích phân

2.1 Tính tích phân xác định bằng phương pháp hình

thang

2.2 Tính tích phân xác định bằng phương pháp

Simpson 2.3 Ứng dụng 2.3.1 Tính toán tháp chưng luyện 2.3.2 Tính toán tháp hấp thụ

NỘI DUNG

Chương 3. Phương trình và hệ phương trình

vi phân

3.1 Giải phương trình vi phân bằng phương pháp

Euler

3.2 Giải phương trình vi phân bằng phương pháp

Runge­Kutta

3.3 Giải hệ phương trình vi phân bằng phương pháp

Euler

3.4 Giải hệ phương trình phi phân bằng phương

pháp Runge­Kutta

3.5 Ứng dụng tính toán hệ phản ứng hóa học

NỘI DUNG

Chương 4. Tối ưu hóa

4.1 Tìm cực trị hàm một biến: phương pháp điểm

vàng, phương pháp gradien

4.2 Tìm cực trị hàm nhiều biến: phương pháp

gradien, phương pháp đơn hình

4.3 Cực trị có ràng buộc: phương pháp hàm phạt

TÀI LIỆU THAM KHẢO

[1] Sổ tay quá trình và công nghệ hóa chất T1, 2, NXB

KHKT, 2004.

[2] Nguyễn Bin. Các quá trình và thiết bị công nghệ hóa

chất T1, 2, 3, NXB KHKT, 2001.

[3] R. Perry. Chemical Engineers’ Handbook, 7th Ed.,

Mc. Graw Hill, 2007.

[4] K. Johnson. Numerical Methods in Chemistry, Mc.

Graw Hill, 1978.

[5] Nguyễn Minh Tuyển, Phạm Văn Thiêm. Kỹ thuật hệ

thống trong CN Hóa học, T2, NXB KHKT, 2001.

Ngôn ngữ lập trình

Có nhiều ngôn ngữ lập trình có thể

ứng dụng để tính toán các quá trình  công nghệ hóa học:

Matlab; C; C++; Visual Basic; Delphi;

Pascal; …

Các phầm mềm ứng dụng khác trong  công nghệ hóa học: Aspen Plus;  gProms; …

Ngôn ngữ lập trình

Tìm hiểu bản chất của quá trình và

các ứng dụng các thuật toán

Do đó: Pascal được sử dụng chính

trong môn học này!

Nhắc lại các kiến thức về lập trình Pascal

Cấu trúc chương trình

Nhắc lại các kiến thức về lập trình Pascal

Tên chương trình Sử dụng các thư viện: CRT, GRAPH,  … Khai báo nhãn (khi dùng lệnh goto)

Khai báo các hằng số (một giá trị cụ thể)

Khai báo các kiểu dữ liệu đặc biệt như ma trận, … Khai báo các biến số cùng với các kiểu tương ứng

Chương trình chính (Begin …End.)

Chú ý: Cần phải tuân thủ nghiêm ngặt trình tự!

Nhắc lại kiến thức về lập trình Pascal

Khai báo theo kiểu

Số thực: “real”

Var

a,b,c: real;

Số nguyên: “integer”

Var

i,j,k,n: integer;

Nhắc lại kiến thức về lập trình Pascal

Khai báo theo kiểu Mảng hay ma trận: “array”

Đối với kiểu này, trước hết phải khai báo kiểu trước!

Type

mx = array [1..50] of real;

ma = array [1..50, 1..100] of real;

Var

x: mx;

a: ma;

Nhắc lại kiến thức về lập trình Pascal

Khai báo theo kiểu Mảng hay ma trận: “array”

Tuy nhiên cũng có thể khai báo trực tiếp

Var

x: array [1..50] of real;

a: array [1..50, 1..100] of real;

Nhắc lại kiến thức về lập trình Pascal

Các loại chương trình con

Dùng chương trình con khi cần thực hiện một đoạn  chương trình lặp đi lặp lại nhiều lần.

Do đó: khi cần đến những đoạn chương trình như vậy  thì chỉ cần gọi tên chương trình con đó.

Thuận lợi:

­Chương trình chính đơn giản

­Mức độ khái quát hóa chương trình cao

­Dễ kiểm tra lỗi cho toàn bộ chương trình

­Thuận lợi cho người sử dụng

Nhắc lại kiến thức về lập trình Pascal

Các loại chương trình con Trong Pascal có hai loại chương trình con:

­Hàm (function)

Hàm chỉ trả lại một kiểu dữ liệu và một giá trị duy nhất

­Thủ tục (procedure)

Thủ tục có thể trả lại nhiều kiểu dữ liệu khác nhau và  có thể trả lại nhiều giá trị

Nhắc lại kiến thức về lập trình Pascal

Các loại chương trình con

­Hàm (function)

Ví dụ: xác định giá trị của hàm số y = 2x2 + 3x – 5

Function F(x: real): real;

Begin

F:=2*x*x + 3*x – 5;

Nhược điểm: Khi tính toán cho nhiều biểu thức, ví dụ: y1 = 2x2 + 3x – 5  y2 = 5x3 – 2x – 6  Chú ý: Cần phải dùng: Đằng sau “End” của chương trình con dùng dấu  2 chương trình con kiểu hàm  “;” thay vì dấu “.” trong chương trình chính.

End;

Khi gọi hàm trong chương trình chính:

y:= F(x1);

Nhắc lại kiến thức về lập trình Pascal

Các loại chương trình con

­Thủ tục (procedure)

Ví dụ: xác định giá trị của 2 hàm số y1 = 2x2 + 3x – 5; y2  = 5x3 – 2x – 6.

Khi gọi thủ tục:

Procedure HAM;

{Tính giá trị tại x:=x1}

Begin

x:=x1;     y1:=2*sqr(x) + 3*x – 5; HAM;

y1:=5*x*sqr(x) – 2*x – 6;

{Có thể gán giá trị cho y3, y4}

End;

y3:=y1; y4:=y2;

Nhắc lại kiến thức về lập trình Pascal

Các loại chương trình con

­Thủ tục (procedure) có tham trị và tham biến hình thức

Ví dụ:

Procedure HAM(x: real; Var y1,y2:real)

Begin Khi gọi thủ tục:

y1:=2*sqr(x) + 3*x – 5; {Tính giá trị tại x:=x1}

y1:=5*x*sqr(x) – 2*x – 6; HAM(x1,y1,y2);

End; {Có thể gán giá trị cho y3, y4}

HAM(x1,y3,y4)

Có cần chương trình con???

Ví dụ áp dụng

Ví dụ 1

Thuật toán? a) Tính tổng i:=0;S:=0; Cho dãy số thực x1, x2,…,xn i:=i + 1; S:=S + x[i]; a) Hãy tính tổng S của dãy số trên b) Tìm giá trị nhỏ nhất b) Tìm giá trị nhỏ nhất của dãy i:=1; xmin:= một số rất lớn??? Nếu x[i] <= xmin thì xmin:=x[i]; i:=i+1; Hoặc cách khác???

Có cần chương trình con???

Ví dụ áp dụng

2 + 3xi – 7

Tìm giá trị nhỏ nhất của dãy yi

Ví dụ 2

Thuật toán? a) Tính tổng Cho dãy số thực x1, x2,…,xn và hàm số i:=0;S:=0; yi = 2xi i:=i + 1; y[i]:=…; a) Hãy tính tổng S của các giá trị yi S:=S + y[i]; b) b) Tìm giá trị nhỏ nhất i:=1; ymin:= một số rất lớn??? Nếu y[i] <= ymin thì ymin:=x[i]; i:=i+1; Hoặc cách khác???

Bài tập!!!

1) Thực hiện lại ví dụ 1 và ví dụ 2 bằng

chương trình Pascal

2) Cho dãy số thực tăng dần x1, x2,…,xn

và một số thực xs.

Hãy xác định vị trí của xs trong dãy số

trên, biết x1 < xs