1. Trang chủ
  2. » Công Nghệ Thông Tin

Học nhanh MatLab cơ bản.

50 398 0

Đ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

Nội dung

Giới thiệu về MatLab, Các lệnh cơ bản của MatLab, giúp người học nhanh chóng lắm bắt được các thành phần cơ bản của MatLab. Thông qua các ví dụ cơ bản người học hình thành cho mình kỹ năng về MatLab. Thừ đó, làm các bài toán nâng cao hơn.

HỌC MATLAB BẰNG THÍ DỤ Trònh Anh Ngọc 8/5/2009 Học MATLAB thí dụ Tài liệu viết với mục đích hướng dẫn sinh viên học nhanh Matlab Phần đầu tài liệu nội dung giảng tác giả Matlab học phần "Giải phương trình máy tính" Một số thí dụ, chương trình tính toán số lấy từ giảng "Giải tích số 1" cho lớp cử nhân tài năng, "Cơ học chất lỏng" tác giả Matlab phần mềm trợ giúp tính toán số ký hiệu, tài liệu gồm hai phần: (1) tính toán ký hiệu, (2) tính toán số Sau đọc xong tài liệu này, sinh viên có thể: - Dùng Matlab giải toán giải tích, đại số đại số tuyến tính; - Dùng Matlab để viết chương trình tính toán cho môn Phương pháp phần tử hữu hạn, Giải tích số, Cơ học vật rắn biến dạng, Cơ học chất lỏng Vai trò máy tính nghiên cứu ứng dụng toán học • Công cụ trợ giúp tính toán số ký hiệu Về tính toán số: giúp mô toán thuộc lãnh vực khoa học kỹ thuật, phân tích liệu Về tính toán ký hiệu: cho phép thực hiện, kiểm tra phép biến đổi toán học; dự đoán, thử nghiệm dự đoán toán học; đánh giá thực hành kết lý thuyết • Hiển thò kết đồ họa Matlab - phần mềm toán học Matlab ngôn ngữ thực dành cho tính toán, đặc biệt tính toán kỹ thuật Với Matlab ta tính toán, hình dung, lập trình cho đối tượng toán học Matlab hệ thống tương tác mà phần tử liệu mảng (array) Điều này, thể tên gọi (Matlab viết tắt Matrix laboratory), cho phép ta thực dễ dàng tính toán ma trận vectơ thường gặp toán kỹ thuật Hệ thống Matlab gồm năm phần chính: 1) Ngôn ngữ Matlab 2) Môi trường làm việc Matlab 3) Quản lý đồ họa 4) Thư viện hàm toán học Matlab 5) Giao diện chương trình ứng dụng Matlab Trong tài liệu ta làm quen với phần 1) - 4) Bạn đọc nên tìm Trònh Anh Ngọc tài liệu: Getting Started with MATLAB, MathWorks, Inc., 1998 Symbolic Math Toolbox User's Guide, MathWorks, Inc., 1998 tủ sách MathWorks để đọc thêm Matlab cần Lướt qua Matlab - nhìn đầu Trong mục ta lướt qua vòng Matlab để có nhìn khái quát tính đặc điểm đáng lưu ý Để học nhanh Matlab bạn phải đọc tài liệu với máy tính trước mặt Hãy thử thực thí dụ đưa tài liệu Quan sát "phản ứng" Matlab xử lý lệnh đưa vào Tự đặt thí dụ để thử nghiệm, đọc kỹ dòng cảnh báo, thông báo lỗi có Hình 1: Cửa sổ Matlab ◦ Để khởi động Matlab ta cần nhắp kép (double click) vào biểu tượng Học MATLAB thí dụ nó, vào menu start\All programs\Matlab 7.1 chọn Matlab 7.11 Một cửa sổ có tên Matlab (hay Matlab command) xuất với dấu nhắc lệnh >>(hình 1) Các lệnh Matlab nhập vào từ ◦ Để thoát (quit) cần nhắp chuột vào dấu X góc bên phải cửa sổ Matlab ◦ Tất đối tượng đưa vào Matlab phải "khai báo" cách xác đònh "nội dung" Vectơ ◦ Để tạo vectơ, thí dụ a, cửa sổ Matlab command ta nhập vào >> a = [1 5] sau nhấn enter Matlab trả về: a = Chú ý: thành phần vectơ nằm hai dấu ngoặc vuông, cách khoảng trắng Diễn ngữ "Matlab trả về" hiểu ngầm thí dụ sau Tạo vectơ b với thành phần lấy giá trò nguyên từ đến 10 >> b = 0:10 b = 10 Nếu muốn thành phần liên tiếp cách nhập vào >> c = 0:2:10 c = 10 Kích thước (chiều dài) vectơ cho nhờ hàm length, >> dai=length(c) dai= ◦ Tính toán vectơ đơn giản Cộng thành phần vectơ a với >> a + ans = 12 11 10 Chú ý: lệnh, biến đưa vào Matlab lưu giữ workspace (vùng làm việc) Có thể hình dung workspace tờ giấy nháp ta dùng làm tính, phép tính viết từ xuống dưới, ta xem lại kết thực hiện, xóa biến biểu thức đưa vào (dùng lệnh clear tenbien clear all - xóa tất cả) Nội dung workspace hiển thò cửa sổ Matlab ta dùng trượt bên phải cửa sổ Matlab để xem nội dung cũ(hình 2) Trong tính toán trên, ta không đònh phép gán, Matlab lưu trữ kết Tên Matlab 7.1 khác tùy thuộc phiên Matlab mà bạn dùng Trònh Anh Ngọc Hình 2: Nội dung workspace hiển thò cửa sổ Matlab tính toán biến tạm thời gọi "ans" Về mặt toán học ta cộng vectơ với số! Trong thí dụ Matlab mở rộng thành ma trận [3 3 3 3 3] có độ dài vectơ a thực phép cộng ◦ Nếu cần thực lại lệnh đưa vào trước ta tái lại lệnh cách nhấn phím ↑ số lần thích hợp mà không cần phải gõ lại lệnh Tính vectơ d tổng hai vectơ a b >> d = a + b d = 11 15 15 15 15 15 Chú ý: muốn cộng hai vectơ chúng phải có độ dài Phép trừ vectơ thực tương tự Ma trận ◦ Nhập ma trận vào Matlab giống nhập vectơ, ngoại trừ dòng cách dấu chấm phẩy enter (return): Học MATLAB thí dụ >> B = [1 4; 8; 10 11 12] hay >> B = [1 B 10 11 12] = 10 11 12 Kích thước ma trận cho hàm size, >> size(B) ans= ◦ Matlab thực hiệu nhiều phép tính ma trận, số phép tính thường dùng (bạn đọc tự đưa thí dụ để thử nghiệm), danh sách lệnh hiển thò dùng lệnh help Từ danh sách ta tra cứu cú pháp lệnh thông tin liên quan Phép cộng (trừ) hai ma trận tương tự trường hợp vectơ Đặc biệt, nhân ma trận với số viết theo thứ tự Thí dụ, A ma trận s số hai lệnh s*A A*s cho kết Chuyển vò: >> C = B ’ Nếu B ma trận phức B ’ cho chuyển vò liên hợp phức B Trong trường hợp muốn lấy chuyển vò B ta phải dùng ".'" >> D = B ’ Nhân hai ma trận: >> D = A * B Nếu muốn nhân phần tử tương ứng hai ma trận có kích thước ta dùng ".*" >> G = E * F Nếu E ma trận vuông phép nhân ma trận E với n lần thực phép lấy lũy thừa Thí dụ: >> E∧ Nếu muốn lũy thừa phần tử ma trận ta dùng ".∧" Thí dụ: >> E ∧3 Nghòch đảo ma trận vuông: >> inv(E) Các giá trò riêng: >> eig(E) Đa thức đặc trưng: >> poly(E) Trònh Anh Ngọc Hàm số ◦ Matlab có thư viện hàm toán học phong phú √ : sin, cos, −1 đònh nghóa sẵn Matlab >> sin(pi/4) log, exp, sqrt, Các số thường dùng : π, i (hay j) = ans = 0.7071 trả ◦ Đối số hàm ma trận Thí dụ, x=[1 2; 4], lệnh exp(x) ans = 2.7183 7.3891 20.0855 54.5982 ma trận exp(1) exp(2) exp(3) exp(4) ◦ Để tìm hiểu cách dùng hàm Matlab cần gõ >> help [ten ham] ◦ Matlab cho phép người sử dụng tạo hàm riêng cho lệnh function (sẽ giới thiệu đây) Đồ thò Trong Matlab để vẽ đồ thò hàm số ta dùng hàm plot Thí dụ để vẽ đồ thò hàm sin(t), trước hết ta tạo vectơ thời gian t tính giá trò hàm sin thời điểm >> t = 0:0.25:7; y =sin(t); >> plot(t,y) Chú ý: tên hàm (plot) viết chữ thường, dấu chấm phẩy cuối câu lệnh thò Matlab kết tính toán hình M-file M-file file văn (text) chứa mã Matlab Tên M-file có phần mở rộng ".m" Có hai loại M-file: ◦ Script, đối số nhập/xuất, giống "kòch bản" ghi lệnh tính toán mà người sử dụng yêu cầu Khi gõ tên file dấu nhắc lệnh nhấn phím enter, Matlab thực lệnh ghi file, liệu hành vùng làm việc (workspace) Trong thực hành, để kiểm soát liệu tính toán, script file thường bắt đầu lệnh clear all xóa tất biến lưu trữ workspace, khởi tạo lại biến mà script file cần dùng ◦ Function, có đối số nhập/xuất Loại file thường dùng để đònh nghóa hàm (giống chương trình con) Thí dụ M-file rank.m Học MATLAB thí dụ Hình 3: Đồ thò hàm y = sin(t) với ≤ t ≤ function r = rank(A,tol) % RANK Matrix rank % RANK(A) provides an estimate of the number of linearly % independent rows or columns of a matrix A % RANK(A,tol) is the number of singular values of A % that are larger than tol % RANK(A) uses the default tol = max(size(A)) * norm(A) * eps s = svd(A); if nargin = =1 tol = max(size(A)) * max(s) * eps; end r = sum(s > tol); Chú ý: function dòng thứ từ khóa Dòng cho tên function thứ tự đối số Tiếp theo dòng đầu dòng bình luận, bắt đầu %, dòng chúng Matlab hiển thò ta gõ lệnh help rank Phần lại file dòng khả thi Giới thiệu Symbolic Math Toolbox Mục giới thiệu nét Symbolic Math Toolbox, thành phần Matlab đảm trách việc tính toán ký hiệu 4.1 Trònh Anh Ngọc Đối tượng ký hiệu Đối tượng ký hiệu (symbolic object) hay sym cấu trúc liệu lưu trữ chuỗi (string) biểu diễn ký hiệu Đối tượng ký hiệu dùng để biểu diễn biến, biểu thức ma trận ký hiệu Để tạo biến biểu thức ký hiệu ta dùng hàm sym Thí dụ, >> x = sym(’x’) tạo biến ký hiệu x lưu trữ ký tự x >> a = sym(’alpha’) tạo biến ký hiệu a lưu trữ chuỗi ký tự alpha Thí dụ khác, >> rho = sym(’(1 + sqrt(5))/2’) tạo biến ký hiệu biểu diễn tỉ lệ vàng (golden ratio) 4.2 Các phép tính ký hiệu thường dùng Ta thực nhiều phép tính biến ký hiệu Dưới vài phép tính thường dùng SUBS - thay ký hiệu ◦ subs(s) thay tất biến biểu thức ký hiệu s giá trò nhận từ hàm gọi, hay vùng làm việc Thí dụ, giả sử a=980, C1=3 tồn vùng làm việc >> y=exp(-a*t)*C1; >> subs(y) trả ans=3*exp(-980*t) ◦ subs(s,new) thay biến ký hiệu tự s new Thí dụ, s biểu thức f=x∧2 >> subs(s,2) trả ans=4 (x thay biểu thức s) ◦ subs(s,old,new) thay old new biểu thức s Ở old biến ký hiệu, chuỗi biểu diễn tên biến hay chuỗi diễn tả biểu thức; new biến ký hiệu biến số biểu thức Thí dụ, subs(a+b,a,4) trả 4+b (a thay 4) Lệnh subs cho phép thay nhiều biến lúc Thí dụ, subs(cos(a)+sin(b),{a,b},{sym(’alpha’),2}) trả cos(alpha)+sin(2) (a thay chuỗi alpha, b thay 2) Nếu old new vectơ hay mảng có kích thước, phần tử old thay phần tử tương ứng new Nếu s old vô hướng new mảng hay mảng ma trận (cell array), vô hướng mở rộng kết mảng Thí dụ, subs(exp(a*t),’a’,-[1 3; 2]) trả [ exp(-t), exp(-3*t)] Học MATLAB thí dụ [ exp(-4*t), exp(-2*t)] Trong thí dụ a mở rộng thành mảng thay phần tử tương ứng phần tử tương ứng mảng -[1 3; 2] Về mặt toán học, phép tính thực sau exp −1 −3 −4 −2 ∗t = exp −t −3 ∗ t −4 ∗ t −2 ∗ t = exp(−t) exp(−3 ∗ t) exp(−4 ∗ t) exp(−2 ∗ t) Nếu new ma trận mảng hay ma trận số, thay thực phần tử; nghóa subs(x*y,{x,y},{A,B}) trả A.*B A, B ma trận số) Thí dụ, subs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]}) trả [ 0, -1] [ 2, 0] EXPAND - khai triển biểu thức ký hiệu expand(s) viết phần tử biểu thức ký hiệu s tích thừa số expand hay dùng với đa thức, dùng để khai triển biểu thức lượng giác, hàm mũ hàm logarit Thí dụ: 1) ((x-2)*(x-4)) trả x∧2-6*x+8 2) expand(cos(x+y)) trả cos(x)*cos(y)-sin(x)*sin(y) 3) expand(exp((a+b)∧2)) trả exp(a∧2)*exp(a*b)∧2*exp(b∧2) 1] 4) expand([sin(2*t), cos(2*t)]) trả [2*sin(t)*cos(t), 2*cos(t)∧2SIMPLIFY - đơn giản biểu thức ký hiệu simplify(s) đơn giản phần tử ma trận ký hiệu s Thí dụ: 1) simplify(sin(x)∧2 + cos(x)∧2) trả 2) Với rho biến biểu diễn tỉ lệ vàng (thí dụ trên) >> f = rho∧2-rho-1 f = (1/2+1/2*5∧(1/2))∧2-3/2-1/2*5∧(1/2) >> simplify(f) f = 3) simplify(exp(c*log(sqrt(alpha+beta)))) trả (alpha+beta)∧(1/2*c) Chú ý, lệnh gán biểu thức >> f = sym(’a*x∧2 + b*x + c’) không tạo biến tương ứng với từ a, b, c, x biểu thức Để thiết lập phép toán ký hiệu (e.g., tích phân, vi phân, thay thế, etc.) f, ta cần phải tạo 35 Học MATLAB thí dụ if biểu thức elseif else lệnh biểu thức lệnh lệnh end Các lệnh thực phần thực biểu thức khác không Các phần else elseif tùy chọn 'biểu thức' lệnh if thường có dạng: biểu thức R biểu thức R ==, , =, hay ∼= FOR - lặp lại lệnh số lần đònh Dạng chung lệnh for for biến = giá trò đầu : bước gia tăng : giá trò cuối lệnh end 'biến' lấy giá trò 'giá trò đầu', sau lần thực lệnh tăng thêm lượng 'bước gia tăng', 'biến' "nhỏ hơn" lệnh thực WHILE - lặp lại số lần không xác đònh Dạng chung lệnh while while biểu thức lệnh end Các lệnh thực phần thực 'biểu thức' khác không 'biểu thức' lệnh while thường có dạng: biểu thức R biểu thức R ==, , =, hay ∼= Lệnh break dùng để dừng vòng lặp SWITCH - chuyển đổi nhiều trường hợp sở biểu thức Dạng chung lệnh switch 36 Trònh Anh Ngọc switch biểu thức case trường hợp 1, lệnh case trường hợp lệnh otherwise lệnh end Các lệnh theo sau case thứ i thực 'biểu thức' có giá trò 'trường hợp i' Ngoài trường hợp liệt kê lệnh theo sau otherwise thực 5.2 Một số chương trình thí dụ Mục chứa đựng số chương trình đơn giản viết ngôn ngữ Matlab Mỗi thí dụ bắt đầu sở thuật toán cuối chương trình tính Bạn đọc nên đọc kỹ phần thuật toán để hiểu mục đích nội dung chương trình Hãy chạy thử tìm cách sửa đổi Thí dụ 11 Giải phương trình đại số tuyến tính AX = B - Phép khử Gauss Nhắc lại, hệ phương trình đại số tuyến tính có dạng a11 x1 + a12 x2 + + a1n xn = b1 a21 x1 + a22 x2 + + a2n xn = b2 an1 x1 + an2 x2 + + ann xn = bn , vế phải bi , i = 1, , n, hệ số aij , i, j = 1, , n liệu cho trước; x1 , , xn ẩn Ý tưởng đằng sau phương pháp khử Gauss dùng phép biến đổi sơ cấp để khử ẩn hệ Hệ phương trình tương đương, sau biến đổi, có dạng tam giác trên, giải phép ngược Nếu a11 = 0, bước ta khử x1 khỏi (n − 1) phương trình cuối cách trừ phương trình thứ i với nhân tử mi1 = ai1/a11, i = 2, , n lần phương trình đầu Điều sinh hệ rút gọn gồm (n − 1) phương trình với ẩn x2 , , xn , hệ số cho (2) aij = aij − mi1a1j , (2) bi = bi − mi1 b1, i = 2, , n 37 Học MATLAB thí dụ Nếu a22 = 0, cách tương tự ta khử x2 từ (n − 2) phương trình cuối hệ phương trình Sau k − bước, k ≤ n, phép khử Gauss ma trận A trở thành ma trận có dạng (2)  A(k) (1) a11      =     (1) (1) (1) a12 a1k a1n (2) (2) (2) a22 a2k a2n (k) (k) akk akn (k) (k) ank ann   (1) b1 (2) b2           (k) , b =   (k)   b   k     (k) bn       ,     ta đặt A(1) = A, b(1) = b Các phần tử chéo a11 , a22 , , xuất trình khử gọi phần tử trụ Ký hiệu Ak ma trận A, (1)    Ak =   a11 a12 a1k a21 a22 a2k ak1 ak2 akk (2)      Vì đònh thức ma trận không thay đổi phép biến đổi sơ cấp thứ ba nên (1) (2) (k) det(Ak ) = a11 a22 · · · akk , k = 1, , n Các phần tử trụ aii , i = 1, , n, phép khử Gauss khác không det(Ak ) = 0, k = 1, , n Trong trường hợp ta khử sau bước thứ (n − 1), lại phương trình (i) (n) a(n) nn xn = bn (n) (ann = 0) Các ẩn phương trình tính công thức truy hồi n xn = bn(n)/a(n) nn , xi = (i) bi (i) − aik xk k=i+1 Quá trình gọi ngược (i) /aii , i = n − 1, , 38 Trònh Anh Ngọc Giả sử bước thứ k phép khử Gauss ta có (k) akk = Nếu A không suy biến, k cột đầu ma trận A độc lập tuyến tính Điều với ma trận biến đổi Nghóa tồn apk = (k < p ≤ n) Bằng cách hoán vò dòng k dòng p phần tử lấy làm phần tử trụ phép khử tiếp tục Tóm lại, ma trận không suy biến dẫn dạng tam giác phép khử Gauss phép hoán vò dòng dùng cần Nếu rank(A) < n xảy bước thứ k − (k) aik = 0, i = k, , n Nếu toàn phần tử aij = 0, i, j = k, , n rank(A) = k − ta dừng lại Ngược lại, có phần tử khác không, chẳng hạn (k) a(k) pq , ta mang đến vò trí trụ cách hoán vò dòng k với p, cột k với q (khi cột ma trận A bò hoán vò ta phải hoán vò phần tử tương ứng vectơ x Tiến hành theo cách ma trận A đưa dạng hình thang  A(r)      =     (1) a11 a1r arr ar,r+1 0 (1) (r) (1) a1,r+1 (r) (1)  a1n    (r)  arn  ,      b(r) (1) b1     (r)  br =  (r)  br+1    (r) bn       ,     bước r = rank(A) Các phần tử trụ nhỏ dẫn đến kết không xác Có cách để tránh phần tử trụ nhỏ gọi phép xoay cục Theo cách này, khử xk , ta chọn hệ số lớn (về giá trò tuyệt đối) xk n−k +1 phương trình cuối phần tử trụ Nghóa là, |alk | lớn |ajk | với j = k, k + 1, , n (k) (k) ta hoán vò dòng k l Bằng cách đánh số lại ta giả sử phần tử trụ akk có độ lớn lớn (k) Học MATLAB thí dụ 39 Áp dụng giải hệ phương trình x1 + x2 + x3 = 3x1 + x2 − 3x3 = x1 − 2x2 − 5x3 = 10 Để lưu giữ ma trận hệ số a vế phải b, chương trình ta đưa vào ma trận hệ số nới rộng ad Lệnh [v,index]=max(ad(k:n,k)) trả hai giá trò: v phần tử lớn vectơ ad(k:n,k) index vò trí phần tử % chuong trinh - giai he phuong dstt clear all a=[1 1; -3; -2 -5]; b=[1;5;10]; n=size(a,1); % ma tran noi rong ad=a; ad(:,n+1)=b; for k=1:n-1 % tim phan tu tru [v,index]=max(ad(k:n,k)); if v==0 disp(’he phuong trinh suy bien’) return end % dong chua phan tu tru index=index+k-1; % hoan vi dong k va dong index tam=ad(index,:); ad(index,:)=ad(k,:); ad(k,:)=tam; % dung dong k khu cac dong duoi for i=k+1:n for j=k:n+1 ad(i,k:n+1)=ad(i,k:n+1)-(ad(i,k)/ad(k,k))*ad(k,k:n+1); end end end % phep the nguoc if ad(n,n)==0 disp(’he phuong trinh suy bien’) return 40 Trònh Anh Ngọc end x(n)=ad(n,n+1)/ad(n,n); for i=n-1:-1:1 x(i)=ad(i,n+1); for j=i+1:n x(i)=x(i)-ad(i,j)*x(j); end x(i)=x(i)/ad(i,i); end disp(’nghiem cua he:’) x Kết tính toán nghiem cua he: x = 6.0000 -7.0000 2.0000 Thí dụ 12 Giải phương trình f (x) = - Thuật toán chia đôi khoảng Hình 8: Đồ thò hàm số f (x) = x3 − 3x2 + x + Nếu hàm liên tục f (x) có dấu đối điểm x = B x = C, có không điểm khoảng B C Phương pháp chia đôi (hay tìm kiếm nhò phân) đặt kiện Nếu f (B)f (C) < 0, hàm f (x) đánh giá điểm M = (B + C)/2 khoảng Nếu f (M ) = 0, không điểm tìm thấy Nếu khác, f (B)f (M ) < f (M )f (C) < Trong trường hợp đầu có không điểm M B, trường hợp thứ hai có nghiệm C M Theo cách khoảng chứa nghiệm tìm thấy mà có chiều dài nửa chiều dài khoảng ban đầu Thủ tục lặp lại đònh vò nghiệm với độ xác mong muốn Học MATLAB thí dụ 41 Áp dụng giả√i phương trình x3 − 3x2 + x + = (phương trình có nghiệm xác: 1, ± 2) Để có nhìn sơ phương trình cho ta dùng Matlab vẽ đồ thò hàm f (x) = x3 − 3x2 + x + Từ đồ thò (hình 8) ta thấy phương trình có ba nghiệm đơn, nằm khoảng [−0.5, 0], [0.5, 1.5], [2, 3] Như thí dụ áp dụng ta viết chương trình tìm nghiệm xấp xỉ phương trình khoảng [−0.5, 0] % chuong trinh - giai phuong trinh bang phuong phap chia % doi khoang % chuong trinh goi function f1 clear all b=-0.5; c=0; epsilon=10^(-4); m=b; % m duoc khoi tao bang b while (abs(c-b)>=epsilon)&(f1(m)~=0) m=(b+c)/2; if f1(b)*f1(m)[...]... Viết chương trình bằng Matlab Chương trình viết bằng ngôn ngữ Matlab gần giống các ngôn ngữ cấp cao quen thuộc như Pascal, C Dưới đây ta sẽ học cách viết chương trình thông qua các thí dụ cụ thể Nhưng trước hết ta cần biết các cấu trúc thường dùng trong ngôn ngữ Matlab 5.1 Các cấu trúc trong ngôn ngữ Matlab IF - thực hiện các lệnh có điều kiện Dạng chung của lệnh if là 35 Học MATLAB bằng thí dụ if biểu... đònh rõ Học MATLAB bằng thí dụ 13 >> ezplot(sin(x),[0 7]) Hình 5: Đồ thò hàm sin(x) dùng lệnh ezplot(sin(x),[0 7]) 4.4 Biến ký hiệu mặc nhiên Khi ta đưa vào một hàm toán học bằng biểu thức của nó, thí dụ >> clear all >> syms x n a t b >> f = x∧n >> g = sin(a*t+b) Matlab sẽ tự động nhận dạng đâu là biến ký hiệu Và khi được yêu cầu tính đạo hàm của các hàm này, không chỉ đònh biến độc lập, thì Matlab. .. thức của un có số phép tính tăng theo chỉ số n (không xác đònh) 3 Từ đây, ngoài một vài trường hợp, cú pháp của các lệnh Matlab sẽ không được phát biểu tường minh, bạn nên học (đoán) cú pháp của nó thông qua thí dụ hiện hành, và chỉ nên dùng đến help khi thấy thật cần thiết 17 Học MATLAB bằng thí dụ hạn của dãy >> limit(un,n,inf) ans = log(2) Kết quả trả về cùng biểu thức xác đònh un gợi ý cho ta, un... Mục đích và cú pháp của hàm này được thể hiện nếu ta gọi help dsolve từ dấu nhắc Matlab >> y=dsolve(’(1+x∧2)*Dy+y’,’y(1)=1’,’x’) y = 1/exp(-1/4*pi)*exp(-atan(x)) Ở đây ta chỉ dùng Matlab trợ giúp khi tính toán Đây là phương trình vi phân có biến phân ly, tách biến ta được: dy dx + 2 y x +1 >> clear all >> syms x y 19 Học MATLAB bằng thí dụ Hình 6: Đồ thò hàm f (t), thí dụ 4 >> tp1=int(1/y,y) tp1 = log(y)... = (C + sin x)x Thí dụ 7 Cho phương trình vi phân tuyến tính cấp hai thuần nhất y + a(x)y + b(x)y = 0 22 Trònh Anh Ngọc Giả sử phương trình có nghiệm cơ sở y1 , tìm nghiệm cơ sở còn lại Nghiệm cơ sở thứ hai được tìm dưới dạng: y2 (x) = u(x)y1 (x) Dùng Matlab để xác đònh u(x) >> syms x Đưa vào các hàm trừu tượng >> a=sym(’a(x)’); >> b=sym(’b(x)’); >> y1=sym(’y1(x)’); >> u=sym(’u(x)’); >> y2=u*y1; Thay... dx +2 d u(x) dx d2 u(x) y1(x) dx2 d d y1(x) + a(x) u(x) y1(x) dx dx Hệ số của u bằng không do y1 là nghiệm cơ sở Matlab không phát hiện được điều này Ta phải giúp! >> p=subs(p,diff(y1,2)+diff(y1)*a+b*y1,0); >> pretty(p) d2 d u(x) y1(x) + 2 u(x) 2 dx dx d y1(x) + a(x) dx d u(x) y1(x) dx 23 Học MATLAB bằng thí dụ Để >> >> >> hạ bậc đặt v = u hay u = vdx Trước hết đưa vào hàm trừu tượng v v=sym(’v(x)’);... s dưới dạng thức toán học, dễ đọc hơn Cảnh báo của Matlab "Explicit integral could not be found" và cho biết "vấn đề" nảy sinh ở đâu là hiển nhiên vì các hàm cho trước không có biểu thức toán học cụ thể Thí dụ 8 Tìm nghiệm cơ sở của phương trình Cauchy - Euler x2y + axy + by = f (x), trong đó a, b là các hằng số Ta tìm nghiệm dưới dạng y = xm Dùng Matlab để xác đònh m >> clear all >> syms a b x m >>... 1/4, 1/5 ] b) Xây dựng các biến thực và phức Lệnh sym cho phép chỉ đònh các tính chất toán học của biến ký hiệu bằng cách dùng tùy chọn ’real’ Nghóa là, các lệnh Học MATLAB bằng thí dụ 11 >> x = sym(’x’,’real’); >> y = sym(’y’,’real’); hay hiệu quả hơn >> syms x y real tạo các biến ký hiệu x và y có tính chất toán học thêm vào là các biến thực Điều này có nghóa là biểu thức f = x∧2 + y∧ 2 là không âm... giờ ta giải phương trình Phương trình thuần nhất tương ứng (phương trình có biến phân ly) y − y dy dx = 0 hay = x y x Dùng Matlab trợ giúp lấy tích phân >> clear all >> syms x >> int(1/x,x) ans = log(x) Vì ln y = ln x nên nghiệm cơ sở: y1 = x Hàm Green cấp một: G1(x, s) = x/s Dùng Matlab trợ giúp tìm nghiệm riêng >> y1=x; >> syms s >> yp=subs(int(y1/subs(y1,x,s)*s*cos(s),s),s,x) yp = x*sin(x) Vậy nghiệm... a(3,:)=a(3,:)+7*a(2,:) a = 1 2 4 31 15 Học MATLAB bằng thí dụ 0 1 2 14 0 0 3 15 Bạn đọc thực hiện nốt phần còn lại (phép thế ngược) Thí dụ 2 Giải và biện luận hệ phương trình đại số tuyến tính x + 2y + 2z = 0 −2x + (m − 2)y + (m − 5)z = 2 mx + y + (m + 1)z = −2 Dùng quy tắc Cramer >> clear all >> syms m >> a=[1 2 2; -2 m-2 m-5; m 1 m+1]; >> b=[0; 2; -2]; Tính các đònh thức cơ bản >> d1=det(a) d = m∧2-4*m+3 ... tủ sách MathWorks để đọc thêm Matlab cần Lướt qua Matlab - nhìn đầu Trong mục ta lướt qua vòng Matlab để có nhìn khái quát tính đặc điểm đáng lưu ý Để học nhanh Matlab bạn phải đọc tài liệu với... thí dụ nó, vào menu startAll programs Matlab 7.1 chọn Matlab 7.11 Một cửa sổ có tên Matlab (hay Matlab command) xuất với dấu nhắc lệnh >>(hình 1) Các lệnh Matlab nhập vào từ ◦ Để thoát (quit)... thò cửa sổ Matlab ta dùng trượt bên phải cửa sổ Matlab để xem nội dung cũ(hình 2) Trong tính toán trên, ta không đònh phép gán, Matlab lưu trữ kết Tên Matlab 7.1 khác tùy thuộc phiên Matlab mà

Ngày đăng: 21/12/2016, 20:58

TỪ KHÓA LIÊN QUAN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w