文档库 最新最全的文档下载
当前位置:文档库 › 美赛数学建模专用-第八章 MATLAB的GUI 程序设计

美赛数学建模专用-第八章 MATLAB的GUI 程序设计

美赛数学建模专用-第八章 MATLAB的GUI 程序设计
美赛数学建模专用-第八章 MATLAB的GUI 程序设计

美赛数学建模专用-

第八章MATLAB的GUI程序设计Chapter8:Design of MATLAB of GUI

program

GUI(Graphical User Interfaces):由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。

基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜单。

一.控件对象及属性(Object and its attributes of controller))

1.GUI控件对象类型(The mode of controller object)

控件对象是事件响应的图形界面对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback).

控件对象及其功能:(表7—1)

2.控件对象的描述(Description of controller object)

MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。一种为静态控件,是一种不产生响应的控件,如文本框等。

每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。

(1)按钮(Push Buttons):执行某种预定的功能或操作;

(2)开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行

callback(回调函数)中指定的内容,再次点击,按钮复

原,并再次执行callback中的内容;

(3)单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在

一组状态中选择单一的状态,或称为单选项;

(4)复选框(Check Boxes):单个的复选框用来在两种状态之

间切换,多个复选框组成一个复选框组时,可使用户在

一组状态中作组合式的选择,或称为多选项;

(5)文本编辑器(Editable Texts):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等

操作;

(6)静态文本框(Static Texts):仅仅用于显示单行的说明文字;

(7)滚动条(Slider):可输入指定范围的数量值;

(8)边框(Frames):在图形窗口圈出一块区域;

(9)列表框(List Boxes):在其中定义一系列可供选择的字符串;

(10)弹出式菜单(Popup Menus):让用户从一列菜单项中

选择一项作为参数输入;

(11)坐标轴(Axes):用于显示图形和图象

3.控件对象的属性(Attributes of controller object)

用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。

两大类控件对象属性:第一类是所有控件对象都具有的公共属性,第二类是控件对象作为图形对象所具有的属性。

A,控件对象的公共属性

Children取值为空矩阵,因为控件对象没有自己的子对象

Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口

Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象

Type取值为uicontrol,表明图形对象的类型

UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息

Visible取值为no或off,

B,控件对象的基本控制属性

BackgroundColor取值为颜色的预定义字符或RGB数值

Callback取值为字符串,可以是某个M文件名或一小段MATLAB

语句,当用户激活某个控件对象时,应用程序就运

行该属性定义的子程序。

Enable取值为on(缺省值),inactive和off

Extend取值为四元素矢量[0,0width,height],记录控件对象标题字符的位置和尺寸

ForegroundColor取值为颜色的预定义字符或RGB数值

Max,Min取值都为数值

String取值为字符串矩阵或数组,定义控件对象标题或选项内容Style取值可以是pushbutton,radiobutton,checkbox,edit,text, slider,frame,popupmenu或listbox

Units取值可以是pixels,normalized,inches,centimeters或points Value取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型

C,控件对象的修饰控制属性

FontAngle取值为normal,italic,oblique,

FontName取值为控件标题等字体的字库名

FontSize取值为数值,

FontWeight取值为points,normalized,inches,centimeters或pixels

HorizontalAligment取值为left,right,定义对齐方式

D,控件对象的辅助属性

ListboxTop取值为数量值

SliderStop取值为两元素矢量[minstep,maxstep],用于slider控件Selected取值为on或off

SlectionHoghlight取值为on或off

E,Callback管理属性

BusyAction取值为cancel或queue

ButtDownFun取值为字符串,一般为某个M文件名或一小段

MATLAB程序

Creatfun取值为字符串,一般为某个M文件名或一小段

MATLAB程序

DeletFun取值为字符串,一般为某个M文件名或一小段MATLAB程序

HandleVisibility取值为on,callback或off

Interruptible取值为on或off

二.GUI开发环境(GUI Development Environment,GUIDE) MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序,它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。

MATLAB提供了一套可视化的创建图形用户接口(GUI)的工具,包括:

*布局编辑器(Layout Edtor)-------在图形窗口中加入及安排对象。布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,用guide命令可以启动,或在启动平台窗口中选择GUIDE来启动布局编辑器。

