Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 87 trang
THÔNG TIN TÀI LIỆU
Nội dung
Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -1- LỜI NÓI ĐẦU MATLAB là một trong những hệ thống được soạn thảo hết sức chu đáo, mạch lạc với việc áp dụng nhiều thuật toán phong phú, đặc biệt như chính tên của nó – “MATric LABoratory’’, thuật toán ma trận được coi là hạt nhân quan trọng trong lập trình MATLAB. Cú pháp ngôn ngữ của chương trình MATLAB được thiết lập tinh tế đén mức người sử dụng không có cảm giác là đang tiếp xúc với các phép tính phức tạp của ma trận. Ma trận được áp dụng rộng rãi trong các bài toán kĩ thuật phức tạp như hệ thống điện lực, tự động hóa,…Vì vậy MAYLAB chính là phần mềm hết súc thuận tiện và hiệu quả đối với các lĩnh vực này. Là 1 hệ thống mở,MATLAB kết hợp rất nhiều phương pháp tính mà có thể áp dụng thuận tiện cho bất kì người sử dụng nào. MATLAB có đặc điểm linh hoạt và dễ thích nghi, vì vậy cho dù là người mới bắt đầu hay là 1 chuyên gia sành sỏi, vẫn có thể sử dụng MATLAB một cách thoải mái và cuốn hút. MATLAB rất ưu ái với người sử dụng,bạn có thể tạo ra chương trình chuyên môn của mình mà MATLAB sẵn sang đáp ứng. Matlab cho phép tiếp cận và áp dụng dễ dàng các hàm có sẵn để giải các bài toán cần thiết và đồng thời có thể sang tạo ra các m.file mà khi được lưu giữ với thủ tục phù hợp, matlab coi như là hàm của chính hệ thống, điều đó cho phép mở rộng khả năng vô hạn của Matlab. Đó cũng chính là ưu điểm nổi bật của Matlab mà không chương trình nào có được. Em xin trân thành cảm thầy Trần Quang Khánh đã giúp chúng em tiếp cận MATLAB để trang bị thêm cho mình một hành trang kiến thức trước khi bước vào công việc của mình sau này. Sinh viên: Đỗ Thị Lan Anh Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -2- Phần I : Thực hành MATLAB cơ bản. Chương 1: Cơ sở MATLAB I. Cơ sở lý thuyết Ngôn ngữ của hệ thống MATLAB rất phong phú, nó gần như áp dụng tất cả các phương tiện lập trình đã biết, kể cả mô phỏng, hoạt hình, đồ họa… MATLAB chứa khối lượng khổng lồ các phép tính, thuật giải và các hàm cho phép giải rất nhiều các bài toán phức tạp như nghịch đảo ma trận, đạo hàm, vi phân, tích phân… Chương trình MATLAB nó cho phép vẽ tất cả các đồ thị với các dạng khác nhau trong không gian 2D, 3D. 1.1) Số và phép toán sơ cấp a) Các phép toán thông dụng thường dùng căn bản như sau: Phép toán Cộng Trừ Nhân Chia Chia trái Lũy thừa Khia căn Ký hiệu + - * / \ ^ sqrt b) Các phép toán về số phức như sau: Khi một số S được biểu thị dưới dạng phức như cho trong bảng sau: Tham số Cú pháp Tham số Cú pháp Phần thực P = real(S) Môdul Sm = abs(S) Phần ảo Q = imag(S) Góc pha Theta = angle(S) Liên hợp phức Slh = conj(S) c) Các biến và hàm trong MATLAB Các hàm toán học Lệnh Hàm Lệnh Hàm abs(x) Giá trị tuyệt đối rem(x,y) Số dư của phép chia x/y exp(x) Hàm mũ cơ số e round(x) Làm tròn số imag(x) Phần ảo Ceil(x) Làm tròn lên real(x) Phần thực floor(x) Làm tròn xuống Phase(x) Góc pha của số phức sum(v) Tổng các phần tử vector log(x) Logarit tự nhiên prod(v) Tích các phần tử vector log10(x) Logarit cơ số 10 min(v) Phần tử vector bé nhất sqtr(x) Căn bậc hai max)v) Phần tử vector lớn nhất conv(x,x) Tích chập x của chính nó mean(v) Giá trị trung bình cộng Các hàm lượng giác Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -3- Sin(x) Hàm sin atan(x) Hàm artg ±90 0 Cos(x) Hàm cosin atan2(x,y) Hàm artg ±180 0 Tan(x) Hàm tg sinc(x) Hàm sin(Пx)/(Пx) Asin(x) Hàm arsin acos(x) Hàm arcos Sinh(x) Hàm sin hyperbol asinh(x) Hàm arsin hyperbol Cosh(x) Hàm cosin hyperbol acosh(x) Hàm arccos yperbol 1.2 Các dạng xuất dữ liệu Được thực hiện bởi lệnh : fprintf('S=%v.uf d\n',F) trong đó S là tham số ra, v là chữ số cực đại cố thể, u là chữ số sau dấu phẩy, f hiện thị dấu phẩy tĩnh, (e hiện thị dấu phẩy động), d hiện thị đợn vị tính và F hàm tính toán. 1.3 Văn bản trong MATLAB Để xuất chuỗi ký tự nào đó ra màn hình thì ta sử dụng lệnh như sau: disp('string') BÀI TẬP THỰC HÀNH MATLAB PHẦN I: MATLAP CƠ BẢN Bài 1.1 Hãy sử dụng các lệnh của Matlab để thực hiện các phép tính sau: a) 25.4+17*(34/4.2)-2.5; b) cos(x)+sin(y); voi x=5.3 , y=1.2pi; c) sin2(x)-cos1/2(y); voi x= 1.5*pi; y = 6.4; d) e^2.5+tg(x); voi x=1.2*pi; e) S=(2.7+j*3.2)-(2+j*1.5); Giải: a) >> 25.4+17*(34/4.2)-2.5 ans = 160.5190 b) >> x=5.3;y=1.2*pi; cos(x)+sin(y) ans = -0.0334 c) >> x=1.5*pi;y=6.4; sin(x)^2-cos(y)^1/2 Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -4- ans = 0.5034 d) >> x=1.2*pi; exp(2.5)+tan(x) ans = 12.9090 e) >> s=(2.7+j*3.2)-(2+j*1.5) s = 0.7000 + 1.7000i f) >> x=7.8; >> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2))) y=4.93e-001 >> x=5.9; >> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2))) y=4.90e-001 >> x=7.33; >> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2))) y=4.85e-001 >> x=6.77; >> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2))) y=5.09e-001 >> x=8.79; >> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2))) y=5.01e-001 >> x=10.3; >> fprintf('y=%7.2e',((cos(22^3+x^2)^2)-log(13)+24)/(sqrt(43^2+2*x^2))) y=4.91e-001 Nhận xét: Với việc sử dụng phần mềm MATLAB cho việc giải bài toán rất đơn giản, thuận lợi và nhanh chóng cho ra kết quả, đồng thời nó cũng không yêu cầu quá cao về trình độ của người sử nó. Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -5- Bài 1.2 Một mạch điện xoay chiều có các đại lượng điện áp U=U r +jU x (V) và giá trị tổng trở Z=R+jX (om);(dữ liệu lấy trong bảng theo chữ cái họ tên và tên đệm người giải) a) Thực hiện phép các thao tác cần thiết để hiển thị tên người giải trên màn hình. b) Sử dụng các lệnh Matlab để xác định giá trị dòng điện chạy trong mạch c) Biểu thị kết quả tính toán dòng điện dưới dạng Im jα , với Im là modul và α là a) >> disp('Do Lan Anh') Do Lan Anh b) >> U=116.2+j*110.4; >> Z=6.54+j*7.22; >> I=U/Z I = 16.4071 - 1.2323i c) >> modul=abs(I) modul = 16.4533 >> phase=angle(I) phase = -0.0750 Bài 1.3 Điện áp định mức của mạng điện là U kV, điện thành phần trở tác dụng là Ω, công suất truyền tải trên đường dây là S=P+j*Q. Hãy áp dụng các lệnh Matlab để xác định tổn thất điện năng và áp dụng lệnh fprintf để biểu thị kết quả trên màn hình với n chữ số sau dấu phẩy tĩnh/động(t/đ), biết thời gian tổn thất công suất cực đại trong năm là τ h. Các dữ liệu tính toán lấy trong bảng 1.2 với họ tên người giải. >> S=45.33+36.2i; U=22000; R=6.43; t0=4120; t=(0.124+t0*10^-4)^2*8760; fprintf('A=%7.1e Wh\n',((abs(S))^2*R*t)/(U^2)) Kết quả : A=1.1e-001 Wh Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -6- Bài 1.4 Thực hiện phép tính toán (dữ liệu lấy theo số thứ tự ghi trong đầu bài của người giải theo bảng 1.3): a)Số Z1 cho dưới dạng đại số(hoặc dạng mũ), hay chuyển về dạng mũ(hoặc dạng đại số), kiểm tra và ghi lại kết quả. b) Số Z2 cho dưới dạng đại số(hoặc dạng mũ), hay chuyển về dạng mũ(hoặc dạng đại số), kiểm tra và ghi lại kết quả. c) Hãy tính giá trị của biểu thức và ghi lại kết quả dưới dạng mũ, đối số(argument) biểu thị trong khoảng từ (-pi:pi): Biểu thức: C=(Z1+Z2)^4*Z3/Z4; a) >> Z1=0.8-2i; sm=abs(Z1) theta=angle(Z1) sm = 2.1541 theta = -1.1903 b) >> Z2=3.08*exp(i*7*pi/12) Z2 = -0.7972 + 2.9751i c) >> Z1=0.8-2i; Z2=3.08*exp(i*7*pi/12) Z3= 8.01*exp(2*i); Z4= -5+sqrt(2)*i; P=sqrt(Z1-Z2)*Z4/Z3 sm=abs(P); theta=angle(P); S1h=conj(P); disp('sm theta S1h') fprintf('%P'),disp([sm,theta,S1h]); Z2 = -0.7972 + 2.9751i P = 1.4418 + 0.3465i Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -7- sm theta S1h 1.4829 0.2359 1.4418 - 0.3465i Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -8- Chương 2: Lập trình trên MATLAB I. Cơ sở lý thuyết 2.1) Thủ tục xây dựng hàm Hàm được bắt đầu bằng từ function , sau đó lần lượt là tham số đầu ra, dấu = và tên hàm function[tên tham số đầu ra] = tên hàm(tên biến đầu vào) Các biến chỉ có tác dụng trong nội tại hàm khai báo. Tên của các biến được cách nhau bởi dấu phẩy. Phần giải thích được ghi sau dấu %. Hàm này được lưu lại vào trong m.file khi giải bài toán mà thiet lập nó sẵn tra chỉ cần gọi tên hàm ra là được. 2.2) Inline objects Có thể xây dựng hàm dưới dạng inline objects như sau: f=inline('f(x) ', 'x') 2.4) Thủ tục vào xuất dữ liệu a) Nhập dữ liệu bằng cách sử dụng từ lệnh: input a=input('nhap gia tri a = '); b=input('nhap gia tri b = '); Khi chạy chương trình lần lượt thì dòng nhắc xuất hiện như sau: nhap gia tri a = nhap gia tri b = lúc đó ta chỉ cần gõ dữ liệu vào vị trí tương ứng. b) Lấy dữ liệu từ đồ thị sử dụng lệnh : ginput(n) c) Xuất dữ liệu ta sử dụng lệnh (fprintf('S=%v.uf d\n',F) hoặc sử dụng lệnh disp([…]) 2.5) Điều khiển luồng- vòng lặp a) Lệnh if đơn Mỗi lệnh if được kết thúc bằng lệnh end. Cú pháp: if < biểu thức logic > nhóm lệnh; end b)Lệnh if đúp Cú pháp: if < biểu thức logic 1> nhóm lệnh 1; if < biểu thức logic 2> Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -9- nhóm lệnh 2; end nhóm lệnh 3; end nhóm lệnh 4; c) Lệnh if – else Cú pháp: if < biểu thức logic 1> nhóm lệnh 1; else nhóm lệnh 2; end d) Lệnh cấu trúc if…elseif…else Cú pháp: if < biểu thức logic 1> nhóm lệnh 1; elseif < biểu thức logic 2> nhóm lệnh 2; elseif < biểu thức logic 3> nhóm lệnh 3; end 2.6) Vòng lặp while và for a) Vòng lặp while cho phép thực hiện một nhóm lệnh với số lần không xác định theo một điều kiện logic cho trước. Cú pháp: while < biểu thức logic > nhóm lệnh; end b) Vòng lặp for cho phép thực hiện một nhóm lệnh với số lần xác định theo một điều kiện logic cho trước. Cú pháp: for < biểu thức > nhóm lệnh; end 2.7) Thoát khỏi vòng lặp bằng lệnh break và continue Cú pháp: if < biểu thức logic > break; end 2.8) Hàm con Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -10- Tên của hàm đầu tiên cần phải đặt trùng với tên tệp hàm và được coi là hàm chính. Các hàm còn lại gọi là hàm con. Chỉ hàm chính mới có thể được gọi ra để tính toán. function[…]=hamchinh(…) a=…; b=…; function[…]=hamcon(…) a=…; b=…; Bài 2.1 a) Hãy lập trình giải bài toán 1.3, so sánh kết qảu với kết quả thông thường và cho nhận xét về hai cách: function[deltaA]=tonthat(P,Q,U,R,t0) deltaP=(P^2+Q^2)*R/U^2; t=(0.124+t0*10^-4)^2*8760; disp('Ton that dien nang la:') deltaA=deltaP*t >> tonthat(45.33,36.2,22000,6.43,4120); Nhận xét: Với phương pháp này ta có thể áp dụng cho nhiều bài toán với nhiều số liệu khác nhau mà không cần làm lại từ đầu. b) Hãy cho ví dụ với các số liệu của mạng điện thực tế và dùng hàm để xây dựng để tính tổn thất điện năng trong mạch điện đã chọn. các hàm inline objects được cất giữ trong Workplace, để tính giá trị của hàm ta chỉ việc gọi tên hàm và gán giá trị của biến x. Ví dụ:P=2;Q=3;R=4;U=5;t0=641; Chương trình Matlab như sau: >> dA=inline('((P^2+Q^2)/U^2)*R*t0','P','Q','U','R','t0') B= dA(2,3,4,5,641); fprintf('B=%7.4e W\t',B) Bài 2.2 Hãy xây dựng hàm xác định điện trở của mạch gồm n nhánh song song và áp dụng hàm vừa xây dựng để tính điện trở tương đương của mạch gồm 5 nhánh song song với các điện trở lấy theo chữ cái đầu của họ và tên người giải trong bảng 2.1:với R1=4,78; R2=5,35; R3=6,44 ; R4=4,56; R5=6,74 function Rtd=dientro Rtd=0; n=input('Nhap so mach nhanh song song: '); for i=1:n [...]... sbt stt slpm slp 0.5323 0.0849 0.2917 0.2917 Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -22- Báo cáo thực hành Matlab ứng dụng Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 GVHD:TS Trần Quang Khánh -23- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Chương 5: Đồ họa I Cơ sở lý thuyết 5.1) Vẽ đồi thị 2D với một số lệnh thông dụng như sau: a) lệnh plot(x,f(x)) b) lệnh fplot('f(x) ',[x1,x2]) c) lệnh ezplot('f(x)... viên: Đỗ Thị Lan Anh Lớp: D2H3 -26- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh c) semilogx(x,y),grid xlabel('x');ylabel('y,log10') Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -27- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Bài 5.3 Xây dựng đồ thị hàm d trong khoảng biến thiên của phi(xem dữ liệu bảng 5.1) trong hệ tọa độ cực( dữ liệu được lấy ứng với chữ cái đầu theo tên đệm của... Thị Lan Anh Lớp: D2H3 -33- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Phần II: Thực hành Matlab ứng dụng trong giải bài toán về chuyên ngành điện Chương 9 : Giải mạch điện Bài tập 9.1 Cho mạch điện một chiều (hình vẽ) với suất điện động Ei và các điện trở: Ri (Ω) cho trong bảng 9.1.(dữ liệu lấy theo chữ cái đầu của tên người giải) Hãy áp dụng chương trình Matlab xác định các giá trị... C2 = 1 3 1 8 9 5 3 C3 = 5 6 9 9 8 C4 = 1 2 5 2 1 C1 = 9 I= 4 Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -18- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Bài 4.2 Số liệu thống kê về các đại lượng x và y cho trong bảng 4.1, lấy theo chữ cái đầu của tên người giải: 1) Hãy sử dụng các hàm trong Matlab để xác định các đại lượng: 1.1) giá trị trung bình của các đại lượng x1,x2 và y: Xtb1,Xtb2,Y_tb;... mặt đặc; bề mặt các đường mức; bề mặt trong suốt và bề mặt thảng ứng (thác nước) lần lượt trên 4 phần của một trang giấy.( Dữ liệu được lấy ứng với chữ cái đầu theo tên người giải) Z=e^(x^2-y^2); x=-2:2; y=-2:2; Giải: >> x=2:0.1:5; y=2:0.1:5; Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -28- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh [x,y]=meshgrid(x,y); z=(x-3).^2-(y-2).^2; subplot(2,2,1); mesh(peaks)... định giá trị của hàm ứng với x1 và x2 >> f=inline('[x1^4+x2^3-2 2*x1^2*x2^2-x1*x2 x2^3-1 6*x1^2*x2x1*x2+log(x2)]','x1','x2') f= Inline function: Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -11- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh f(x1,x2) = [x1^4+x2^3-2 2*x1^2*x2^2-x1*x2 x2^3-1 6*x1^2*x2x1*x2+log(x2)] >> f(0.5,1.2) ans = -0.2095 0.1200 0.7280 1.3823 Bài 2.5 Hãy sử dụng vòng lặp while... 58.0300 Bài 4.3 Hãy xác định các giá trị hàm nội suy của ma trận y ứng với các giá trị của x(dữ liệu lấy theo chữ cái đầu của tên người giải trong bảng 4.2): Xác định giá trị nội suy >> x=[2:7]'; y=[x,x.^1.5,x.^2.8,x.^4]; xi=[2.5,3.5,6.2]; Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -21- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh yi=interp1(x,y,xi) yi = 1.0e+003 * 0.0025 0.0040 0.0035 0.0066... :S=1^3+2^3+…+n^3 nhỏ hơn 50 >> S=0;n=0; while S+n^3> x=0:2*pi; Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -25- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh y=2.5*x.^2+3.7*x+6; loglog(x,y),grid... I4 I5 26.1547 26.1172 -24.9763 -12.1314 -15.1642 Hoặc giải theo phương pháp dòng điện vòng: Chương trình Matlab như sau: >> disp('giai mach dien theo phuong phap dong dien vong'); R=[5.3,6.4,8.3,0,0]; Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -34- Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh E=[120,117,0,0,0]; Z=[R(1)+R(2),-R(2),0,0;-R(2),R(2)+R(3),-R(3),0;0,-R(3),R(3)+R(4),-R(4);0,0,R(4),R(4)+R(5)]; . 0.3465i Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -7- sm theta S1h 1.4829 0.2359 1.4418 - 0.3465i Báo cáo thực hành Matlab ứng dụng. Đỗ Thị Lan Anh Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -2- Phần I : Thực hành MATLAB cơ bản. Chương 1: Cơ sở MATLAB I. Cơ sở. Báo cáo thực hành Matlab ứng dụng GVHD:TS Trần Quang Khánh Sinh viên: Đỗ Thị Lan Anh Lớp: D2H3 -1- LỜI NÓI ĐẦU MATLAB là một trong những hệ thống