GUI设计在高等数学中的应用Word格式文档下载.docx
《GUI设计在高等数学中的应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《GUI设计在高等数学中的应用Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
●建立2个坐标轴对象,用于显示函数的动态彗星轨迹和函数的极限图形。
●建立2个静态文本标注动态彗星轨迹和函数的极限图形。
●建立3个按钮,用于绘制图形和结束程序。
●分别设置3个按钮的标示为comet_pushbutton,用于绘制函数的动态彗星轨迹曲线。
limit_pushbutton,绘制函数的极限曲线。
close_pushbutton,用于结束程序。
界面设置如图1-1所示。
保存为gui_hanshu.fig文件。
添加菜单,添加绘制图形和关闭图形的命令,如图1_2所示。
建立一级菜单【file】,并设置3个菜单命令【comet】【limit】和【close】它们的tag属性分别设置为comet_menu调用绘制函数的动态彗星轨迹图形功能。
limit_menu,调用绘制函数的极限图像功能。
close_menu,执行关闭图形的功能。
图1_1函数极限可视化布局
图1_2添加菜单
编写代码完成程序中的变量赋值,输出(输入)及绘图等,打开gui_hanshu.m文件,系统自动生成M文件的程序代码如下:
functionvarargout=gui_hanshu(varargin)
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
'
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@gui_hanshu_OpeningFcn,...
gui_OutputFcn'
@gui_hanshu_OutputFcn,...
gui_LayoutFcn'
[],...
gui_Callback'
[]);
ifnargin&
&
ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
functiongui_hanshu_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=gui_hanshu_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
调用comet_pushbutton_Callback绘制函数
下的动态曲线(彗星轨迹)图形,代码如下:
functioncomet_pushbutton_Callback(hObject,eventdata,handles)
axes(handles.axes1);
x=-700:
0.1:
700;
boxon;
holdon;
axis([-700700-2.41.1]);
comet(x,sin(x)./x);
调用limit_pushbutton_Callback绘制函数
下的静态极限图形,代码如下:
functionlimit_pushbutton_Callback(hObject,eventdata,handles)
axes(handles.axes2);
fplot('
sin(x)./x'
[-100100-0.241.1]);
text(30,0.5,'
);
调用close函数关闭图形退出程序,代码如下:
functionclose_pushbutton_Callback(hObject,eventdata,handles)
close
菜单命令comet_menu调用函数comet_pushbutton_Callback绘制动态曲线,代码如下:
functioncomet_menu_Callback(hObject,eventdata,handles)
comet_pushbutton_Callback(hObject,eventdata,handles);
functionfile_menu_Callback(hObject,eventdata,handles)
菜单命令limit_menu调用函数limit_pushbutton_Callback绘制静态极限图形,代码如下:
functionlimit_menu_Callback(hObject,eventdata,handles)
limit_pushbutton_Callback(hObject,eventdata,handles);
菜单命令close_menu调用close函数关闭图形退出程序,代码如下:
functionclose_menu_Callback(hObject,eventdata,handles)
程序运行后,单击【comet】按钮或选择【comet】菜单命令后,绘制动态曲线(彗星轨迹)图形,如图1_3和图1_4所示
图1_3动态彗星轨道曲线(
)
图1_4动态彗星轨道曲线(
单击【limit】按钮或选择【limit】菜单命令后绘制静态极限图形,如图1_5所示
图1_5函数静态极限图形
图1_6函数极限可视化
从图1-6可以观察动态曲线图和静态曲线图,当
时,函数的变化趋势都是无限地趋近于0;
即
当
时,函数的变化趋势都是无限地趋近于1;
这说明双侧极限存在的充要条件是两个单侧极限存在且相等,双侧极限值等于但侧极限值。
2.多项式的曲线拟合
最佳拟合被解释为在数据点的最小误差平方和,若所用的曲线限定为多项式,那么曲线拟合是相当简捷的,称为多项式的最小二乘曲线拟合。
在MATLAB中使用函数ployfit来进行曲线拟合,调用格式如下:
P=ployfit(x,y,n)
其中x和y表示输入的原始数据,n表示阶次。
为了使用ployfit,必须给函数赋予上面的数据和希望最佳拟合数据的多项式的阶次。
如果选择n=1作为阶次,则得到最简单的线性近似,通常称为线性回归;
相反,如果选择n=2作为阶次,则得到一个二阶多项式。
输入原始数据,对这些数据进行多项式不同阶次得曲线拟合。
●建立一个坐标轴对象,用于显示函数和零点坐标。
●建立4个静态文本框,标注相应的控件的提示和用来显示坐标数值。
●建立2个按钮,用于求函数零点和结束程序。
设置控件的tag属性:
●分别设置两个按钮的tag为polyfit_pushbutton用于曲线拟合,close_pushbutton用于结束程序。
●设置4个可编辑文本框,显示x,y,n和拟合后的系数数据,tag依次设为x_edit,y_edit,n_edit,xishu_edit.
●Tag为x_edit,y_edit,n_edit的可编辑文本框的HorizontalAlignment都设置为left.
添加菜单,用来添加曲线拟合和关闭图形的命令。
建立一级菜单【file】,并且设置菜单命令【polyfit】和【close】.它们的tag分别设置为polyfit_menu调用曲线拟合的函数和close_menu关闭图形的功能。
系统自动生成的M文件打得程序代码如下:
functionvarargout=gui_qx(varargin)
@gui_qx_OpeningFcn,...
@gui_qx_OutputFcn,...
在程序初始化得时候,显示默认想x,y,n的数据,代码如下:
functiongui_qx_OpeningFcn(hObject,eventdata,handles,varargin)
set(handles.x_edit,'
string'
'
00.10.20.30.40.50.60.70.80.91'
set(handles.y_edit,'
0.461.993.276.167.087.347.569.669.459.3411.4'
set(handles.n_edit,'
3'
functionvarargout=gui_qx_OutputFcn(hObject,eventdata,handles)
按钮polyfit_pushbutton调用函数,将x,y,n的字符转化为数据,进行曲线拟合,把拟合后的系数输出在tag为xishu_eidt的编辑文本框中,代码如下:
functionpolyfit_pushbutton_Callback(hObject,eventdata,handles)
x=str2num(get(handles.x_edit,'
));
y=str2num(get(handles.y_edit,'
n=str2num(get(handles.n_edit,'
plot(x,y,'
m:
'
Marker'
o'
holdon
p=polyfit(x,y,n);
yy=polyval(p,x);
plot(x,yy,'
r-'
set(handles.xishu_edit,'
strcat('
p='
num2str(p)));
按钮close_pushbutton调用close函数关闭图形结束程序,代码如下:
菜单polyfit_menu调用polyfit_pushbutton_Callback函数进行曲线拟合,代码如下:
functionpolyfit_menu_Callback(hObject,eventdata,handles)
polyfit_pushbutton_Callback(hObject,eventdata,handles)
按钮close_menu调用close函数关闭图形结束程序,代码如下:
程序运行后,可以使用默认的x,y,n的数据,x=[00.10.20.30.40.50.60.70.80.91];
y=[0.461.993.276.167.087.347.569.669.459.3411.4];
阶数n=3,如图2-1所示。
图2-1初始界面
单击【polyfit】按钮和菜单命令【polyfit】后,进行曲线拟合,如图2-2所示
图2-2曲线拟合
由图2-2可知,拟合后的系数p=[11.8337-25.550124.57930.0995105],
则多项式的表达式y=11.8337x^3-25.5501x^3+24.5793x+0.0995105.
当对x,y,n分别进行改变时,拟合曲线也相应的随之变化,如图2-3所示
图2-3当n=6时的曲线拟合
多项式阶次的选择是任意的。
两点决定一直线或一阶多项式,3点决定一个二阶多项式,n+1数据点唯一的确定n阶多项式此例中的11个数据点可选一个最高为10阶的多项式。
然而,并不是多项式的阶数越高,效果越好。
需要对不同阶数的情况进行比较分析,才能得到较好的多项式拟合效果。
参考文献:
[1]李显宏.MATLAB界面设计与编译技巧.北京:
电子工业出版社,2006.
[2]刘卫国.MATLAB程序设计与应用(第二版).北京:
高等教育出版社,2006
[3]赵书兰.MATLAB图形与动画编程实例案.北京:
化学工业出版社,2009