Đề tài Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật

mục lục

Phần 1 Giới thiệu về Matlab

1. Bắt đầu với Matlab

2. Các khái niệm cơ bản

a. Câu lệnh và biến

b. Các phép toán

c. Số dùng trong Matlab

d. Nhập số liệu từ bàn phím

e. In kết quả ra màn hình

f. Ma trận

g. Số phức và ma trận phức

3. Các hàm toán học

a. Các hàm l-ợng giác

b. Các hàm toán sơ cấp

4. Các thao tác đặc biệt trên ma trận

5. Thực hiện các phép tính trên ma trận

a. Các phép tính trên ma trận

b. Các phép tính phần tử - phần tử của ma trận

6. Các hàm thực hiện các phép tính về đa thức

7. Các hàm phân tích dữ liệu

8. Hàm của hàm

a. Hàm tích phân số

b. Hàm tìm nghiệm ph-ơng trình phi tuyến và các hàm tối -u

c. Hàm giải ph-ơng trình vi phân

9. Các toán tử điều khiển

10. Các loại file trong Matlab

11. Xử lí tín hiệu

12. Vẽ đồ thị

Phần 2 ứng dụng Matlab giải một số

bài toán kĩ thuật

1. Bài toán về mạch điện

2. Giải bài toán động học cơ cấu phẳng

3. Giải bài toán cân bằng máy

4. Tính thiết kế bộ truyền bánh răng

5. Tính sức bền trục

6. Tính dao động

a. Tính dao động hệ một bậc tự do

b. Tính dao động hệ hai bậc tự do

c. Xác định tần số dao động riêng của hệ nhiều bậc tự do

Kết luận

tài liệu tham khảo

