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

Bài giảng Matlab - Bài 7

16 636 4
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Cấu trúc điều khiển
Thể loại Bài giảng
Định dạng
Số trang 16
Dung lượng 275 KB

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

Nội dung

Học phần Tin ứng dụng thuộc khối kiến thức cơ sở chung của các ngành Đại học kỹ thuật chuyên ngành điện. Trang bị cho sinh viên những kiến thức cơ bản về: Phần mềm Matlab và ứng dụng của nó đ

Trang 1

BÀI 7:

CẤU TRÚC ĐIỀU KHIỂN

Trang 2

Các phần trình bày

Khái niệm

Cấu trúc for - end

Cấu trúc while - end

Các ví dụ

Trang 3

Khái niệm

Các loại vòng lặp cơ bản:

-Vòng lặp for – end

-Vòng lặp while – end

Cách dùng vòng lặp while và for

Sự khác nhau giữa hai vòng lặp này

Trang 4

Cấu trúc for – end

Cú pháp:

for k=csđầu:cscuối

Lệnh 1;

Lệnh 2;

………

Lệnh n;

end

Lưu đồ giải thuật

Chú ý:

+ cs đầu và cscuối có

thể là một giá trị bất

kỳ (không nhất thiết

phải là số nguyên),

cũng có thể là một

biểu thức toán học

+ Thường trong lập trình

người ta lấy csđầu và

cscuối là số nguyên

Start

k<=cscuố i

Lệnh

End Yes

No k=csđầu

k=k+1;

Trang 5

Lệnh thường sử dụng trong vòng lặp

Lệnh break : khi vòng lặp gặp lệnh này thì chương trình sẽ nhảy ra khỏi vòng lặp

Trang 6

Ví dụ 1:

Tính giá trị gần đúng của số e với sai số là 10-10 theo công thức khai triển Macloran sau:

! 4

x

! 3

x

! 2

x

! 1

x 1

e )

x (

Phân tích đề:

-Để tính e, ta cho x=1 trong biểu thức trên

-Xác định số hạng tổng quát của chuỗi số

-Xác định chỉ số đầu và chỉ số cuối: csđầu=0, cscuối=50, giá trị đầu của S=0

-Xác định sai số của giá trị: Sai số ở lần lặp thứ n

-Vì vậy, cần phải giữ lại giá trị của S ở lần lặp trứơc đó để tính sai số

! n

| ) x ( S ) x ( S

|

Trang 7

Viết chương trình:

Cần phải viết chương trình con tính giai thừa Chương trình con phải được viết ở một M-file riêng

Chương trình con tính giai thừa:

function kq=giaithua(n)

kq=1;

for k=1:n

kq=kq*k;

end

Chương trình chính tính tổng:

S=0;x=1;

for k=0:50

S1=S;

S=S+x^k/giaithua(k);

if abs(S-S1)<10^(-10)

break;

end end

fprintf(‘Gia tri cua e =%4.12f\n’,S);

Trang 8

Ví dụ 2: Bài 6.3a trong sách Thực hành Matlab

Có 3 loại nút (bus-thanh góp) trong mạng điện:

-Nút cân bằng: Nút biết V-, nút có công suất vô cùng lớn

-Nút nguồn: Biết P-V, nút giữ điện áp, các nhà máy điện

-Nút tải: Nút biết trước P-Q

Trang 9

Phân tích:

Xuất phát từ phương pháp thế nút: YBusV=I

3 2 1

3 2 1

13 23

23 13

23 13

12 12

13 12

13 12

I I

I V

V

V y

y y

y

y y

y y

y y

y y

Ta được hệ phương trình thế

nút sau:

) 3

( V

S V

) y y

( V

y V

y

) 2

( V

S V

y V

) y y

( V

y

) 1

( V

S V

y V

y V

) y y

