1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Báo cáo thực hành Matlab

85 516 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

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 636,67 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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’’

Trang 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 tronglập trình MATLAB Cú pháp ngôn ngữ của chương trình MATLAB được thiết lậptinh 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ínhphứ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ậtphức tạp như hệ thống điện lực, tự động hóa,…Vì vậy MAYLAB chính là phầnmề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à một 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 áivớ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ểmnổ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 ơn thầy TS.Trần Quang Khánh đã giúp chúng em tiếp cậnMATLAB để 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: Phạm Thanh Huyền

Trang 2

CHƯƠNG I

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 Khai căn

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:

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

abs(x) Giá trị tuyệt đối rem(x,y) Số dư của phép chia x/y

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

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

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)

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, F hàm tính toán.

SVTH: Phạm Thanh Huyền 2 Lớp Đ3H1

Trang 3

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:

Trang 4

S =

0.70

f) Hãy tính các giá trị của biểu thức, biểu thị các kết quả trên màn hình với n chữ

số sau dấu phẩy đông/tĩnh(đ/t) với dữ liệu lấy theo chữ cái họ, tên đệm và tên ngườigiải trong bảng 1.1

SVTH: Pham Thanh Huyen

b)Sử dụng các lệnh Matlab để xác định giá trị dòng điện chạy trong mạch

SVTH: Phạm Thanh Huyền 4 Lớp Đ3H1

Trang 5

Chương trình Matlab như sau

Trang 6

- 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ó

CHƯƠNG II

SVTH: Phạm Thanh Huyền 6 Lớp Đ3H1

Trang 7

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áchnhau 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.3 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)

Trang 8

Nhận xét :Ta thấy kết quả này giống kết quả bài 1.3, nhưng cách giải bằng như bài

toán 1.3 thì có ưu điểm hơn ở chỗ là khi ta giải bài toán chỉ cần xây dựng hàm một SVTH: Phạm Thanh Huyền 8 Lớp Đ3H1

Trang 9

lần, chỉ cần gõ tên của hàm và nhập các thống số của nó và thay đổi các thông số

rễ dàng hơn ngay trên cửa sổ chính thì cho kết quả ngay mà không cần phải gõ từng lệnh một Cách thứ 2 tuy lúc tạo hàm lâu hơn nhưng có thể áp dụng cho nhiều bài toán hơn.

b)Ví dụ; Mạng điện có công suất P= 367kW, Q=123kVAr,U=110kV,R=20Ω

Tính tổn thất điện năng trong 3470 giờ

Sử dụng matlab ta tính được nhanh chóng như sau;

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

Trang 11

I Cơ sở lý thuyết:

3.1 Biểu thị một mảng với các phần tử cách đều trong một khoảng xác định Lệnh linspace(a,b,n), trong đó a, b là các mốc giới hạn và n là số điểm cần

thiết lập

Lệnh linspace(a,b) cho phép thiết lập vector dòng với 100 gía trị cách đều

trong khoảng giới hạn [a, b]

logspace(a ,b,n) cho phép thiết lập vector dòng với n giá trị cách đều nhau

trong tọa độ logarit giữa các deccades 10a và 10b

logspace(a ,b) cho phép thiết lập vector dòng với 50 giá trị cách đều nhau

trong tọa độ logarit giữa các deccades 10a và 10b

3.2 Thiết lập ma trận từ vector cho trước

Giả sử cho trước một vector cột v, ta có thể nhân đôi số phần tử của vector tạo

ra một ma trận

Nhập lệnh như sau: U=v(:,[1 1])

Cho một vector dòng : U=v([1 1],:)

Nhân vector lên nhiều lần ta làm như sau: U=v(:,ones(n)); U=v(ones(n),:) 3.3 Thiết lập ma trận từ ma trận cho trước

+ repmat(A,m,n) - ma trận thiết lập là bản sao từ ma trận gốc.

+ reshape(A,m,n) - định dạng lại ma trận thiết lập

3.4 Gọi lại các phần tử của ma trận

Muốn gọi lại phần tử nào đó của ma trận A ta nhập một số lệnh như sau: A(x,y) A(j), A(1:n,k), A(x,:), A(:,y)…

3.5 Các ma trận