pdf60 trang | Chia sẻ: maiphuongdc | Lượt xem: 12750 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
phép tính. Ví dụ: X.^Y, X.*Y, hay X.\Y. Nếu X và Y là các ma trận ( hay véc tơ) các phần tử của X sẽ đ−ợc nâng lên luỹ thừa hoặc đ−ợc nhân , chia bởi các phần tử t−ơng ứng của ma trận Y. Dẽ thấy là ma trận X và Y phải cùng cỡ. - Luỹ thừa các phần tử ma trận Ví dụ: >> x=[1 2 ; 3 4] x = 1 2 3 4 >> y=[ 3 4; 1 2] y = 3 4 1 2 >> x.^y ans = 1 16 3 16 x = 1 2 3 4 Nếu y không phải là ma trận mà là một số, ví dụ y=2, thì kết quả nh− sau: >> x.^2 ans = 1 4 9 16 - Nhân phần tử ma trận Ví dụ >> x.*y ans = 3 8 2 8 - Chia phần tử ma trận Ví dụ; >> x./y ans = 0.3333 0.5000 3.0000 2.0000 6. Các hàm thực hiện các phép tính với đa thức - Hàm poly : Xác định đa thức khi biết tr−ớc nghiệm Quy các viết p=poly(b) trong đó b là một ma trận hàng. Kết quả sẽ cho ra là một ma trận hàng mà mỗi phần tử của nó là một hệ số của một đa thức có nghiệm là các phần tử của ma trận b ( theo số mũ giảm dần). Ví dụ: b=[2 1 -4 3]; p=poly(b) p = 1 -2 -13 38 -24 Theo kết quả trên thì các số 2, 1, -4 và 3 là nghiệm của đa thức : x4- 2x 3 - 13x2 + 38x - 24 = 0 - Hàm roots : Xác định nghiệm của đa thức Quy cách viết : a=roots(b) trong đó b là ma trận hàng với các phần tử là các hệ số của đa thức (theo số mũ giảm dần). Kết quả cho ra là một ma trận cột mà các phần tử là nghiệm của đa thức. Ví dụ: Thử tìm lại nghiệm của đa thức trên. Ta viết các lện nh− sau: p=[ 1 -2 -13 38 -24 ]; r=roots(p) r = -4.0000 3.0000 2.0000 1.0000 Ta thấy kết quả hoàn toàn chính xác. - Hàm conv : Dùng nhân đa thức. Quy cách viết: a=conv(b,c) trong đó b,c là hai ma trận hàng có các phần tử là các hệ số của các đa thức cần nhân. Kết quả cho ra là ma trận a có các phần tử là hệ số của ma trận tích. Ví dụ : cần nhân hai đa thức x3+2x2+6 và 3x4-6x2+5x-10 ta làm nh− sau: b=[1 2 0 6]; c=[3 0 -6 5 -10]; a=conv(b,c) a = 3 6 -6 11 0 -56 30 -60 Vậy đa thức tích là: 3x7+ 6x6- 6x5 + 11x4 - 56x2 + 30x – 60 - Hàm deconv : Dùng chia hai đa thức Qui cách viết nh− sau: [ m , n] = deconv(p,q) với p và q là hai ma trận hàng có các phần tử là các hệ số của đa thức bị chia và đa thức chia, còn các phần tử của ma trận m,n là các hệ số của đa thức th−ơng và phần d−. Ví dụ : Ta thử chia ngay đa thức tích vừa có ở trên cho đa thức có các hệ số là các phần tử của ma trận c, tức đa thức: 3x4-6x2+5x-10. a=[3 6 -6 11 0 -56 30 -60]; c=[3 0 -6 5 -10]; [b,d]=deconv(a,c) b = 1 2 0 6 d = 0 0 0 0 0 0 0 0 Ta thấy kết quả là hoàn toàn đúng. 7. các Hàm dùng phân tích dữ liệu Các hàm tìm giá trị cực đại, cực tiểu và trung bình - Hàm max : Tìm giá trị lớn nhất Qui cách viết ln=max(a) với a là ma trận hàng. Kết quả cho ra là một phần tử có giá trị lớn nhất của a Ví dụ: a=[ 10 2 1 -30 23 8]; ln=max(a) ln = 23 - Hàm min : tìm giá trị cực tiểu Ví dụ: bn=min(a) bn = -30 bn=mi - Hàm mean : Tìm giá trị trung bình Ví dụ: tb=mean(a) tb = 2.3333 Nếu a là một ma trận có nhiều hàng nhiều cột thì các giá trị max, min hoặc trung bình sẽ là các giá trị t−ơng ứng đối với các cột của ma trận. Ví du : >>b=[1 2 3; 4 5 6 ; 7 8 9] b = 1 2 3 4 5 6 7 8 9 >>ln=max(b) ln = 7 8 9 >>bn=min(b) bn = 1 2 3 >>tb=mean(b) tb = 4 5 6 - Hàm sum : dùng tính tổng Ví dụ: Tính tổng các phần tử của ma trận a nh− sau T=sum(a) T = 26 - Hàm diff : Tính giá trị sai khác của hai số đứng liền nhau. Qui cách viết: s=diff(x) với x là một ma trận hàng hoặc cột. Ví dụ: >>x=[ 1.2 1.4 1.8 2.1 3 ]; >> s=diff(x) s = 0.2000 0.4000 0.3000 0.9000 Ta dễ dàng thấy rằng hàm diff này có thể dùng để tính gần đúng đạo hàm. Nếu x là một ma trận bình th−ờng thì quá trình tính sẽ đ−ợc thực hiện theo thứ tự các cột. - Hàm Interp1 : Dùng tìm các giá trị bị khuyết. Ví dụ: Đã biết giá trị của hàm y=x3-3x+4 tại các điểm có x=0,1,2,3,4 và 5. Hãy xác định giá trị của y tại các điểm có x= 0,3, 0,5, ..., 4.2, 4,8. Ta viết các lệnh nh− sau: x1=0:5; y1=x1.^3-3*x1+4; x2=[0 .3 .5 1.2 1.4 2.1 3.3 4.2 4.8 5]; y2=interp1(x1,y1,x2,'cubic') plot(x1,y1,'ro',x2,y2,'b+') Kết quả cho ở dạng số và đồ thị d−ới đây y2 = Columns 1 through 7 4.0000 2.7700 2.2500 2.2240 2.5920 7.0330 30.1210 Columns 8 through 10 65.6800 100.4800 114.0000 Đó là 10 giá trị của y ứng với 10 giá trị của x ( trong ch−ơng trình tính là x2). Còn đồ thị sẽ cho thấy sự ppù hợp của các kết quả này: Các điểm vẽ bằng dấu ‘+’ là biểu thị các điểm cần tìm, còn các điểm vẽ bằng dấu ‘o’ là t−ơng ứng các điểm đã cho. 0 1 2 3 4 5 0 2 0 4 0 6 0 8 0 1 0 0 1 2 0 8. Hàm của hàm Có nhiều hàm trong Matlab không chỉ làm việc với các ma trận số mà còn làm việc với các hàm toán. Các hàm của hàm này bao gồm các hàm dùng để tính tích phân, giải các ph−ơng trình phi tuyến và giải các ph−ơng trình vi phân. a. Hàm dùng để tích phân số: hàm quad hoặc quad8 Ví dụ: Cần tính tích phân của hàm f(x) = 3+sin2x/(4+2cosx) với cận từ 0 đến 4, ta tiến hành nh− sau: Viết một file hàm có tên tfan1.m nh− d−ới đây: function f=tfan1(x) f=3+sin(2*x)/(4+2*cos(x)); và một file chính có tên tfan.m: tf=quad8('tfan1',0,4) Chạy ch−ơng trình kết quả cho giá trị của tích phân: tf = 12.0517 b. Hàm để tìm nghiệm ph−ơng trình phi tuyến và các hàm tối −u - Hàm fzero : xác định nghiệm của hàm một biến. - Hàm fmin : tính giá trị cực tiểu của hàm một biến. - Hàm fmins : tính các giá trị cực tiểu của hàm nhiều biến Ví dụ: Dùng hàm fzero tìm nghiệm của ph−ơng trình sau tại vị trí gần x=1 : y=2- 6sinx / (1+x); Ta viết file hàm nghiem1.m nh− sau: function y=nghiem(x) y=2-6*sin(x)./(1+x); Sau đó viết file chính nghiem.m: x1=fzero('nghiem1',1) Chạy ch−ơng trình chính, kết quả cho trên màn hình nh− sau: Zero found in the interval: [0.36, 1.4525]. x1 = 0.5385 Để thử lại, ta thay x=x1 vào ph−ơng trình ban đầu để xem kết quả hai vế có bằng 0 hay không. y=2-6*sin(.5385)/(1+.5385) y = -6.0516e-005 Ta thấy y~ 0 và có thể nói kết quả đủ chính xác. c. Hàm để giải ph−ơng trình vi phân : hàm ode23 và ode34 Ví dụ: Giải ph−ơng trình vi phân Van de Pol có dạng nh− sau: x’’+( x2- 1 ) x’+ x=0 Ta viết lại ph−ơng trình trên d−ới dạng hệ ph−ơng trình vi phân bậc nhất: x1’= x1(1- x2 2 ) - x2 x2’= x1 Viết một file hàm mang tên ftvf.m mô tả hệ ph−ơng trình vi phân: function xc=ftvf(t,x) xc=zeros(2,1); xc(1)=x(1).*(1-x(2).^2)-x(2); xc(2)=x(1); Viết file chính có tên ftvf0.m nh− d−ới đây: t0=0; t1=20;% Thoi diem dau va cuoi x0=[0 .2]; % Dieu kien ban dau [t,x]=ode23('ftvf',t0,t1,x0); plot(t,x) Chạy ch−ơng trình kết quả cho d−ới dạng đồ thị nh− d−ới đây: 0 5 1 0 1 5 2 0 -3 -2 -1 0 1 2 3 9. Các toán tử điều khiển Cũng nh− các phần mềm lập trình khác, các toán tử điều khiển cũng có trong Matlab. Đó là toán tử vòng lặp for, while và toán tử lựa chọn if. - Toán tử for Dạng chung của toán tử này đ−ợc viết nh− sau: for biến = biểu thức các câu lệnh end Biểu thức ở đây th−ờng có dạng m:n hoặc m:i:n, trong đó m, n là giá trị đầu và cuối, còn i là gia số. Ví dụ: for k=1: n a(k)=sin(k*pi/5); b(k)=có(k*pi/5); end - Toán tử while Dạng chung của lệnh vòng lặp này có dạng sau: while biểu thức các câu lệnh end Biểu thức ở đây là biểu thức quan hệ. Ví dụ: d=1; while d>0.001 z1=z2-sin(z2)/(z2+2); d=abs(z2-z1); z2=z1; end - Toán tử điều kiện if Toán tử có dạng chung nh− sau: if biểu thức các câu lệnh elseif biểu thức các câu lệnh ... ... else các câu lệnh end Cũng nh− đối với toán tử while biểu thức ở đây cũng là biểu thức quan hệ. Ví dụ: for k=1: n for p=1: m if k= =p z(k,p)=1; elseif k<p z(k,p)=-1 ; else z(k,p)=0; end end end - Câu lệnh Break Lệnh Break cho phép thoát ra khỏi vòng lặp. Ví dụ: k=input(' k='); if k>0 break else a=5*k+4 end 10. các loại file dùng trong matlab Có hai loại file là M-File và file dữ liệu (data file) Các file có chứa các lệnh của Matlab đ−ợc gọi là M- file . Sở dĩ gọi là M- file vì phần mở rộng của các file này là .m. Có hai loại M- file là script file và function file (file hàm) Script File Khi Script đ−ợc kích hoạt Matlab đơn giản thực hiện các lệnh tìm thấy trong file. Các câu lệnh trong file này thì hoạt động trên toàn bộ các dữ liệu trong Workspace. Ví dụ : file lg.m d−ới đây là một script file: % File dung tinh ham luong giac va ve do thi f1=0:2*pi/60; a=3*sin(f1)+4.5*cos(f1+.6); plot(f1,a) Sau khi tính toán và vẽ đò thị xong các biến f1 và a vẫn còn l−u trong workspace Function File Là một M-File có chứa từ function tại vị trí đầu tiên trên dòng đầu của file. Với function file, các biến đ−ợc định nghĩa và hoạt động chỉ trong phạm vi file, chứ không có tính toàn cục nh− trong script file. Function file rất tiện ích trong việc mở rộng thêm khả năng của Matlab, cụ thể là tạo thêm đ−ợc các Matlab file mới. D−ới đây là một ví dụ về function file đ−ợc tạo để giải ph−ơng trình bậc hai, tên file là ftb2.m : function [x1 , x2] = ftb2(a,b,c) % File ham nay dung de giai Fuong trình bac hai : ax^2+bx+c=0 % voi a, b, c la cac hang so cho truoc. Cac nghiem là x1 va x2 delta=b^2-4*a*c; x1=(-b+sqrt(delta)/(2*a); x2=(-b-sqrt(delta)/(2*a); Hàm này dùng để giải ph−ơng trình bậc hai với lệnh gọi ra là: [nghiem1, nghiem2] = ftb2(10,-6.5,-3.5); File dữ liệu ( data file) Ta có thể ghi số liệu vào một file gọi là file số liệu với phần mở rộng là .dat. Khi cần file có thể đ−ợc gọi ra. D−ới đây là ví dụ về tạo và gọi file số liệu: Giả sử ta có một ma trận hàng a nh− sau: >>a=1:8 a = 1 2 3 4 5 6 7 8 Giờ ta muốn ghi các giá trị của ma trận a vào một file dữ liệu có tên là sl1.dat, ta dùng lệnh save với qui cách viết nh− sau: >> save sl1.dat a -ascii Khi đó ma trận a đã đ−ợc l−u trong fil sl1.dat. Nếu muốn gọi ra các số liệu này và gán cho cho nó một tên biến mới, ví dụ là x, ta dùng lệnh load với qui cách viết nh− sau: >>load sl1.dat >> x=sl1 x = 1 2 3 4 5 6 7 8 11. Xử lí tín hiệu Matlab có một số hàm dùng để xử lí tín hiệu số d−ới đây: abs - giá trị (mô đun) của số phức angle – góc pha conv - tích chập ( convolution) deconv – ( deconvotution) fft - biến đổi Fu ri ê nhanh ift - biến đổi ng−ợc Fu ri ê fftshift Ví dụ: cho x là một ma trận cột nh− sau: x=[ 4 3 7 -9 1 0 0 0 ]’ ; Biến đổi Fu ri ê nhanh của x đ−ợc viết nh− sau: y=fft(x) Kết quả cho nh− d−ới đây: y = 6.0000 11.4853 + 2.7574i -2.0000 +12.0000i -5.4853 -11.2426i 18.0000 -5.4853 +11.2426i -2.0000 -12.0000i 11.4853 - 2.7574i 12. vẽ đồ thị Matlab rất mạnh với việc vẽ đồ thị. D−ới đây trình bày cách vẽ đồ thị trong không gian hai chiều (2D) và ba chiều (3D). a.Vẽ đồ thị 2D Vẽ các đ−ờng cong thông th−ờng: Dùng lệnh plot với qui cách viết nh− sau: plot(x,y) trong đó x và y là các ma trận hàng (hoặc cột ) cùng cỡ. Matlab sẽ vẽ ra một đ−ờng cong của y theo x. Nếu bạn muốn chọn màu và kiểu nét vẽ cho đ−ơng cong có thể làm theo ví dụ sau: plot(x,y, 'r*') Khi chạy, Matab sẽ cho bạn đ−ờng cong tạo bởi các dấu *** và có màu đỏ (chữ r đứng cho từ red trong tiếng Anh, nghĩa là đỏ). D−ới đây là bảng kí hiệu màu và kiểu nét vẽ dùng khi vẽ đồ thị: Biểu t−ợng Màu sắc Biểu t−ợng Loại đ−ờng nét y m c r g b w k Vàng Đỏ t−ơi Xanh lá mạ Đỏ Xanh lá cây Xanh n−ớc biển Trắng Đen . ° ì + ∗ - : -- -. Điểm Vòng tròn Dấu nhân Dấu cộng Dấu sao Nét liền Nét chấm Nét đứt Nét chấm gạch Cũng có thể vẽ nhiều đ−ờng cong trên cùng một hệ trục toạ độ. Ví dụ: lệnh vẽ sau sẽ cho 3 đ−ờng cong khác nhau trên một hình: plot(x1,y1,’r *’,x2,y2,’g+’x3,y3,’w -‘) Nếu bạn muốn đặt tên cho đồ thị hãy dùng lệnh title. Ví dụ: title(' Do thi 1 ‘) Bạn cũng có thể đặt tên cho các trục toạ độ x và y bằng cách dùng lệnh xlabel và ylabel . Ví dụ: xlabel('x - m'); ylabel('y - m/s '); Còn để tạo l−ới trên hình vẽ dùng lệnh grid. Cụ thể ta làm một ví dụ d−ới đây: Vẽ trên cùng hệ trục toạ độ đồ thị hai hàm số sau y1=e-5tsin5t ; y2= e-5t cos5t; với biến t chạy từ - 4 đến +4: Ta viêt file p2d.m để vẽ đồ thị nh− sau: % Chuong trinh ve do thi 2D t=-4:.05:4; y1=exp(-.5*t).*sin(5*t); y2=exp(-.5*t).*cos(5*t); plot(t,y1,'*',t,y2,'-'); title('VE DO THI 2 CHIEU : y1( ***), y2 (---)') xlabel(' Gia tri t ') ylabel('gia tri y1, y2') grid Chạy ch−ơng trinh cho kết quả là đồ thị d−ới đây: -4 -3 -2 -1 0 1 2 3 4 -8 -6 -4 -2 0 2 4 6 8 V E D O T H I 2 C H IE U : y 1 ( * * * ) , y 2 ( - - - ) G i a tr i t gi a tri y 1, y 2 Có thể vẽ nhiều đồ thị trên một hình bằng cách dùng lệnh subplot. Ví dụ: ta vẽ hai đồ thị y1=y1(t) và y2=y2(t) vừa nêu trên cùng một hình nh−ng lại trên hai hệ trục riêng biệt, ta viết lại các các lệnh ( tính từ lệnh plot(t,y1,...) nh− sau: subplot(211) plot(t,y1,'*') title('VE DO THI 2 CHIEU : y1( ***), y2 (---)') xlabel('gia tri t') ylabel('gia tri y1') grid subplot(212) plot(t,y2,'-') xlabel('gia tri t') ylabel('gia tri y2') grid -4 -3 -2 -1 0 1 2 3 4 -1 0 -5 0 5 1 0 V E D O TH I 2 C H IE U : y1 ( * ** ), y2 (---) g ia tr i x gi a tri y 1 -4 -3 -2 -1 0 1 2 3 4 -5 0 5 1 0 g ia tr i x gi a tri y 2 Vẽ đồ thị độc cực Dùng lệnh polar Ví dụ: vẽ đồ thị hàm y=4e-4t với t=0:2pi/3 Ta viết ch−ơng trình vẽ nh− sau: t=0:pi/20:2*pi/3; r=4*exp(-4*t); polar(t,r) Kết quả cho ra nh− d−ới đây: 1 2 3 4 30 210 60 240 90 270 120 300 150 330 180 0 Vẽ Đồ thị dạng thanh (Bar). Đồ thị bar biểu diễn giá trị của một véc tơ hay một ma trận d−ới dạng các thanh thẳng đứng hay nằm ngang. Bar(y) biểu diễn các phần tử của véc tơ y nếu y là một véc tơ. Nếu y là một ma trận, một nhóm thanh sẽ biểu diễn các phần tử trong một hàng, trục x sẽ biểu diễn số hàng. Ví dụ: Vẽ đồ thị biểu thị số sinh viên tốt nghiêp của một tr−ờng Đại học từ năm 1995 đến 2001, biết số sinh viên tốt nghiệp t−ơng ứng là 1000, 1200, 1800, 1850, 1750, 2100. Lập ch−ơng trình vẽ nh− sau: x=[1000, 1200, 1800, 1850, 1750, 2100] bar(x); title('SO LUONG SINH VIEN TOT NGHIEP HANG NAM') xlabel('Nam') ylabel('So luong sinh vien') set(gca,'XTickLabel',{'1996';'1997';'1998';... '1999';'2000';'2001'}) Chạy ch−ơng trình cho kết quả là đồ thị d−ới đây: 1 9 9 6 1 9 9 7 1 9 9 8 1 9 9 9 2 0 0 0 2 0 0 1 0 5 0 0 1 0 0 0 1 5 0 0 2 0 0 0 2 5 0 0 S O L U O N G S IN H V IE N T O T N G H IE P H A N G N A M N a m S o lu on g si nh v ie n Đồ thị pie. Lệnh Pie(x) biểu thị thành phần phần trăm theo dữ liệu trong x. Mỗi phần tử trong x đ−ợc đại diện bằng một phần của đồ thị Pie. Pie(x,explode) đặt các phần tử cho đồ thị Pie. Explode là một véc tơ hay một ma trận của số 0 và 1 t−ơng ứng với x. Các phần tử là 0 sẽ t−ơng ứng với các phần tạo thành một khối liền trong đồ thị pie. Nếu là giá trị 1 thì phần tử t−ơng ứng với mẩu trên đồ thị sẽ đ−ợc tách rời khỏi khối liền trong đồ thị Pie. Explode phải có cỡ giống với x. Ví dụ : Biểu diễn thành phần phần trăm của các loại vật liệu có trong một hỗn hợp. x=[7 15 56 12 10]; eplode= [1 0 0 0 0]; pie(x,eplode) colormap jet Ta đ−ợc đồ thị : 7 % 1 5 % 5 6 % 1 2 % 1 0 % b. Vẽ đồ thị 3D : dùng lệnh surf, mesh, contour3 Ví dụ: Vẽ đồ thị z=-20x2+x-15y2+5y , với -4<x<4 và -4<y<4. Viêt file p3d.m để vẽ đồ thị ( dùng lệnh surf )nh− sau: [x,y]=meshgrid(-4:.2:4,-4:.2:4); z=-20*x.^2+x-15*y.^2+5*y; surf(x,y,z) title(' Do thi 3D') xlabel(' truc x') ylabel(' truc y') zlabel(' truc z') pause Kết quả cho nh− hình d−ới đây: Còn hai đồ thị d−ới đây đ−ợc vẽ bằng lện mesh và lệnh contour3: - Đồ thị 3D dùng lệnh mesh - Đồ thị 3D dùng lệnh contour 1 0 2 0 3 0 4 0 1 0 2 0 3 0 4 0 -5 0 0 -4 0 0 -3 0 0 -2 0 0 -1 0 0 0 truc x truc y tr uc z D o th i 3 D d ung le nh c o nto ur Phần 2 ứng dụng Matlab giải một số bài toấn kĩ thuật 1. Bài toán về mạch điện Ví dụ 1: Tính c−ờng độ dòng điện của mạch điện có các trở kháng phức d−ới đây, biết hiệu điện thế nguồn U=5V, các trở kháng: z1=1+0,5i, z2=2+0,5i, z3=4+i, z4=z1 (Ω ). z1 z1 z1 z1 aaa U=5v fff z4 z4 z4 z4 Giải: Viết các ph−ơng trình định luật Kiếc sốp cho mạch nh− sau: (z1+z2+z4)I1- z2I2 = U (z1+2z2+z4)I2 - z2I1- z2I3= 0 (z1+2z2+z4)I3- z2I2- z2I4= 0 (z1+z2+z3+z4)I4- z2I3 = 0 Viết lại hệ ph−ơng trình trên d−ới dạng ma trận nh− sau: (z1+z2+z4) - z2 0 0 I1 = U - z2 (z1+2z2+z4)I2 - z2 0 I2 = 0 0 - z2 (z1+2z2+z4) - z2 I3 = 0 0 0 - z2 (z1+z2+z3+z4) I4 = 0 hay Z.I = U với Z là ma trân trở kháng, I là ma trận cột dòng điện, còn U là ma trận cột thế hiệu. Nghiệm I đ−ợc tính nh− sau: I=Z-1.U D−ới đây là file ml12.m để giải ph−ơng trình ma trận trên % File ml12.m % Chuong trinh giai mach dien tro khang phuc z1=1+.5i; z2=2+.5i; z3=4+i; z4=z1; % Cac tro khang U=5; % Hieu dien the nguon % Ma tran tro khang Z=[z1+z2+z4 -z2 0 0;... -z2 z1+2*z2+z4 -z2 0;... 0 -z2 z1+2*z2+z4 -z2;... 0 0 -z2 z1+z2+z3+z4 ]; F=[ V 0 0 0 ]'; % Ma tran cot ve phai I=inv(Z)*F % Tinh dong dien Chạy ch−ơng trình cho kết quả d−ới đây: I = 1.3008 - 0.5560i 0.4560 - 0.2504i 0.1530 - 0.1026i 0.0361 - 0.0274i Ví dụ 2: Tính dòng điện cho mạch có R, L và C nh− hình vẽ, cho E=60v, R=50 , L=1H, Ω C=10-4F, tại thời điểm ban đầu i1(0)=0, i2(0)=0. i1 L i3 E oi R C Viết hệ ph−ơng trình vi phân cho mạch nh− sau: Ldi1/dt + Ri2 = E RCdi2/dt+ i2 - i1 = 0 Chuyển vế, viết lại hệ ph−ơng trình trên nh− d−ới đây: i1’ = - Ri2/L + E/L (1) i2’ = i1/RC - i2 /RC Dùng hàm ode45, lập ch−ơng trình để xác định i1, i2 bằng các file ml13.m và ml13a.m d−ới đây: % File ml13.m CHUONG TRINHF TINH MACH DIEN % CO R-L-C global E R L C E=60; L=1; R=50;C=.005 % Nhap cac so lieu i0=[0 0]'; % Dieu kien ban dau t=5; % thoi gian [t,i]=ode45('ml13a',t,i0); subplot(211) plot(t,i(:,1)) title('GIAI MACH DIEN CO R- L- C') ylabel('D.dien trong mach chinh I1 - A') grid subplot(212) plot(t,i(:,2)) ylabel('D.dien trong mach re I2 - A') xlabel(' Thoi gian') grid % File ml13a.m function ic=ml13a(t,i) global E R L C ic=zeros(2,1); ic(1)=-R/L*i(2)+E/L; ic(2)=i(1)/(R*C)-i(2)/(R*C); Chạy ch−ơng trình cho kết quả là trị số c−ờng độ dòng điện trong mạch chíhh i1 và mạch rẽ i2 nh− hình d−ới đây: 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0 0.5 1 1.5 G IA I M A CH D IE N CO R- L- C D .d ie n t ro ng m ac h ch in h I1 - A 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0 0.5 1 1.5 D .d ie n t ro ng m ac h re I2 - A Tho i g ian Để kiểm tra kết quả trên, ta so sánh nó với kết quả chính xác của hệ ph−ơng trình vi phân (1) là: i1= 6/5- 6e -100t/5- 60te-100t i2= 6/5- 6e -100t/5- 120te-100t Đồ thị chính xác của i1 và i2 có dạng nh− hình d−ới đây: 0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4 4 . 5 5 0 0 . 2 0 . 4 0 . 6 0 . 8 1 1 . 2 1 . 4 D o n g d i e n I 1 = 6 / 5 - 6 / 5 e ( - 1 0 0 t ) - 6 0 t e ( - 1 0 0 t ) 0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4 4 . 5 5 0 0 . 2 0 . 4 0 . 6 0 . 8 1 1 . 2 1 . 4 D o n g d i e n I 2 = 6 / 5 - 6 / 5 e ( - 1 0 0 t ) - 1 2 0 t e ( - 1 0 0 t ) Ta thấy kết quả của hai cách tính là nh− nhau. Để thấy sự dao động của mạch điện một cách rõ nét ta tăng điện dung của tụ điên: lấy C=0,005F rồi chạy lại ch−ơng trình ta đ−ợc kết quả nh− hình d−ới đây: 0 0 .5 1 1 . 5 2 2 . 5 3 3 . 5 4 4 . 5 5 -2 0 2 4 6 G IA I M A C H D IE N C O R - L - C D on g di en t ro ng m ac h ch in h - A 0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4 4 . 5 5 0 0 .5 1 1 .5 2 D on g di en t ro ng m ac h re R - A Th o i g ia n 2. Giải bài toán động học cơ cấu phẳng Ví dụ : Giải bài toán động học cơ cấu cu lit Hãy xác định chuyển vị, vận tốc góc, gia tốc góc của thanh cu lit 3 của cơ cấu cu lit, biết tr−ớc kích th−ớc các khâu: l0=0,5m, l1=0,2m, tay quay 1 quay đều với w1=8rad/s. l1 1ϕ l0 l3 3ϕ Ta có quan hệ véc tơ sau: l3 = l0 + l1 Viết l0 , l1 d−ới dạng số phức ta đ−ợc: l3 = l0e i 2/π + l1e i 1ϕ (1) Dùng hàm abs ta tính đ−ợc trị số của véc tơ l3 , dùng hàm angle để tính góc chỉ ph−ơng của véc tơ này cũng là góc 3ϕ của cu lit. l3a = abs( l3 ) (2) 3ϕ = angle( l3 ) (3) Để tính đ−ợc vận tốc góc và gia tốc góc của cu lít ta thay l3 = l3aei 3ϕ vào (1) rồi đạo hàm theo t, ta đ−ợc: l3ae i 3ϕ = l0ei 2/π + l1ei 1ϕ l3a’e i 3ϕ + i 3ω l3aei 3ϕ = i 1ω l1ei 1ϕ Chia cả hai vế cho ei 3ϕ : l3a’ + i 3ω l3a = i 1ω l1ei )( 31 ϕϕ − Tách phần thực và ảo, ta rút ra: l3a’ = - 1ω l1sin( )( 31 ϕϕ − (4) 3ω = 1ω l1cos )( 31 ϕϕ − / l3a (5) Để có gia tốc góc, ta đạo hàm (5) : α 3 = ( - 1ω l1sin )( 31 ϕϕ − ( 1ω - 3ω ) l3a - l3a’ 3ω )/ l3a (6) Căn cứ vào các biểu thức (1), (2), (3), (4), (5) và (6) lập ch−ơng trình tính các chuyển vị vận tốc và gia tốc nh− đ−ợc viết trong file cl3.m d−ới đây. Kết quả về chuyển vị, vận tốc và gia tốc góc cu lít đ−ợc cho d−ới dạng đồ thị ở phía d−ới ch−ơng trình. % CHUONG TRINH TINH CHUYEN DONG CUA CO CAU CU LIT l1=.2; l0=.5; % Kich thuoc tay quay va gia w1=8; % Van toc goc khau dan - rad/s n=51; % So vi tri tay quay df=2*pi/n; f1=0:df:2*pi; f1d=f1*180/pi; % Goc tay quay – do l3=l0*exp(i*pi/2)+l1*exp(j*f1); f3=angle(l3); l3a=abs(l3); l3ac=-l1*w1*sin(f1-f3); w3=l1*w1*cos(f1-f3)./l3a; alpha3=-(v32.*w3+l1*w1*(w3-w1).*sin(f3- f1))./l3a; subplot(311) plot(f1d,f3*180/pi) title(' CHUYEN DONG CUA CU LIT ') ylabel(' C.vi goc Culit - do') grid subplot(312) plot(f1d,w3) ylabel(' Van toc goc Culit - rad/s') grid subplot(313) plot(f1d,alpha3) ylabel(' Gia toc goc Culit - rad/s^2') xlabel(' Goc tay quay') grid 0 50 100 150 200 250 300 350 400 60 80 100 120 CHUYEN DONG CUA CU LIT C .v i g oc C ul it - do 0 50 100 150 200 250 300 350 400 -10 -5 0 5 V an t oc g oc C ul it - ra d/ s 0 50 100 150 200 250 300 350 400 -50 0 50 G ia t oc g oc C ul it - ra d/ s2 Goc tay quay 3. Giải bài toán cân bằng máy Ví dụ 1 : Giải bài toán cân bằng tĩnh Có trục quay trên có gắn các khối l−ợng lệch tâm đặt trong cùng một mặt phẳng nh− hình vẽ. Trục hiện đang mất cân bằng tĩnh.Ta tiến hành cân bằng trục quay bằng ph−ơng pháp số phức nh− sau: Từ điều kiện cân bằng tĩnh ta có: m4 m1 m1r1 + m2r2 + m3r3 + m4r4 + mcbrcb = 0 r1 r4 r2 mcb rcb r3 Biểu diễn các véc tơ d−ới dạng số phức ta đ−ợc: mcbrcb = - (m1r1e i 1ϕ + m2r2ei 2ϕ + m3r3ei 3ϕ + m4r4ei 4ϕ ) Từ đó tính đ−ợc trị số của tích mcbrcb và góc chỉ ph−ơng ϕ của bán kính véc tơ rcb bằng cách dùng hàm abs và hàm angle. mcbrcb = abs( mcbrcb); ϕ = angle(mcbrcb ) Ch−ơng trình tính nh− sau: % File canbt.m % TINH CAN BANG TINH m1=12; m2=15; m3=27;m4=30; % Cac khoi luong r1=.6; r2=.8; r3=.5; r4=.4; % Tri so cac ban kinh vec to f1=pi/2; f2=pi/12; % Cac goc chi phuong f3=-pi/6;f4=2*pi/3; % cua ban kinh ri mrcb=-m1*r1*exp(i*f1)-m2*r2*exp(i*f2)- m3*r1*exp(i*f3)-... m4*r4*exp(i*f4); mr=abs(mrcb) % Tri so mcg*rcb f=angle(mrcb)*180/pi % Goc chi phuong cua ban % kinh vecto rcb (do) Chạy ch−ơng trình trên kết quả nhận đ−ợc là tích mcbrcb ( kí hiệu là mr) và góc chỉ ph−ơng (kí hiệu là f) của bán kính véc tơ của khối l−ợng cân bằng (tính ra độ): mr = 23.3171 f = -147.2962 Nếu chọn tr−ớc r = rcb= 0,6m thì khối l−ợng cân bằng cần đặt vào là: m = mcb = mr/rcb =38,86 kg. Ví dụ 2: Giải bài toán cân bằng động vật quay Bài toán: Hãy cân bằng động trục quay có gắn các khối l−ợng đặt lệch tâm trên những mặt phẳng khác nhau nh− hình vẽ d−ới đây. Biết hai mặt phẳng T và P là hai mặt phẳng cân bằng. m1 T m1 P m2 m2 r1 r1 r2 r2 m4 r4 A B m4 rP mP l2 mP l1 r3 l4 r3 m3 l3 m3 rT mT mT l Các khối l−ợng, độ dài các bán kính véc tơ t−ơng ứng và các kích th−ớc khác đ−ợc cho nh− sau: m1=20 kg, m2=15 kg, m3=17 kg, m4=26 kg, r1=0,6m, r2= 0,3m, r3=0,4m, r4=0,4m, l1=0,3m, l2=0,5m, l3=0,8m, l4=1,2m, l=1,5m . Các bán kính véc tơ r1, r4 t−ơng ứng có ph−ơng thẳng đứng và nằm ngang, còn véc tơ r2, r3 làm với ph−ơng ngang góc và . 02 30=ϕ 03 60−=ϕ Ta giải nh− sau: Giả sử hai đối trọng khối l−ợng mT và mP đã đ−ợc đặt vào hai mặt phẳng cân bằng T và P, các bán kính véc tơ t−ơng ứng là rT và rP , và hiện giờ trục đã đ−ợc cân bằng tĩnh và động. Từ ph−ơng trình cân bằng mô men đối với điểm A của các lực quán tính và ph−ơng trình tổng véc tơ các lực quán tính bằng 0

Các file đính kèm theo tài liệu này:

  • pdfdocx_20110912_matlab_introduction_127.pdf