(

3

* 3

*

3 23

13 2

23 1

13

2

* 2

*

3 23 2

23 12

1 12

1

* 1

*

3 13 2

12 1

13 12

Trang 10

Phân tích:

Điện áp tại nút 1 đã biết, tìm điện áp tại nút 2 và 3 Vì vậy, trong 3 phương trình (1),(2),(3) chỉ giữ lại phương trình (2) và (3)

Hệ phương trình trên không thể giải bằng Gauss V=YBus\I vì I chưa biết

Giải hệ phương trình bằng phép lặp đơn x=(x), đưa hệ phương trình về dạng

V=(V) như sau:









23 13

2 23 1

13 3

* 3

*

3

23 12

3 23 1

12 2

* 2

*

2

y y

1

* V

y V

y V

S V

y y

1

* V

y V

y V

S V

Trang 11

Cấu trúc vòng lặp while-end

Cú pháp:

while <điều kiện>

Lệnh 1;

Lệnh 2;

………

Lệnh n;

end

Lưu đồ giải thuật

thức logic hoặc điều kiện có

thể là 1 biểu thức toán học

- Nếu giá trị biểu thức khác 0 thì Matlab hiểu điều

kiện là đúng và thực thi

lệnh, và ngược lại

Start

Điều kiện

Lệnh

End Yes

No

Trang 12

Giải lại ví dụ 1 bằng phép lặp while-end

S=0;x=1;saiso=1;k=0;

while saiso>=10^(-10)

S1=S;

S=S+x^k/giaithua(k);

k=k+1;

saiso=abs(S-S1);

end fprintf(‘Gia tri e= %4.12f\n’,S);

Trang 13

Giải lại ví dụ 2 bằng phép lặp while-end

Trang 14

Sự khác nhau giữa vòng lặp while và for

Sử dụng vòng lặp for-end để tính toán một tập hợp phần tử hữu hạn hay

theo một quy tắc xác định

Xác định rõ số vòng lặp cần sử dụng, các biến số sử dụng trong vòng

lặp: biến thay đổi giá trị theo phương pháp ghi chồng số liệu và biến lưu giá trị, biến lưu kết quả

Sử dụng vòng lặp while – end khi số vòng lặp cần tính toán là không xác

định, chỉ kết thúc với điều kiện đi kèm

Cần chú ý, nếu điều kiện kiểm tra hay bố trí cấu trúc không rõ ràng có thể chương trình không thoát ra được

Trong trường hợp này, chỉ có thể ngưng chương trình bằng phím tắt (Ctrl+C) để thoát ra khỏi chương trình và tìm chổ sai và sửa chữa

Trang 15

Ví dụ 3: Bài 6-3a trong sách bài tập

Phân tích:

Điện trở tương đương nhìn vào nút 0 và E: X0=XC Điện trở tương đương nhìn vào nút 1 và E:

X1=(X0+Xcs)//Xc

Điện trở tương đương nhìn vào nút 2 và E:

X2=(X1+Xcs)//Xc

………

Điện trở tương đương nhìn vào nút M và E:

XM=(XM-1+Xcs)//Xc

Từ đó suy ra:

- Nhập giá trị ban đầu cho Xtd=XC; csđầu=1, cscuối=50

- Công thức lặp tổng quát Xtd=(Xtd+Xcs)//Xc

Trang 16

Chöông trình

% Nhap so lieu ban dau

Xcs=6;Xc=12;

% Cau 1: Xac dinh dien khang giua nut 1 va E

X1E=Xc*(Xc+Xcs)/(Xc+Xc+Xcs);

fprintf(‘Dien tro X1E=%4.2f\n’,X1E);

% Cau 2: Xac dinh dien tro tuong duong giua E va

M

Xtd=Xc;

for k=1:50

Xtd=Xc*(Xtd+Xcs)/(Xc+Xtd+Xcs);

end

fprintf(‘Dien tro XME=%4.2f\n’,Xtd);

Ngày đăng: 15/10/2012, 14:07

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w