a) Ma trận rỗng : nhập lệnh như sau: X=[]

b) Ma trận không: nhập lệnh như sau: zeros(m,n)

c) Ma trận đơn vị: nhập lệnh như sau: ones(n) hoặc ones(m,n)

d) Ma trận các số nguyên: nhập lệnh như sau: magic(N) (N>0,trừ N=2) e) Ma trận đường chéo: nhập lệnh như sau: eye(n)

f) Ma trận các số ngẫu nhiên: nhập lệnh như sau: randperm(n)

g) Ma trận hadamard: nhập lệnh như sau: hadamard(n)

II Bài thực hành:

Bài 3.1

Trang 12

a) Hãy thiết lập một ma trận A(coi là ma trận gốc) với các phần tử bất kỳ và với

số dòng bằng số ký tự của họ và số cột bằng số ký tự của tên người giải

Trang 14

2.1897 7.3142 5.1515 14.0958 1.0422

CHƯƠNG 4

XỬ LÝ SỐ LIỆU

I Cơ sở lý thuyết:

4.1 Xác định các phần tử cực đại và cực tiểu của mảng số liệu

+ max(A) – nếu A là vector, trả lại phần tử lớn nhất của A; hoặc A là ma trận thì

trả lại vector dòng chứa phần tử lớn nhất

+ min(A) - nếu A là vector, trả lại phần tử nhỏ nhất của A; hoặc A là ma trận thì trả

lại vector dòng chứa phần tử nhỏ nhất

SVTH: Phạm Thanh Huyền 14 Lớp Đ3H1

Trang 15

+ max(A,B) – trả lại ma trận cùng kích thước như A và B với các phần tử tương

ứng lớn nhất của các ma trận này

+ [C,I]=max(A) – trả lại giá trị cực đại của ma trận và chỉ số I của các phần tử này 4.2 Xác định giá trị trung bình, giá trị trung gian và độ lệch chuẩn

+ Mean(A) - nếu A là vector, trả lại giá trị trung bình số học của các phần tử của

mảng Nếu A là ma trận, trả lại vector dòng có chứa các giá trị trung bình của các phần tử của mỗi cột

+ median(A) – trả lại giá trị trung gian

+ std(X) – trả lại độ lệch chuẩn của các phần tử mảng.

+ std(X,flag) – trả lại giá trị như lệnh std(X)

Lệnh corrcoef(x,y) – tra lại ma trạn hệ số tương quan, các dòng là két quả của các

quan sát, các cột là kết qủa của các biến

+ Phương sai

Lệnhcov(x) – trả lại phương sai

4.5 Hàm tương quan hồi quy

a) hàm hồi quy đơn:Nhập lệnh : polyfit(x,y,d)

b) Xác định giá trị hàm hồi quy:nhập lệnh: polyval(c,x)

4.6 hàm nội suy

Hàm nội suy đơn:nhập lệnh: interp1(x,y,xi)

II Bài thực hành:

Bài 4.1 Cho ma trận A (bài toán 3.1),hãy xác định:

a, Các giá trị cực đại của mỗi cột (C1)

>> C1=max(A)

C1 =

3 4 5 6 8

Trang 16

b,Các giá trị cực tiểu của mỗi cột (C2)

1Hã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

Trang 17

1.4 Độ lệch trung bình bình phương của các đại lượng x1, x2 và y.

>> dltbbp_X1=std(x1,1)% do lech trung binh binh phuong cua x1

1.5 Hệ số tương quan của các giá trị quan sát giữa các đại lượng Rx1_y, Rx2_y:

>> RX1_Y=corrcoef(x1,y) %he so tuong quan cua x1 va y

Trang 18

2.Hãy xây dựng hàm hồi quy thực nghiệm và đánh giá sai số của các hàm:

2.1Bậc hai: y=f(x1); y=f(x2)

>> c1=polyfit(x1,y,2)% he so cua ham hoi quy cua x1 voi y

2.2Hàm tuyến tính: y=f(x1); y=f(x2)

>> c1=polyfit(x1,y,1)% he so cua ham hoi quy cua x1 voi y

Trang 20

-1.5 -1 -0.5 0 0.5 1 1.5 -2

xlabel –nhãn trục x; ylabel – nhãn trục y; title – đặt tên tiêu đề cho đồ thị