*几何排列工具(Alignment Tool)-----调整各对象相互之间的几何关系和位置

*属性编辑器(Property Inspector)-----查询并设置属性值

*对象浏览器Object Browser)-----用于获得当前MATLAB图形用户界面程序中所有的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器。

*菜单编辑器(Menu Editor)-----建立窗口菜单条的菜单和任何构成布局的弹出菜单

在MATLAB中,GUI的设计是以M文件的编程形式实现的,GUI的布局代码存储在M文件和MAT文件中,而在MATLAB6中有了很大的改变,MATLAB6将GUI的布局代码存储在FIG文件中,

同时还产生一个M文件用于存储调用函数,在M文件中不再包含GUI的布局代码,在开发应用程序时代码量大大减少。

1.布局编辑器(Layout editor):用于从控件选择板上选择控件对象并

放置到布局区去,布局区被激活后就成为图形窗口。在命令窗口输入GUIDE命令或点击工具栏中的guide图标都可以打开空白的布局编辑器,在命令窗口输入GUIDE filename可打开一个已存在的名为filename图形用户界面。

(1)将控件对象放置到布局区

a.用鼠标选择并放置控件到布局区内;

b.移动控件到适当的位置;

c.改变控件的大小;

d.选中多个对象的方法;

(2)激活图形窗口

选Tools菜单中的Activate Figure项或点击工具条上的ActivareFigure按钮,在激活图形窗口的同时将存储M文件和FIG文件,如所建立的布局还没有进行存储,用户界面开发环境将打开一个Save As对话框,按输入的文件的名字,存储一对同名的M文件和带有.fig扩展名的FIG文件。

(3)运行GUI程序

在命令窗口直接键入文件名或用openfig,open或hgload命令运行GUI程序。

(4)布局编辑器参数设置

选File菜单下的Preferences菜单项打开参数设置窗口,点击树状目录中的GUIDE,既可以设置布局编辑器的参数。

(5)布局编辑器的弹出菜单

在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单可以完成布局编辑器的大部分操作。

2.几何位置排列工具(Alignment tool)

用于调节各控件对象之间的相对位置。

3.用属性编辑器设置控件属性(Set attributes of controller with Property Inspector)

在属性编辑器中提供了所有可设置的属性列表并显示出当前的属性。

(1)属性编辑器(Opening Property Inspector):三种方法:1.用工具栏上的图标打开;2.从View菜单中选择Property Inspector 菜单项;3.在按鼠标右键弹出的Property Inspector菜单中选择菜单项。

(1)使用属性编辑器(Using Property Inspector)

a.布置控件

b.定义文本框的属性

c.定义坐标系

d.定义按钮属性

e.定义复选框

4.菜单编辑器(Menu Editor):包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分隔线(Separator above this item)、是否在菜单前加上选中标记(Item is checked)、调用函数(Callback)。

5.对象浏览器(Object Browsers):用于浏览当前程序所使用的全部对象信息,可以在对象浏览器中选种一个或多个控件来打开该控件的属性编辑器。

三、GUI程序设计(GUI Program design)

包括图形界面的设计和功能设计两个方面

例1:用于绘图和图形旋转的GUI:

1、布置控件:一个坐标系、一个文本框、一个复选框,一个按

2、定义文本框的属性:String---简单设计示例,FontName---隶

书,FontSize--22

3、定义坐标系:Visible—off,

4、定义按钮属性:String—绘图,FontName,ForegroundColor,

ontSize,BackgroundColor,Callback---surf(peaks(30))

5、定义复选框:String—rotate3D,Callback—rotate3d

例2:设计一个简单信号分析仪的程序,要求根据输入的两个频率和时间间隔,计算函数x=sin(2πf1t)+sin(2πf2t)的值,并对函数进行快速傅立叶变换,最后分别绘制时域和频域的曲线。1.设计图形界面(GUI Design)

设计步骤:

(1)在布局编辑器中布置控件,

(2)使用几何位置排列工具对控件的位置进行调整;

(3)设计控件的属性;

(4)设置其他绘图属性。

2.设置控件的标识(Set the Tag of controller)

