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.
34 trang |
Chia sẻ: lylyngoc | Lượt xem: 2120 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Phương pháp số trong công nghệ hóa học, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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; End; Khi gọi hàm trong chương trình chính: y:= F(x1); Chú ý: Đằng sau “End” của chương trình con dùng dấu “;” thay vì dấu “.” trong chương trình chính. 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 Cần phải dùng: 2 chương trình con kiểu hàm 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. Procedure HAM; Begin y1:=2*sqr(x) + 3*x – 5; y1:=5*x*sqr(x) – 2*x – 6; End; Khi gọi thủ tục: {Tính giá trị tại x:=x1} x:=x1; HAM; {Có thể gán giá trị cho y3, y4} 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 y1:=2*sqr(x) + 3*x – 5; y1:=5*x*sqr(x) – 2*x – 6; End; Khi gọi thủ tục: {Tính giá trị tại x:=x1} HAM(x1,y1,y2); {Có thể gán giá trị cho y3, y4} HAM(x1,y3,y4) Ví dụ áp dụng Ví dụ 1 Cho dãy số thực x1, x2,…,xn Hãy tính tổng S của dãy số trên Tìm giá trị nhỏ nhất của dãy Thuật toán? a) Tính tổng i:=0;S:=0; i:=i + 1; S:=S + x[i]; b) Tìm giá trị nhỏ nhất 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 Ví dụ 2 Cho dãy số thực x1, x2,…,xn và hàm số yi = 2xi2 + 3xi – 7 Hãy tính tổng S của các giá trị yi Tìm giá trị nhỏ nhất của dãy yi Thuật toán? a) Tính tổng i:=0;S:=0; i:=i + 1; y[i]:=…; S:=S + y[i]; 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??? Có cần chương trình con??? 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 <xn