BÁO CÁO BÀI TẬP LỚN MATLAB ĐỀ TÀI 7
Tìm Hiểu Hàm fminbnd
A.Thành viên nhóm và giảng viên hướng dẫn
I.Thành viên nhóm
Nhóm gồm 10 thành viên học lớp L02-AB:
15101
1.Lê Quốc
Bảo 59
15102
2.Bùi Mạnh
Can 54
15104
3.Đỗ Ngọc
Duy 44
4.Lưu
15108
Trường
Gian 31
15127
5.Lê Ngọc
Quí 01
6.Nguyễn
15128
Hữu
Tài
88
Tha 15129
7.Lê Hồng
nh
91
8.Nguyễn
Thịn 15132
Tiến
h
64
15136
9.Hồ Đăng
Trí
54
10.Nguyễn
Tuấ 15138
Minh
n
39
II.Giảng viên hướng dẫn
Cô Trần Ngọc Diễm
B.Nội dung báo cáo
Hàm fminbnd dùng để tìm giá trọ nhỏ nhất của hàm một biến trong khoảng
xác định
Cú pháp:
I.
•
•
•
•
•
x=fminbnd(fun,x1,x2)
x=fminbnd(fun,x1,x2,options)
[x,fval]=fminbnd(...)
[x,fval,exitflag] = fminbnd(...)
[x,fval,exitflag,output] = fminbnd(...)
Giới thiệu
II.
a)
x=fminbnd(fun,x1,x2) :có chức năng đưa ra một giá trị x trong khoảng
x1 , x2 mà tại đó f nhỏ nhất
VD:Tìm GTNN của cos(x) với x trong khoảng (3,4)
x=fminbnd(@cos,3,4)
x=
3.1416
b)
•
x=fminbnd(fun,x1,x2,options) :lệnh này giúp bạn điều chỉnh các
nghiệm dài hay ngắn để rút ngắn bài làm của bạn (làm gọn), hoặc
bạn có thể dùng lệnh optimset để thực hiện nhiều cấu trúc:
Disply :
‘off’ không hiển thị output
VD :
x=fminbnd(@cos,3,4,optimset('Display','off'))
x=
3.1416
‘iter’ hiển thị output sau mỗi lần làm
VD:
x=fminbnd(@cos,3,4,optimset('Display','iter'))
Func-count
x
f(x)
Procedure
1
3.38197
-0.971249
initial
2
3.61803
-0.888633
golden
3
3.23607
-0.995541
golden
4
3.13571
-0.999983
parabolic
5
3.1413
-1
parabolic
6
3.14159
-1
parabolic
7
3.14156
-1
parabolic
8
3.14163
-1
parabolic
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of
1.000000e-04
x=
3.1416
‘final’ chỉ hiển thị output sau cùng
VD:
>> x=fminbnd(@cos,3,4,optimset('Display','final'))
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of
1.000000e-04
x=
3.1416
‘notify’ (mặt định) hiển thị output chỉ khi hàm không hội tụ
VD:
x=fminbnd(@(x).1/x,-1,-1/2,optimset('Display','notify'))
x=
-0.5001
•
•
•
•
•
•
•
c)
d)
e)
III.
FunValCheck : kiểm tra lại một lần nữa cho dù đã tìm được giá
trị đúng.
'on' hiện thị thông báo lỗi khi hàm cho giá trị phức tạp
'off' không báo lỗi
MaxFunEvals : cho phép đánh giá tất cả hàm số
MaxIter : cho phép lặp lại tất cả
OutputFcn : xác định hàm được dùng tại mỗi lần làm
PlotFcns : tự động điều chỉnh độ dài ngắn trong quá trình thực hiện
thuật toán , chọn từ các vị trí xác định trước hoặc vị trí mà bạn
chọn . chuyển qua hàm khác hoặc một cụm các hàm khác.
Tolx : chấm dứt tại x
[x,fval] = fminbnd(...) : trả về giá trị nhỏ nhất của f với x tương ứng
[x,fval,exitflag] = fminbnd(...) trả lại các giá trị exitflag mà chính nó
mô tả về điều kiện thoát của hàm fminbnd:
nếu là 1 : fminbnd dùng kết quả x dựa trên option.tollx
nếu là 0 : tối đa số hàm và số lần lặp đi lặp lại được làm
nếu là -1 : thuật toán được chấm dứt bởi output
nếu là -2 : bài toán sai (x1>x2)
[x,fval,exitflag,output] = fminbnd(...) trở về cấu trúc output được tối
ưu hóa các vấn đề :
• algorithm : những thuật toán được sử dụng
• funcCount : đánh giá số hàm số
• iterations :số lần lặp
• message :kết thúc tin nhắn
Giải thích
fun là hàm số cần tìm cực tiểu . fun chấp nhận 1 x vô hướng và trả về 1 f
vô hướng, hàm đối tượng được đánh giá tại x. hàm fun có thể được xác
định như 1 hàm tự viết hay 1 hàm có sẵn
Ví dụ
IV.
1.
2.
x=fminbnd(@cos,3,4) cho kết quả là với vài chữ số thập phân và 1
thông báo kết thúc
[x,fval,exitflag]=fminbnd(@cos,3,4,optimset(‘TolX’,1e12,’Display’,’off’))
cho kết quả làm tròn đến chữ số thập phân thứ 12, không hiển thị output,
trả về giá trị hàm tại x, trả về exitflag = 1
3.
fun có thể là hàm tự viết theo x, ví dụ f(x)=x^3-2x-5 , ta tạo 1 hàm số
f=@(x) x^3-2*x-5
rồi sử dụng fminbnd
x=fminbnd(f,0,2)
kết quả là
x=
0.8165
Giá trị của f tại cực tiểu là
y=f(x)
y=
-6.0887
Hoặc có thể làm như sau:
[x f]=minbnd(‘x^3-2*x-5’,0,2)
Cho kết quả
x=0.8165
f=-6.0887
4.Nếu fun là một hàm tham số, ta có thể dùng :
Function f=myfun(x,a)
f=(x-a)^2
chỉ định giá trị của a, ví du:
a=1.5
tính x
x=fminbnd(@(x)myfun(x,a),o,1)
V.
Giới hạn
Hàm số cần tìm cực tiểu phải liên tục trong đoạn cần tìm. Fminbnd có thể
chỉ cho kết quả gần bằng. fminbnd thường cho hiện kết quả gần bằng khi
cực tiểu tại ranh giới của khoảng đang xét. Fminbnd chỉ chạy với biến số
thực