控件的标识(Tag)是对于各控件的识别,每个控件载创建时都会由开发环境自动产生一个标识,在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置一个新的标识。本例设置第一个坐标轴的标识为:frequency_axes,用于显示频域图形;第二个坐标轴的标识为:time_axes,用于显示时域图形。三个文本编辑框的标识为f1_input,f2_input,t_input,分别用于输入两个频率和自变量时间的间隔.

3.编写代码(Edit code)

GUI图形界面的功能,还是要通过一定的设计思路和计算方法,由特定的程序来实现。为了实现程序的功能,还需要在运行程序前编写一些代码,完成程序中变量的赋值、输入输出、计算及绘图等工作。

一般方法为,内容为:

%(1)设置对象的初始值;

%分别设置三个文本编辑框的初始值为:

f1_input=20

f2_input=50

f3_input=0:0.001:0.5

%(2)编写代码:

%1)从GUI获得拥护输入的数据,本例中输入的三个数据%分别为频率1、频率2和时间间隔。

f1=str2double(get(handles.f1_input,'String'));

f2=str2double(get(handles.f2_input,'String'));

t=eval(get(handles.t_input,'String'));

%2)计算数据,计算函数值,按指定点进行快速傅立叶变

%换,并计算频域的幅值和频域分辨率。

x=sin(2*pi*f1*t)+sin(2*pi*f2*t);

y=fft(x,512);

m=y.*conj(y)/512;

f=1000*(0:256)/512;

%3)在第一个坐标轴中绘制频域曲线。

axes(handles.frequency_axes)

plot(f,m(1:257))

set(handles.frequency_axes,'XminorTick','on')

grid on

%4)在第二个坐标轴中绘制时域曲线。

axes(handles.time_axes)%选择适当的坐标轴

plot(t,x)

set(handles.time_axes,'XminorTick','on')

grid on

运行程序(Running program)

例3:制作一个曲面光照效果的演示界面,如图所示,三个弹出式菜单分别用于选择曲面形式、色彩图、光照模式和反射模式,三个滚动条用于确定光源的位置,一个按钮用于退出演示。

制作要点:

(1)建立一个静态文本,用于显示界面的标题:光照效果演示;

(2)建立坐标轴对象,用于显示图形;

(3)建立四个下拉菜单,分别用于选择绘图表面的形状、色图、光照模式和反射模式,每个下拉菜单的上方都有一个静态文本用于说明菜单的作用;

(4)在一个frame上建立三个滑条用于确定光源的位置,并在frame上方加一说明;

(5)建立一个按钮用于退出演示;

callback函数的内容为:

function varargout=pushbutton1_Callback(h,eventdata,handles,varargin) delete(handles.figure1)

%--------------------------------------------------------------------

function varargout=popupmenu1_Callback(h,eventdata,handles, varargin)

val=get(h,'value');

switch val

case1

surf(peaks);

case2

sphere(30);

case3

membrane

case4

[x,y]=meshgrid(-4:.1:4);

r=sqrt(x.^2+y.^2)+eps;

z=sinc(r);

surf(x,y,z)

case5

[x,y]=meshgrid([-1.5:.3:1.5],[-1:0.2:1]);

z=sqrt(4-x.^2/9-y.^2/4);

surf(x,y,z);

case6

t=0:pi/12:3*pi;

r=abs(exp(-t/4).*sin(t));

[x,y,z]=cylinder(r,30);

surf(x,y,z);

end

shading interp

light('Position',[-3-21]);

axis off

%--------------------------------------------------------------------

function varargout=radiobutton1_Callback(h,eventdata,handles, varargin)

set(h,'value',1)

set(handles.radiobutton2,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton4,'value',0)

lighting flat

%--------------------------------------------------------------------

function varargout=radiobutton2_Callback(h,eventdata,handles, varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton4,'value',0)

lighting gouraud

%--------------------------------------------------------------------

function varargout=radiobutton3_Callback(h,eventdata,handles, varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton2,'value',0)

set(handles.radiobutton4,'value',0)

lighting phong

%--------------------------------------------------------------------

function varargout=radiobutton4_Callback(h,eventdata,handles,

varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton3,'value',0)

lighting none

%--------------------------------------------------------------------

function varargout=popupmenu2_Callback(h,eventdata,handles, varargin)

val=get(h,'value');

switch val

case1