5.2 Đồ thị với trục tọa độ loga và bán loga

Các lệnh: loglog(x,y) – chia hai trục tọa độ khác nhau

semilogx(x,y) – chia không đều cho trục x

semilogy(x,y) – chia không đều cho trục y

5.3 Vẽ đồ thị trong tọa độ cực và đồ thị bậc thang

a) Đồ thị trong tọa độ cực.

Lệnh polar(p,d) – p do bằng radian, d là hàm củabiến p

b) Đồ thị bậc thang.

SVTH: Phạm Thanh Huyền 20 Lớp Đ3H1

Trang 21

Lệnh stairs(x,y)

5.4 Đồ thị ba chiều 3D

a) Lệnh tạo lưới bề mặt và tạo lưới biên dạng.

Lệnh meshgrid – tạo lưới bề mặt.

Thực hiện như sau: [X,Y]=meshgrid(u,v) – X,Y là các ma trận ; u,v là các

xlabel('truc x'); ylabel('truc y');

title(' Ve ham so y=f(x) voi lenh plot')

Trang 22

>> fplot('sqrt(2+3*x)*log(1+3*x.^2)',[1.1 5],'.-g'),grid;

xlabel('truc x'); ylabel('truc y');

>> title(' Ve ham so y=f(x) voi lenh fplot')

Trang 23

1.5 2 2.5 3 3.5 4 4.5 5 0

5

10

15

x sqrt(2+3 x) log(1+3 x2)

d) Vẽ đồ thị trên với kiểu đường đứt đỏ, điểm dấu hình tam giác màu đen:

>> x=1.1:0.15:5.0;

y=sqrt(2+3*x).*log(1+3*x.^2);

plot(x,y, 'r ',x,y,'k>')

xlabel('truc x'); ylabel('truc y');

title(' Ve ham so y=f(x) voi lenh plot')

Trang 25

Do thi voi lenh y=loglog(x,y)

b)Với trục y chia theo tỷ lệ cơ số 10

Trang 26

Do thi voi lenh y=semilogx :Sinh vien – Pham Thanh Huyen-D3H1

c) Với trục x chia theo tỷ lệ cơ số 10

Trang 27

>> phi=0:0.01:5*pi; d=exp(cos(phi))-2*cos(4* phi);

>> polar(phi,d)

title(' Do thi ham d ve trong toa do cuc :Sinh vien –Pham Thanh Huyen-D3H1')

Trang 28

1 2 3 4 5

Trang 29

20

40 0

20 40

20 40 -10 0 10

0

20

40 0

20 40

20 40 -10 0 10

CHƯƠNG VI GIẢI PHƯƠNG TRÌNH VÀ TÍNH TOÁN TỐI ƯU

Trang 30

I Cơ sở lí thuyết:

6.1 Khái quát chung:

Việc giải phương trình và tính toán tối ưu được thực hiện nhờ sự trợ giúp của

một công cụ hết sức lợi hại là Optimization Toolbox của Matlab Công cụ này cung cấp cho ta rất nhiều thuật toán khác nhau trong việc tìm lơi giải tối ưu

+ Giải phương trình tuyến tính và phi tuyến

+ Xây dựn các đường cong thực nghiệm tuyến tính và phi tuyến

+ Tìm cực trị của các hàm mục tiêu

+ Thiết lập và khôi phục những lựa chọn tối ưu

6.2 Giải phương trình:

1.Tìm nghiệm phương trình dạng đa thức

Ta có thể giải phương trình bậ k bất kì 1 cách đơn giản bằng lệnh roots(p) với p

là vector các hệ số đa thức

2 Giải phương trình bằng phương pháp đồ thị

Trước hết ta dung lệnh plot để vẽ đồ thị vế trái phương trình, sau đó dùng ginput

để xác định nghiệm Dấu chữ thập xuất hiện ngay sau khi lệnh ginput được gõ, ta

cần dịch chuyển nó đến các vị trí của điểm cắt đồ thị với trục hoành và ấn chuột trái Để đọc kết quả ta dung lệnh sau: nx=length(x);w=1:nx-1;

X(find(f(w))).*f(w+1)If(w)==0

3.Giải hệ phương trình tuyến tính

