'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 địn
Trang 1BÁ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:
1.Lê Quốc Bảo
15101 59 2.Bùi Mạnh Can
15102 54 3.Đỗ Ngọc Duy
15104 44 4.Lưu
Trường Gian
15108 31 5.Lê Ngọc Quí
15127 01 6.Nguyễn
15128 88 7.Lê Hồng
Tha nh
15129 91 8.Nguyễn
Tiến
Thịn h
15132 64 9.Hồ Đăng Trí
15136 54 10.Nguyễn
Minh
Tuấ n
15138 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
Trang 2I Cú pháp:
x=fminbnd(fun,x1,x2)
x=fminbnd(fun,x1,x2,options)
[x,fval]=fminbnd( )
[x,fval,exitflag] = fminbnd( )
[x,fval,exitflag,output] = fminbnd( )
II Giới thiệu
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
Trang 33 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 =
Trang 43.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
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
c) [x,fval] = fminbnd( ) : trả về giá trị nhỏ nhất của f với x tương ứng d) [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)
e) [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
III Giải thích
Trang 5fun 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
IV Ví dụ
1 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
2
[x,fval,exitflag]=fminbnd(@cos,3,4,optimset(‘TolX’,1e-12,’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 :
Trang 6Function 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