如果|(b-a)/b|和|(y1-y2)/y2|都大于收敛精度ε重新开始循环。
—
因为[a,b]为单峰区间,这样每次可将搜索区间缩小倍,处理后的区间都将包含极小点的区间缩小,然后在保留下来的区间上作同样的处理,如此迭代下去,将使搜索区[a,b]逐步缩小,直到满足预先给定的精度时,即获得一维优化问题的近似最优解。
插入点原理图如下:
3、实验程序框图
4、黄金分割法程序代码
黄金分割法:
1选定初始区间[a1,b1]及精度tol大于0,计算试探点:
"
λ1=a1+*(b1-a1)
µ1=a1+*(b1-a1)并令k=1
2若b(k)-a(k)小于tol,则停止计算,
否则当f(λ(k))大于f(µ(k))时转3
当f(λ(k))小于等于f(µ(k))时转4
3置
a(k+1)=λ(k)
b(k+1)=b(k)
@
λ(k+1)=µ(k)
µ(k+1)=a(k+1)+*(b(k+1)-a(k+1))
转5
4置
a(k+1)=a(k)
b(k+1)=µ(k)
µ(k+1)=λ(k)
λ(k+1)=a(k+1)+*(b(k+1)-a(k+1))
'
5令k=k+1转2
四、可视化(GUI)界面截图
带入函数检验:
五、心得体会
通过这次课程设计,我对黄金分割法有了更深入的了解,也对C语言的作用有了更深入的了解,使我明白了有些复杂的问题可以通过计算机编程来实现,来求解,同时也使我认识到计算机工具的重要性。
同时也得感谢同学的帮助才得以顺利完成本次设计。
]
六、参考文献:
[1]孙靖民,梁迎春机械优化设计(第四版)北京:
机械工业出版社2006
[2]龚纯,王正林.精通MATLAB最优化计算.北京:
电子工业出版社,2009.
[3] 陈玉莲,李俊文.基于MATLAB的黄金分割法的优化设计,科技创新导报,2010
[4]王秀芳基于C语言的黄金分割法的优化设计2008
[5]薛定宇;陈阳泉高等应用数学问题的MATLAB求解2008
附录:
)
源代码如下
functionvarargout=num_3(varargin)
%NUM_3MATLABcodefor
%NUM_3,byitself,createsanewNUM_3orraisestheexisting
%singleton*.
%
%H=NUM_3returnsthehandletoanewNUM_3orthehandleto
\
%theexistingsingleton*.
%
%NUM_3('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinwiththegiveninputarguments.
%
%NUM_3('Property','Value',...)createsanewNUM_3orraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforenum_3_OpeningFcngetscalled.An
】
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtonum_3_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
^
%Edittheabovetexttomodifytheresponsetohelpnum_3
%LastModifiedbyGUIDE08-Jun-201314:
52:
29
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
·
'gui_OpeningFcn',@num_3_OpeningFcn,...
'gui_OutputFcn',@num_3_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
=str2func(varargin{1});
end
》
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
)
%---Executesjustbeforenum_3ismadevisible.
functionnum_3_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstonum_3(seeVARARGIN)
。
%Choosedefaultcommandlineoutputfornum_3
=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesnum_3waitforuserresponse(seeUIRESUME)
%uiwait;
$
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=num_3_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
、
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=;
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
¥
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
closeall;
functionedit1_Callback(hObject,eventdata,handles)
%hObjecthandletoedit1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
!
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Hints:
get(hObject,'String')returnscontentsofedit1astext
%str2double(get(hObject,'String'))returnscontentsofedit1asadouble
%---Executesduringobjectcreation,aftersettingallproperties.
functionedit1_CreateFcn(hObject,eventdata,handles)
,
%hObjecthandletoedit1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled
%Hint:
editcontrolsusuallyhaveawhitebackgroundonWindows.
%SeeISPCandCOMPUTER.
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
~
end
functionedit2_Callback(hObject,eventdata,handles)
%hObjecthandletoedit2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
{
%Hints:
get(hObject,'String')returnscontentsofedit2astext
%str2double(get(hObject,'String'))returnscontentsofedit2asadouble
%---Executesduringobjectcreation,aftersettingallproperties.
functionedit2_CreateFcn(hObject,eventdata,handles)
%hObjecthandletoedit2(seeGCBO)
;
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled
%Hint:
editcontrolsusuallyhaveawhitebackgroundonWindows.
%SeeISPCandCOMPUTER.
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
@
functionedit3_Callback(hObject,eventdata,handles)
%hObjecthandletoedit3(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
"
%Hints:
get(hObject,'String')returnscontentsofedit3astext
%str2double(get(hObject,'String'))returnscontentsofedit3asadouble
%---Executesduringobjectcreation,aftersettingallproperties.
functionedit3_CreateFcn(hObject,eventdata,handles)
%hObjecthandletoedit3(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
—
%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled
%Hint:
editcontrolsusuallyhaveawhitebackgroundonWindows.
%SeeISPCandCOMPUTER.
ifispc&