Bài giảng Tin học ứng dụng trong kỹ thuật địa chất & dầu khí - Phần 9 - Đỗ Quang Khánh
SỬ DỤNG FILE SCRIPT
Chúng ta có thể soạn một script file theo cấu
trúc đề nghị như sau:
a. Phần chú thích (comments section): Viết
các dòng chú thích cho chương trình.
9 Dòng 1: Tên của chương trình và các từ
khóa mô tả chương trình (dòng này được
MATLAB gọi là dòng H1 và lệnh lookfor
của MATLAB sẽ tìm thông tin ở dòng H1
này khi có yêu cầu)
Chúng ta có thể soạn một script file theo cấu
trúc đề nghị như sau:
a. Phần chú thích (comments section): Viết
các dòng chú thích cho chương trình.
9 Dòng 1: Tên của chương trình và các từ
khóa mô tả chương trình (dòng này được
MATLAB gọi là dòng H1 và lệnh lookfor
của MATLAB sẽ tìm thông tin ở dòng H1
này khi có yêu cầu)
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học ứng dụng trong kỹ thuật địa chất & dầu khí - Phần 9 - Đỗ Quang Khánh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_tin_hoc_ung_dung_trong_ky_thuat_dia_chat_dau_khi_p.pdf
Nội dung text: Bài giảng Tin học ứng dụng trong kỹ thuật địa chất & dầu khí - Phần 9 - Đỗ Quang Khánh
- M-FILE, or SCRIPT (tt) Giải PTB2 bằng M-FILE ©Copyright 2007 MATLAB 111
- M-FILE, or SCRIPT (tt) SỬ DỤNG FILE SCRIPT Chúng ta có thể soạn một script file theo cấu trúc đề nghị như sau: a. Phần chú thích (comments section): Viết các dòng chú thích cho chương trình. 9 Dòng 1: Tên của chương trình và các từ khóa mô tả chương trình (dòng này được MATLAB gọi là dòng H1 và lệnh lookfor của MATLAB sẽ tìm thông tin ở dòng H1 này khi có yêu cầu) ©Copyright 2007 MATLAB 113
- M-FILE, or SCRIPT (tt) Thí dụ: Soạn Script file tính diện tích hình tam giác ABC, khi biết tọa độ ba điểm trong không gian R3. Diện tích tam giác được tính bằng công thức: 1 S = AB ∧ AC 2 Trong đó, ký hiệu (^) chỉ tích có hướng của hai vectơ AB và AC. ©Copyright 2007 MATLAB 115
- M-FILE, or SCRIPT (tt) Trong chương trình trên hàm cross(u,v) sẽ trả về một vectơ là vectơ tích có hướng của 2 vectơ u và v. Lưu ý: vectơ u (hoặc v) được xác định bởi các thành phần số của nó. Thí dụ: u = [1,-2,4], v = [-4,2,0] Hàm norm(p) sẽ tính module của vectơ p. Lệnh clear xuất hiện trong đầu chương trình sẽ xóa toàn bộ các biến mà WORKSPACE đang quản lý và dành vùng nhớ để quản lý các biến của chương trình. Dòng lệnh disp(S) sẽ hiện thị giá trị biến S ra cửa sổ lệnh- command windows(so sánh với lệnh disp(‘text’), hiển thị chuỗi ký tự). ©Copyright 2007 MATLAB 117
- M-FILE, or SCRIPT (tt) Khi chạy chương trình cho kết quả: >> DT_Tamgiac CT TINH DIEN TICH HINH TAM GIAC KHI BIET TOA DO BA DIEM === Toa do diem A = [2,0,0] Toa do diem B = [4,0,0] Toa do diem C = [3,2,0] Dien tich tam giac ABC: 2 ©Copyright 2007 MATLAB 119
- Toolbox Symbolic Định nghĩa biểu thức symbolic Biểu thức Trong MATLAB 1 ‘1/(2*x^n)’ 2.xn ⎡a b⎤ M = ⎢ ⎥ M = sym(‘[a,b;c,d]’) ⎣c d ⎦ b x3 f = ∫ dx f = int(‘x^3/sqrt(1-x)’,’a’,’b’) a 1 − x ©Copyright 2007 MATLAB 121
- Toolbox Symbolic Ở đây, ‘cos(x)’ là một chuỗi, diff(‘cos(x)’) là một biểu thức symbolic chứ không phải là một hàm số học. Ở Thí dụ 2, M=sym(‘[a,b;c,d]’) là một biểu thức symbolic. Sử dụng symbolic để xây dựng các hàm toán học dạng symbolic. Khai báo biến (như đã trình bày các slide trước) − sym(x) − sym x − syms x ©Copyright 2007 MATLAB 123
- Toolbox Symbolic diff(f) Đạo hàm bậc nhất theo biến x diff(f,’a’) Đạo hàm bậc nhất theo biến a diff(f,’a’,n) Đạo hàm bậc n theo biến n int(f) Tính tích phân theo biến x int(f,’a’) Tính tích phân theo biến a int(f,1,2) Tính tích phân theo biến x từ 1 đến 2. int(f,’a’,1,2) Tính tích phân theo biến a từ 1 đến 2. int(f,’n’,’m’) Tính tích phân theo biến x từ n đến m solve(f) Giải phương trình f = 0 dsolve(f) Giải phương trình vi phân dsolve(f,’a’) Giải PT vi phân với ĐK ban đầu ezplot(f) Vẽ đồ thị hàm mà không cần giá trị của biến. ©Copyright 2007 MATLAB 125
- SIMULINK Simulink 5.0 (Simulation and Link - R13) được MatWorks giới thiệu vào tháng 6 năm 2003. Nó cho phép phân tích, mô hình hóa và mô phỏng các hệ thống động tuyến tính và phi tuyến, liên tục và rời rạc một cách trực quan trong môi trường giao tiếp đồ họa, bằng các thao tác chuột đơn giản. Có thể nói, không tận dụng được Simulink là một thiệt thòi lớn cho người làm công tác mô phỏng! Khởi động Simulink bằng một trong các cách sau: nhập: >>simulink hoặc nhấp chuột vào trên menubar của Matlab ©Copyright 2007 MATLAB 127
- SIMULINK Môi trường soạn thảo của Simulink Cửa sổ này cho phép ta ‘nhấp - kéo - thả’ vào từng khối chức năng trong thư viện simulink. Thí dụ, đặt vào đây khối ‘Sine Wave’ trong thư viện simulink như hình sau: ©Copyright 2007 MATLAB 129
- MẢNG và MA TRẬN Mảng một chiều Mảng một chiều (vecto) là tập hợp các số được sắp xếp có thứ tự. length(u): Tính số phần tử trong mảng một chiều u. Muốn truy xuất phần tử thứ n trong mảng thì: ten_mang(n); Các phần tử của mảng đựơc phân cách nhau bởi dấu phẩy và được đặt trong đôi móc vuông [ ] (kiểu dòng). Các phần tử trong mảng phân cách nhau dấu chấm phẩy thì gọi là mảng kiểu cột. ©Copyright 2007 MATLAB 131
- MẢNG và MA TRẬN • x = linspace(x1,x2,n) % Tạo một vectơ dòng có các phẩn tử cách đều, với x1 là cận dưới, x2 là cận trên, và n là số điểm của dãy (kể cả 2 điểm x1, x2). Nếu n bị bỏ qua, giá trị mặc định của nó là 100. Thí dụ: >> z = linspace(2,8,7) z = 2 3 4 5 6 7 8 ©Copyright 2007 MATLAB 133
- MẢNG và MA TRẬN Các hàm liên quan đến mảng một chiều a. roots(Ten_mang) Nghiệm của một đa thức Ten_mang là một đa thức được mô tả là một mảng có các phần tử là các hệ số đa thức, bắt đầu ở bậc cao nhất. Mảng kiểu cột. b. poly(r) Trả về một mảng kiểu đòng với các phần tử là các hệ số của đa thức có nghiệm trước là các phần tử của mảng r (bài toán ngược) ©Copyright 2007 MATLAB 135
- MẢNG và MA TRẬN f. Chuyển vectơ hàng sang vectơ cột: Chuyển vị (transpose), dùng kí hiệu dấu nháy đơn ‘ bên phải vectơ (mảng một chiều) và ngược lại. Thí dụ: >> v = [3 5 9 7]’ v = 3 5 9 7 ©Copyright 2007 MATLAB 137
- MẢNG và MA TRẬN i. Truy xuất một phần tử từ một vectơ: Chúng ta có thể truy xuất một phần tử vectơ hay trích ra một nhóm các phần tử của vectơ theo một điều kiện nào đó (phát sinh ra vectơ mới). Thí dụ: >> u = [0,2,4,6,8,10]; >> u(3) % truy xuất phần tử thứ 3 của vectơ u ans = 4 >> u(2:5) %Truy xuất phần tử thứ 2 đến thứ 5 của vectơ u ans = 2 4 6 8 >> u([1 3 5]) %Truy xuất phần tử thứ 1, thứ 3, thứ 5 của vectơ u. >> n = length(u) % Trả về số phần tử của vectơ u thuộc N. n = 6 ©Copyright 2007 MATLAB 139
- MẢNG và MA TRẬN a. Cách tạo một ma trận trong MATLAB Các phần tử thuộc cùng một dòng được phân cách nhau bởi dấu phẩy(,), còn các dòng thì phân cách nhau bằng dấu chấm phẩy (;) Thí dụ: >> A = [2,4,6;3,5,7] A = 2 4 6 3 5 7 ©Copyright 2007 MATLAB 141
- MẢNG và MA TRẬN c. Ma trận chuyển vị (chuyển trí): Nếu A là một ma trận có kích thước m.n thì ma trận chuyển vị (transpose) của A là một ma trận có kích thước n.m. Các cột thứ 1, thứ 2, thứ 3 Trong AT chính là dòng thứ 1, 2, 3 trong ma trận A. MATLAB dùng dấu nháy đơn đặt bên phải ma trận để tạo ma trận chuyển vị. Thí dụ: >> A = [1 0;-4 2] A = -1 0 -4 2 >> AT=A’ AT = 1-4 ©Copyright 2007 02 MATLAB 143
- MẢNG và MA TRẬN Thí dụ: >> A = [1,2,3,4;6,7,8,9;0,5,10,15;-3,-4,-5,-6] A = 1 2 3 4 6 7 8 9 0 5 10 15 -3 -4 -5 -6 >> A(2,3) % truy xuất phần tử dòng 2, cột 3. ans = 8 >> A(:,2) %Trích vectơ cột thứ 2 ans = 2 7 5 -4 >> A(4,:) % Trích vectơ dòng thứ 4 ans = -3 -4 -5 -6 ©Copyright 2007 MATLAB 145
- MẢNG và MA TRẬN Tóm tắt: A(k,:) : Véctơ dòng thứ k. A (:,l): Vectơ cột thứ l. A(k:m,:): Ma trận con có dòng thứ k, cột thứ m A([array1], [array2]): Vectơ dòng để ghi số dòng nào, cột nào cần trích ra. ©Copyright 2007 MATLAB 147
- MẢNG và MA TRẬN Thí dụ: >> A A = 1 2 3 4 5 6 7 8 0 5 10 15 -3 -4 -5 -6 >> A(2,:) = [ ]; % Bỏ dòng thứ 2 của ma trận A >> A A = 1 2 3 4 0 5 10 15 -3 -4 -5 -6 ©Copyright 2007 MATLAB 149
- MẢNG và MA TRẬN Các ma trận đặc biệt M = eye(n): tạo ra ma trận đơn vị cấp n M = ones(m,n): Tạo ra ma trận có size = m.n, có các phần tử đều bằng 1. M = zeros(m,n): Tạo ra ma trận có size = m.n, có các phần tử đều bằng 0. M = zeros(n); M = ones(n): Tạo ra ma trận vuông M cấp n có tất cả các phần tử đều bằng o hoặc bằng 1. ©Copyright 2007 MATLAB 151
- CÁC PHÉP TOÁN MA TRẬN Phép chia: A\B % Chia trái ma trận. A.\B % Chia trái mảng A/B % Chia phải ma trận A./B %Chia phải mảng Phép lũy thừa: A^k % Lũy thừa ma trận A bậc k. Lưu ý: Lỗi sẽ phát sinh nếu cả A và k đều là ma trận. A.^B % Lũy thừa mảng. Là một ma trận mà các số hạng là A(i,j)^B(i,j) ©Copyright 2007 MATLAB 153
- HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH Phương pháp nghịch đảo ma trận Inv(A) Invhilb(n): pinv(A): Tính giả nghịch đảo ma trận nxm với m ≠ n. Phương pháp khử Gauss rref([A f]) Phương pháp khử Gauss-Jordan Phương pháp phân rã ma trận LU lu(A) Cú pháp: [L, U, P]=lu(A) − trả về ma trận tam giác dưới L, tam giác trên U và ma trận hoán đổi P (ma trận đơn vị mà các cột bị hoán chuyển). Ta có, L*U = P*A => X = U\(L\b) ©Copyright 2007 MATLAB 155
- TẠO GIAO DIỆN Bài thí nghiệm này trang bị cho sinh viên một số kiến thức cơ bản để xây dựng giao diện người dùng trong môi trường Matlab, nhằm hoàn thiện một chương trình ứng dụng nhất định. Cũng như các ngôn ngữ cấp cao khác, Matlab hổ trợ nhiều công cụ chức năng cho phép lập trình tạo giao diện sử dụng đẹp và nhanh chóng. Thí dụ, các dạng nút ấn, cửa sổ soạn thảo, các dạng menu, ©Copyright 2007 MATLAB 157
- TẠO GIAO DIỆN Để tạo GIAO DIỆN dùng công cụ GUIDE của MATLAB >> guide Hoặc File/Show GUI layout tool. Cửa sổ Guide Control Panel xuất hiện. Từ cửa sổ này có thể truy xuất đến các cửa sổ khác. Có thể chọn các mẫu giao diện có sẵn hay bấm OK để chọn GUI trống. ©Copyright 2007 MATLAB 159