colormap(jet)

case2

colormap(hot)

case3

colormap(cool)

case4

colormap(copper)

case5

colormap(pink)

case6

colormap(spring)

case7

colormap(summer)

case8

colormap(autumn)

case9

colormap(winter)

end

%--------------------------------------------------------------------

function varargout=popupmenu3_Callback(h,eventdata,handles, varargin)

val=get(h,'value');

switch val

case1

lighting flat

case2

lighting gouraud

case3

lighting phong

case4

lighting none

end

%--------------------------------------------------------------------

function varargout=popupmenu4_Callback(h,eventdata,handles, varargin)

val=get(h,'value');

switch val

case1

material shiny

case2

material dull

case3

material metal

case4

material default

end

%--------------------------------------------------------------------

function varargout=slider1_Callback(h,eventdata,handles,varargin)

val=get(h,'value');

set(handles.edit1,'string',num2str(val));

lx==val;ly=get(handles.slider2,'value');ly=get(handles.slider3,'value');

light('Position',[x y z]);

%--------------------------------------------------------------------

function varargout=edit1_Callback(h,eventdata,handles,varargin)

str=get(h,'string');

set(handles.slider1,'value',str2num(str));

lx==str2num(str);ly=get(handles.slider2,'value'); ly=get(handles.slider3,'value');

light('Position',[x y z]);

%--------------------------------------------------------------------

function varargout=slider2_Callback(h,eventdata,handles,varargin)

val=get(h,'value');

set(handles.edit2,'string',num2str(val));

lx=get(handles.slider1,'value');lx==val;ly=get(handles.slider3,'value');

light('Position',[x y z]);

%--------------------------------------------------------------------

function varargout=edit2_Callback(h,eventdata,handles,varargin)

str=get(h,'string');

set(handles.slider2,'value',str2num(str));

%--------------------------------------------------------------------

function varargout=slider3_Callback(h,eventdata,handles,varargin)

val=get(h,'value');

set(handles.edit3,'string',num2str(val));

%--------------------------------------------------------------------

function varargout=edit3_Callback(h,eventdata,handles,varargin)

str=get(h,'string');

set(handles.slider3,'value',str2num(str));

*对话框设计:在图形用户界面程序设计中,对话框是重要的信息显示和获取输入数据的用户界面对象。

1、公共对话框:

公共对话框是利用windows资源的对话框,包括文件打开、文件保存、颜色设置、字体设置、打印设置等。

1)文件打开对话框:用于打开文件

uigetfile

uigetfile(‘FilterSpec’)

uigetfile(‘FilterSpec’,’DialogTitle’)

uigetfile(‘FilterSpec’,’DialogTitle’,x,y)

[fname,pname]=uigetfile(…)

2)文件保存对话框:用于保存文件

uiputfile

uiputfile(‘InitFile’)

uiputfile(‘InitFile’,’DialogTitle’)

uiputfile(‘InitFile’,’DialogTitle’,x,y)

[fname,pname]=uiputfile(…)

3)颜色设置对话框:用于图形对象颜色的交互设置

c=uisetcolor(‘h_or_c,’DialogTitle’)

4)字体设置对话框:用于字体属性的交互式设置

uisetfont

uisetfont(h)

uisetfont(S)

uisetfont(h,’DialogTitle’)

uisetfont(S,’DialogTitle’)

S=uisetfont(…)

5)打印设置对话框:用于打印页面的交互式设置

dlg=pagesetupdlg(fig)

pagedlg

pagedlg(fig)

6)打印预览对话框:用于对打印页面进行预览

printpreview

printpreview(f)

7)打印对话框:

printdlg

printdlg(fig)

printdlg(‘-crossplatform’,fig)

printdlg(-‘setup’,fig)

2、MATLAB专用对话框

1)错误信息对话框:用于提示错误信息

errordlg打开默认的错误信息对话框

errordlg(‘errorstring’)打开显示’errorstring’信息的错误信息对话框errordlg(‘errorstring’,’dlgname’)打开显示’errorstring’信息的错误信息对话框,

对话框的标题由‘dlgname’指定

erordlg(‘errorstring’,’dlgname’,’on’)打开显示’errorstring’信息的错误信息对话框,对话框的标题由‘dlgname’指定.如果对话框已存在,’on’参数将对话框显示在最前端。

