Thứ Tư, 22 tháng 1, 2014

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





BÀI 7:
BÀI 7:
CẤU TRÚC ĐIỀU KHIỂN
CẤU TRÚC ĐIỀU KHIỂN








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


Khái niệm
Khái niệm
Cấu trúc for - end
Cấu trúc for - end
Cấu trúc while - end
Cấu trúc while - end
Các ví dụ
Các ví dụ






Khái niệm
Khái niệm
Các loại vòng lặp cơ bản:
Các loại vòng lặp cơ bản:
-
Vòng lặp for – end
Vòng lặp for – end
-
Vòng lặp while – end
Vòng lặp while – end
Cách dùng vòng lặp while và for
Cách dùng vòng lặp while và for
Sự khác nhau giữa hai vòng lặp này
Sự khác nhau giữa hai vòng lặp này




Cấu trúc for – end
Cấu trúc for – end


Cú pháp:
Cú pháp:
for
for
k=csđầu:cscuối
k=csđầu:cscuối
Lệnh 1;
Lệnh 1;
Lệnh 2;
Lệnh 2;
………
………
Lệnh n;
Lệnh n;
end
end
Lưu đồ giải thuật
Lưu đồ giải thuật


Chú ý:
Chú ý:
+ cs đầu và cscuối có thể là một
+ cs đầu và cscuối có thể là một
giá trò bất kỳ (không nhất thiết
giá trò bất kỳ (không nhất thiết
phải là số nguyên), cũng có thể
phải là số nguyên), cũng có thể
là một biểu thức toán học
là một biểu thức toán học
+ Thường trong lập trình người
+ Thường trong lập trình người
ta lấy csđầu và cscuối là số
ta lấy csđầu và cscuối là số
nguyên
nguyên
Start
Start
k<=cscuối
k<=cscuối
Lệnh
Lệnh
End
End
Yes
Yes
No
No
k=csđầu
k=csđầu
k=k+1;
k=k+1;




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


Lệnh
Lệnh
break
break
: khi vòng lặp gặp lệnh này thì
: 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
chương trình sẽ nhảy ra khỏi vòng lặp




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

!4
x
!3
x
!2
x
!1
x
1e)x(S
432
x
n
++++==
Phân tích đề:
Phân tích đề:
-
Để tính e, ta cho x=1 trong biểu thức trên
Để 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 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ò
Xác đònh chỉ số đầu và chỉ số cuối: csđầu=0, cscuối=50, giá trò
đầu của S=0
đầu của S=0
-
Xác đònh sai số của giá trò: Sai số ở lần lặp thứ n
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
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ố
sai số
!n
x
n
|)x(S)x(S|saiso
1nn −
−=




Viết chương trình:
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
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
phải được viết ở một M-file riêng
Chương trình con tính giai thừa:
Chương trình con tính giai thừa:
function
function


kq=giaithua(n)
kq=giaithua(n)
kq=1;
kq=1;
for
for
k=1:n
k=1:n
kq=kq*k;
kq=kq*k;
end
end
Chương trình chính tính tổng:
Chương trình chính tính tổng:
S=0;x=1;
S=0;x=1;
for
for
k=0:50
k=0:50
S1=S;
S1=S;
S=S+x^k/giaithua(k);
S=S+x^k/giaithua(k);
if
if
abs(S-S1)<10^(-10)
abs(S-S1)<10^(-10)
break;
break;
end
end
end
end
fprintf(‘Gia tri cua e =%4.12f\n’,S);
fprintf(‘Gia tri cua e =%4.12f\n’,S);




Ví dụ 2:
Ví dụ 2:
Bài 6.3a trong sách Thực hành Matlab
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:
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ân bằng: Nút biết V-
δ
δ
, nút có công suất vô cùng lớn
, 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 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
Nút tải: Nút biết trước P-Q




Phân tích:
Phân tích:
Xuất phát từ phương pháp thế nút: Y
Xuất phát từ phương pháp thế nút: Y
Bus
Bus
V=I
V=I










=




















+−−
−+−
−−+
3
2
1
3
2
1
13232313
23131212
13121312
I
I
I
V
V
V
yyyy
yyyy
yyyy
Ta được hệ phương trình thế nút sau:
Ta được hệ phương trình thế nút sau:













=++−−
=−++−
=−−+
)3(
V
S
V)yy(VyVy
)2(
V
S
VyV)yy(Vy
)1(
V
S
VyVyV)yy(
3
*
3
*
32313223113
2
*
2
*
32322312112
1
*
1
*
31321211312




Phân tích:
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ì
Đ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ậy, trong 3 phương trình (1),(2),(3) chỉ giữ lại phương trình (2)
và (3)
và (3)
Hệ phương trình trên không thể giải bằng Gauss
Hệ phương trình trên không thể giải bằng Gauss
V=Y
V=Y
Bus
Bus
\I vì I chưa biết
\I vì I chưa biết
Giải hệ phương trình bằng phép lặp đơn x=
Giải hệ phương trình bằng phép lặp đơn x=
ϕ
ϕ
(x), đưa
(x), đưa
hệ phương trình về dạng
hệ phương trình về dạng
V=
V=
ϕ
ϕ
(V) như sau:
(V) như sau:









+










++=
+










++=
2313
223113
3
*
3
*
3
2312
323112
2
*
2
*
2
yy
1
*VyVy
V
S
V
yy
1
*VyVy
V
S
V




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


Cú pháp:
Cú pháp:
while
while
<điều kiện>
<điều kiện>
Lệnh 1;
Lệnh 1;
Lệnh 2;
Lệnh 2;
………
………
Lệnh n;
Lệnh n;
end
end
Lưu đồ giải thuật
Lưu đồ giải thuật


Điều kiện:
Điều kiện:
là biểu thức logic
là biểu thức logic
hoặc điều kiện có thể là 1 biểu thức toán
hoặc điều kiện có thể là 1 biểu thức toán
học
học
- Nếu giá trò biểu thức khác 0 thì
- 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
Matlab hiểu điều kiện là đúng và thực thi
lệnh, và ngược lại
lệnh, và ngược lại
Start
Start
Điều kiện
Điều kiện
Lệnh
Lệnh
End
End
Yes
Yes
No
No




Giải lại ví dụ 1 bằng phép lặp while-end
Giải lại ví dụ 1 bằng phép lặp while-end
S=0;x=1;saiso=1;k=0;
S=0;x=1;saiso=1;k=0;
while
while
saiso>=10^(-10)
saiso>=10^(-10)
S1=S;
S1=S;
S=S+x^k/giaithua(k);
S=S+x^k/giaithua(k);
k=k+1;
k=k+1;
saiso=abs(S-S1);
saiso=abs(S-S1);
end
end
fprintf(‘Gia tri e= %4.12f\n’,S);
fprintf(‘Gia tri e= %4.12f\n’,S);






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




Sự khác nhau giữa vòng lặp while và for
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
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.
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ử
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
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ả.
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
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
tính toán là không xác đònh, chỉ kết thúc với điều kiện đi
kèm.
kèm.
Cần chú ý, nếu điều kiện kiểm tra hay bố trí cấu trúc
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.
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
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
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.
chổ sai và sửa chữa.

Không có nhận xét nào:

Đăng nhận xét