Áp dụng phép tính ma trận: Ax=b

X=A\b

4.Giải phương trình phi tuyến vô hướng

Ta dung lệnh fzero: x=fzero(‘function’,x0) trong đó x0 là xuất phát điểm dự đoán trước, việc chọn x0 rất quan trọng

5.Giải hệ phương trình phi tuyến

Để giải hệ này ta dung lệnh fsolve(‘function’,x0,option) trong đó function là hàm

m.file được thiết lập trên cơ sở hệ phương trình, x0 là xuất phát điểm dự tính trước Trình tự thực hiện bài toán như sau:

+ Viết m.file và cất giữ vào dữ kiện để giải hệ phương trình

+ Cho các giá trị ban đầu x0

SVTH: Phạm Thanh Huyền 30 Lớp Đ3H1

Trang 31

+ Giải hệ bằng lệnh fsolve

6.Giải phương trình của hàm vectơ

Phương trình này được giải dưới sự giúp đỡ của lệnh:

fsolve(‘function’,x0,options) Lệnh fsolve cho phép giải bài toán với nhiều thuật toán khác nhau

Trang 33

x(1)*x(2)-x(1)-x(2)<=-1.5

x(1)*x(2)>=-10

Chương trình Matlab như sau:

Bước 1: viết hàm m.file cho hàm f(x):

Trang 34

[x,y,h]=fsolve('f2',x0,options)

Norm of First-order Trust-region

Iteration Func-count f(x) step optimality radius

5 18 3.54637e-026 2.27883e-007 5.67e-013 1.13

Optimization terminated: first-order optimality is less than options.TolFun

Tìm cực trị của hàm f(x) trong khoảng -2÷2 bằng hàm

fminbndvới nhiều biến ra : f(x)=x^2*(log(x))^2 với x trong khoảng 0.1÷0.5

Chương trình Matlab như sau:

- Bước 1: lập hàm m.file ta gõ tiếp các chuỗi lệnh

Trang 35

Bài 7.1: Cho hai đa thức:

Trang 38

1 0.04s+1

T ransfer Fcn3

1 s+1

T ransfer Fcn2

1 0.35s+1 Transfer Fcn1

10 0.1s+1 Transfer Fcn Subtract

Step

Scope

0.8986 Display

Kết quả là : U(t)=0,8986.

CHƯƠNG IX GIẢI MẠCH ĐIỆN

Bài 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ở:

SVTH: Phạm Thanh Huyền 38 Lớp Đ3H1

Trang 39

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ị dòng điện chạy trong mạch.

%Ma tran dien ap

I=Z\U;%dong dien nhanh

disp(' I1 I2 I3 I4 I5')

fprintf('%g'), disp([I(1) I(2) I(3) I(4) I(5)])

I1 I2 I3 I4 I5

20.4596 -36.0921 28.3396 13.7175 -26.4246

Bài 9.2 Giải bài toán ví dụ 9.1 với các tham số phức bảng 9.2.

>> R=[9+6.3i 5.2+7.2i 6.2+8.2i 5.4+6i 0];

E=[142+65i 176+132i 0 0 0];

Z=[1 1 1 1 1;R(1) -R(2) 0 0 0;0 R(2) -R(3) 0 0;0 0 R(3) -R(4) 0;0 0 0 R(4) -R(5)];

%Ma tran dien tro mach vong

U=[0;E(1)-E(2);E(2)-E(3);E(3)-E(4);E(4)-E(5)]; %Ma tran dien ap

I=Z\U; %dong dien nhanh

Số liệu bảng 9.2 như sau:

Um=120V; thetau=150; Zm=4.33Ω; thetaz=650;

>> Um=120;

thetau=15;

Trang 41

disp(' P,W Q,VAr S,VA')

>> disp('xac ding gia tri hieu dung cua dien ap URL Cac thanh phan Ur va UL');R=4.67;

L=22*10^-3;

Rsh=0.15;

Ish=1.40;

Ngày đăng: 27/06/2016, 19:24

HÌNH ẢNH LIÊN QUAN

5.4. Đồ thị ba chiều 3D - Báo cáo thực hành Matlab
5.4. Đồ thị ba chiều 3D (Trang 21)

TỪ KHÓA LIÊN QUAN

w