h=errodlg(…)返回对话框句柄

例:errordlg('输入错误,请重新输入','错误信息')

2)帮助对话框:用于帮助提示信息

helpdlg打开默认的帮助对话框

helpdlg(‘helpstring’)打开显示’errorstring’信息的帮助对话框,

helpdlg(‘helpstring’,’dlgname’)打开显示’errorstring’信息的帮助对话框,对话

框的标题由‘dlgname’指定

h=helpdlg(…)返回对话框句柄

例:helpdlg('矩阵尺寸必须相等','在线帮助')

3)输入对话框:用于输入信息

answer=inputdlg(prompt)打开输入对话框,prompt为单元数组,用于定义输入数据窗口的个数和显示提示信息,answer为用于存储输入数据的单元数组。answer=inputdlg(prompt,title)与上者相同,title确定对话框的标题。answer=inputdlg(prompt,title,lineNo)参数lineNo可以是标量、列矢量或m×2阶矩阵,若为标量,表示每个输入窗口的行数均为lineNo;若为列矢量,则每个输入窗口的行数由列矢量lineNo的每个元素确定;若为矩阵,每个元素对应一个输入窗口,每行的第一列为输入窗口的行数,第二列为输入窗口的宽度。answer=inputdlg(prompt,title,lineNo,de f Ans)参数defans为一个单元数组,存储每个输入数据的默认值,元素个数必须与prompt所定义的输入窗口数相同,所有元素必须是字符串。

answer=inputdlg(prompt,title,lineNo,de f Ans,Sesize)参数resize决定输入对话框的大小能否被调整,可选值为on或off.

例:prompt={'Input Name','Input Age'};

title='Input Name and Age';

lines=[21]';

def={'John Smith','35'};

answer=inputdlg(prompt,title,lines,def);

4)列表选择对话框:用于在多个选项中选择需要的值

[selection,ok]=listdlg(‘Liststring’,S,…)输出参数selection为一个矢量,存储所选择的列表项的索引号,

输入参数为可选项’Liststring’(单元数组),’SelectionMode’(’single’

或’multiple’,’ListSize’([wight,height]),’Name’(对话框标题)等

5)信息提示对话框:用于显示提示信息

msgbox(message)打开信息提示对话框,显示message信息。

msgbox(message,title)title确定对话框标题。

msgbox(message,title,’icon’)icon用于显示图标,可选图标包括:none(无图标)/error/help/warn/custom(用户定义)

msgbox(message,title,’custom’,icondata,iconcmap)当使用用户定义图标时,icondata为定义图标的图像数据,iconcmap为图像的色彩图。

msgbox(…,’creatmode’)选择模式creatmode,选项为:modal,non_modal,和replace。

h=msgbox(…)返回对话框句柄

6)问题提示对话框:用于回答问题的多种选择

button=questdlg(‘qstring’)打开问题提示对话框,有三个按钮,分别为:yes,no 和cancel,’questdlg’确定提示信息。

button=questdlg(‘qstring’,’title’)title确定对话框标题。

button=questdlg(‘qstring’’title’,’default’)当按回车键时,返回default值default 必须是yes,no或cancel之一。

button=questdlg(‘qstring’,’title’,’str1’,’str2’,’default’)打开问题提示对话框,有两个按钮,分别由str1和str2确定,’qstdlg’确定提示信息,default必须是str1或str2之一。

button=questdlg(‘qstring’,’title’,’str1’,’str2’,’str3’,’default’)打开问题提示对话

框,有三个按钮,分别由str1,str2和str3确定,’qstdlg’确定提示信息,default 必须是str1,str2或str3之一。

7)进程条:以图形方式显示运算或处理的进程

h=waitbar(x,’title’)显示以title为标题的进程条,x为进程条的比例长度,其值必须在0到1之间,h为返回的进程条对象的句柄。

waitbar(x,’title’,’creatcancelbtn’,’button_callback’)在进程条上使用creatcancelbtn参数创建一个撤销按钮,在进程中按下撤销按钮将调用button_callback函数。

waitbar(…,property_name,property_value,…)选择其它由prompt_name定义的参数,参数值由prompt_value指定。

例:

h=waitbar(0,'pleas wait...');

for i=1:10000

waitbar(i/10000,h)

end

close(h)

8)警告信息对话框:用于提示警告信息

h=warndlg(‘warningstring’,’dlgname’)打开警告信息对话框,显示warningstring信息,dlgname确定对话框标题,h为返回对话句柄。

MATLAB及在数学建模中的应用

第1讲MATLAB及 在数学建模中的应用 ? MatLab简介及基本运算?常用计算方法 ?应用实例

一、 MatLab简介及基本运算 1.1 MatLab简介 1.2 MatLab界面 1.3 MatLab基本数学运算 1.4 MatLab绘图

1.1 MatLab简介?MATLAB名字由MATrix和 LABoratory 两词组成。20世纪七十年代后期, 美国新墨西哥大学计算机科学系主任Cleve Moler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。

?经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。

?1997年春,MATLAB5.0版问世,紧接着是5.1、5.2、5.3、6.0、6.1、6.5、7.0版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。 ?20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。

?MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性。以下为其几个特色: ①可靠的数值运算和符号计算。在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函 数可使用。 ②强大的绘图功能。 MATLAB可以绘制各种图形,包括二维和三维图形。 ③简单易学的语言体系。 ④为数众多的应用工具箱。

数学建模matlab例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人通过学习自行进行编程独立完成,所有结果都通过上机验证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y =,2x y =,3 x y = ,3x y =,x y =的图象. 4. 画出3 2 3 2)1()1()(x x x f + +-=的图象,并根据图象特点指出函数)(x f 的奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象. 6. 画出3 21+=x y 及其反函数的图象.

练习2 函数极限 1.计算下列函数的极限. (1) x x x 4 cos 1 2 sin 1 lim 4 - + π → . 程序: sym x; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3) 2 2 ) 2 ( sin ln lim x x x - π π → . 程序: sym x; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = -1/8 (4) 2 1 2 lim x x e x →. 程序: x x x sec 3 2 ) cos 1( lim+ π →

matlab在数学建模中的应用

Matlab在数学建模中的应用 数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。在目前用于数学建模的软件中,matlab 强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。 1 Matlab在数学建模中的应用 下面将联系数学建模的几个环节,结合部分实例,介绍matlab 在数学建模中的应用。 1.1 模型准备阶段 模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。 1.1.1 确定变量间关系 例1 已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。

表1 实际投资额、国民生产总值、物价指数的统计表 记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。 赋值: z=[90.9 97.4 113.5 125.7 122.8 133.3 149.3 144.2 166.4 195 229.8 228.7 206.1 257.9 324.1 386.6 423 401.9 474.9 424.5]' x=[596.7 637.7 691.1 756 799 873.4 944 992.7 1077.6 1185.9 1326.4 1434.2 1549.2 1718 1918.3 2163.9 2417.8 2631.6 2954.7 3073]' y=[0.7167 0.7277 0.7436 0.7676 0.7906 0.8254 0.8679 0.9145 0.9601 1 1.0575 1.1508 1.2579 1.3234 1.4005 1.5042 1.6342 1.7842 1.9514 2.0688]' 先观察x与z之间,y与z之间的散点图 plot(x,z,'*') plot(y,z,'*') 由散点图可以看出,投资额和国民生产总值与物价指数都近似呈

matlab数学建模实例

第四周 3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

MATLAB及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.wendangku.net/doc/2c16138359.html,/journal/mos https://www.wendangku.net/doc/2c16138359.html,/10.12677/mos.2015.43008 Study of MATLAB and Its Application in Mathematical Modeling Chuanqi Qin, Ting Wang, Yuanfeng Jin School of Science, Yanbian University, Yanji Jilin Email: yfkim@https://www.wendangku.net/doc/2c16138359.html, Received: Jul. 22nd, 2015; accepted: Aug. 11th, 2015; published: Aug. 18th, 2015 Copyright ? 2015 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.wendangku.net/doc/2c16138359.html,/licenses/by/4.0/ Abstract This article firstly introduces the development and the features of MATLAB software. And then the concept and the process of mathematical modeling are explained. After, the article briefly intro-duces some MATLAB solution methods of mathematical modeling problems, giving several in-stances of some methods. At the last of this article, through a relatively complete example, it fo-cuses on the application of MATLAB in mathematical modeling. It has been found that the applica-tion of MATLAB in mathematical modeling can improve the efficiency and quality of mathematical modeling, enrich the means and methods of mathematical modeling, and play a very important role in the teaching of mathematical modeling course. Keywords MATLAB, Mathematical Modeling, Mathematic Model MATLAB及其在数学建模中的应用 秦川棋,王亭,金元峰 延边大学理学院,吉林延吉 Email: yfkim@https://www.wendangku.net/doc/2c16138359.html, 收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

matlab数学建模实例

第四周3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj()for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769;if (abs(x1)<1.0e-8)x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20;k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1;end x1k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1;end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while(abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

10909-数学建模-应用MATLAB建模的一个例子

应用MATLAB 的一个例子 ——数学也是一门技术 王天顺 整理 本来想用 “数学也是一门技术”作题目,主要是基于两点,一是从数学的应用角度,它的确具备了作为一门技术的特征,这也就是今天我要通过一个例子要表达的;二是咱们在座的大多数都是从事职业教育的老师,不知道我理解得是不是正确,职业教育与普通教育的区别是较为侧重于教授技术,我主观上感觉这个题目和大家的关系更紧密一些。但是,这个题目有点太大了!和领导商量了一下还是换个题目吧。 首先可以证明:数学确是一门技术,比如说要从技术的定义入手,流行的做法是:查查《辞海》,查查相关的如《科学学辞典》和《科技辞典》等等,看看他们是怎样给技术定义的;其次,论述一下数学的确是符合这些定义的。 实际上,我也确实查阅过这些资料,可以说没有问题,一定可以找到证据证明这个论断! 注:“技术”一词的中文解释有两种,一种是以《辞海》为代表的解释,把技术定义为:(1 )泛指根据生产实践经验和自然科学原理而发展成的各种工艺操作方法与技能;(2)除操作技能外, 广义的还包括相应的生产工具和其他物质设备,以及生产的工艺过程或作业程序、方法。另一种是以《科学学辞典》和《科技辞典》为代表的解释,把技术定义为:是为社会生产和人类物质文化生活需要服务的,供人类利用和改造自然的物质手段、智能手段和信息手段的总和。 可见, “技术”一词所包含的内容除了有形的物化形态之外,还包括无形的智能形态方面。无形的智能形态的技术是客观存在的,在某种意义上说,这方面技术的作用并不亚于物化形态的技术,更不能为物化形态技术所取代(背景资料)。因此,有关“技术”的涵义,有人概括为:指的是有形的物化技术和无形的智能技术的总和。 当然,容易想到我们把数学看作一门技术,可能更多的是从技术的无形“智能形态”角度论述的。我想这只是他的一个方面,今天先给各位介绍的是一个例子,展现他的另一个方面,用数学(包括相关的软件)去解决一个实际问题,其过程就像“传统的”、物化形态的技术一样;其次,结合上述例子,探讨有关数学建模及相关培训指导工作的一般原则和步骤,谈一点个人对此项工作的认识;最后,介绍我校的这些年数学建模培训工作的一些具体做法。 一、足球比赛中的吊门问题 1. 问题:只考虑如下的因素:球与球门的距离为a ,守门员与球门的距离为b (假设在调 门过程中,守门员不能移动),球门高h ,守门员最大摸高H ,球出脚的初速度为0v ,与水平方向的夹角为α(称为初射角).针对下列数据求能吊门成功的α,h=2.44m ,H=3.20m ,s m v /300= ,重力加速度g=10m/s 2,针对下列几组数据分别给出具体能吊门成功的相应初射角范围,要求精度在小数点后第4位。 (1) a=6m ,b=1m ; (2) a=10m ,b=3m ; (3) a=20m ,b=5m ; 2. 问题分析 (1) 在不考虑空气阻力的情况下,抛射体的运动轨迹是抛物线:

matlab数学建模实例

第四周 3. function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度( 分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end x3 k 牛顿法: function y=newton(x0)

x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1);

matlab数学建模实例

m a t l a b数学建模实例集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

第四周3. function y=mj() for x0=0::8 x1=x0^*x0^2+*; if (abs(x1)< x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>= x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>= x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0);

k=1; while (abs(x1-x0)>= x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>= x0=s; s=B*x0+G; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a));

基于matlab的数学建模

MATLAB在数学建模中的应用 (张威10322010910级专升本电气一班) 摘要 随着社会和计算机技术的发展,数学科学与计算机技术相结合,在社会各领域发挥着越来越重要的作用,能够方便、高效的解决各种实际问题。在目前用于数学建模的软件中,Matlab强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。Matlab是一款非常好的软件,功能强大,应用面广。从实例出发,论述Matlab在数学建模中的应用,以提高对Matlab软件的认识,提高解决实际问题的能力。本文结合数学建模的几个环节,用一些实例阐述了Matlab在数学建模中的应用。将Matlab用于数学建模可以提高数学建模的效率和质量。丰富数学建模的方法和手段,具有重要的意义。 关键词:Matlab软件,数学建模,最优化 Abstract With the development of society and computer technology,mathematics,science and computer technology in all areas of society is playing an increasingly important role,It can easily and efficiently to solve practical problems.In the currently used mathematical modeling software,Matlab powerful numerical calculations,drawings,and a variety of toolbox functions,can quickly and efficiently solve the mathematical modeling involved in many areas of concern,much of those mathematical modeling all ages.Matlab is a very good software,powerful,wide range of applications.Starting from the example,discussed in Matlab in the application of mathematical modeling to improve understanding of the Matlab software,to improve the ability to solve practical problems.In this paper,several aspects of mathematical modeling with Matlab examples described in the application of mathematical modeling.Mathematical modeling of Matlab for mathematical modeling can improve the efficiency and quality.Extensive mathematical modeling methods and means of great significance. Key Words:MATLAB software,Mathematical modeling,Optimization

数学建模matlab例题参考及练习讲课稿

数学建模m a t l a b例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人 通过学习自行进行编程独立完成,所有结果都通过上机验 证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺 不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y = ,2x y =,3x y =,3x y =,x y =的图象. 4. 画出3232)1()1()(x x x f ++-=的图象,并根据图象特点指出函数)(x f 的 奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象.

6. 画出321+=x y 及其反函数的图象. 练习2 函数极限 1. 计算下列函数的极限. (1)x x x 4cos 12sin 1lim 4-+π→. 程序: sym x ; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x ; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3)22)2(sin ln lim x x x -ππ→. 程序: sym x ; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = x x x sec 3 2 ) cos 1 ( lim + π →

(2)MATLAB应用实例分析

Matlab 应用例题选讲 仅举一些运用MATLAB 的例子,这些问题在数学建模中时常遇到,希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题,并善用这一工具。 常用控制命令: clc :%清屏; clear :%清变量; save :%保存变量; load :%导入变量 一、利用公式直接进行赋值计算 本金P 以每年n 次,每次i%的增值率(n 与i 的乘积为每年增值额的百分比)增加,当增加到r ×P 时所花费的时间T 为:(利用复利计息公式可得到下式) ) 01.01ln(ln )01.01(i n r T i P P r nT += ?+=?(12,5.0,2===n i r ) MATLAB 的表达形式及结果如下: >> r=2;i=0.5;n=12; %变量赋值 >> T=log(r)/(n*log(1+0.01*i)) 计算结果显示为: T = 11.5813 即所花费的时间为T=11.5813 年。 分析:上面的问题是一个利用公式直接进行赋值计算问题,实际中若变量在某个范围变化取很多值时,使用MATLAB ,将倍感方便,轻松得到结果,其绘图功能还能将结果轻松的显示出来,变量之间的变化规律将一目了然。 若r 在[1,9]变化,i 在[0.5,3.5]变化;我们将MATLAB 的表达式作如下改动,结果如图1。 r=1:0.5:9; i=0.5:0.5:3.5; n=12; p=1./(n*log(1+0.01*i)); T=log(r')*p; plot(r,T) xlabel('r') %给x 轴加标题 ylabel('T') %给y 轴加标题 q=ones(1,length(i)); text(7*q-0.2,[T(14,1:5)+0.5,T(14,6)-0.1,T(14,7)-0.9],num2str(i')) r T 图1

相关文档
相关文档 最新文档