MATLAB课程设计可视化(GUI)的线性方程组的Jacobi迭代解法。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华东交通大学
课程设计(论文)任务书
软件学院学院09 软件工程+电气专业 3 班
一、课程设计(论文)题目可视化(GUI)的线性方程组的Jacobi迭代解法
二、课程设计(论文)工作自 2011年6月27日起至2011 年 7月1 日止。

三、课程设计(论文) 地点: 电气学院机房
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)熟练掌握MATLAB语言的基本知识和技能;
(2)熟悉MA TLAB下的GUI程序设计;
(3)熟悉多项式曲线拟合,MA TLAB的绘图功能;
(4)培养分析、解决问题的能力;提高学生的科技论文写作能力。

2.课程设计的任务及要求
1)基本要求:
(1)利用matlab中的GUI设计窗口设计一个界面程序。

其中主界面包含控制背景颜色与图形坐标的菜单;
(2)含有一个按钮控件,它的作用能够对一个文件的数据进行多项式曲线拟合;(3)文件名通过一个编辑控件由用户给定,给定文件内包含要拟合曲线的数据;(4)拟合好的多项式曲线能够在另一个坐标控件中显示;
(5)拟合好的曲线与实际数据曲线用不同的颜色并加各种必要标注在坐标中显示。

2)创新要求:
GUI界面使程序更加友好、美观和合理
3)课程设计论文编写要求
(1)要按照课程设计模板的规格书写课程设计论文
(2)论文包括目录、正文、心得体会、参考文献等
(3)课程设计论文用B5纸统一打印,装订按学校的统一要求完成
4)答辩与评分标准:
(1)完成原理分析:20分;
(2)完成设计过程:40分;
(3)完成调试:20分;
(4)回答问题:20分;
5)参考文献:
(1)刘卫国.MATLAB程序设计与应用(第二版). 北京:高等教育出版社,2008.
(2)刘志刚.电力电子学.北京:清华大学出版社、北京交通大学出版社,2004.
(3)李传琦. 电力电子技术计算机仿真实验.电子工业出版社,2006.
6)课程设计进度安排
内容天数地点
构思及收集资料2图书馆
编程设计与调试1实验室
撰写论文2图书馆、实验室
学生签名:
2011 年月日
课程设计(论文)评审意见
(1)完成原理分析(20分):优()、良()、中()、一般()、差();
(2)设计分析(20分):优()、良()、中()、一般()、差();
(3)完成调试(20分):优()、良()、中()、一般()、差();
(4)翻译能力(20分):优()、良()、中()、一般()、差();
(5)回答问题(20分):优()、良()、中()、一般()、差();
(6)格式规范性及考勤是否降等级:是()、否()
(7) 总评分数优()、良()、中()、一般()、差();
评阅人:职称:讲师
2011年月日
Matlab应用课程设计
目录
课程设计任务书 (1)
一、Matlab 软件简介 (4)
1.1 MATLAB产生的历史背景 (4)
1.2 MATLAB的语言特点和开发环境 (4)
1.3 基本语法 (5)
二、URI简介 (8)
2.1特点 (8)
2.2组成部分 (8)
2.3实现方法 (10)
三、设计题目 (10)
四、设计内容 (10)
4.1Jacobi迭代法基本原理 (10)
4.2实验内容 (11)
4.3实验结果 (19)
五、课程设计心得 (21)
六、参考文献 (21)
一、Matlab 软件简介
MATLAB是美国MathWorks公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。

它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到了广泛应用。

它不仅是一个在各类工程设计中便于使用的训‘算工具,而且也是一个在数学、数值分析和工程计算等课程教学中的优秀的教学工具,在世界各地的高等院校中十分流行,在各类工业应用中更有不俗的表现。

MATLAB可以在几乎所有的PC机和大型计算机上运行,适用于Windows、UNIX等多种系统平台。

1.1 MATLAB产生的历史背景
MATLAB名称是由两个英文单词Ma~ix和Laboratory的前二个字母组成。

20世纪70年代后期,美国新墨西哥大学计算机系主任Cleve.Moler教授为了便于教学,减轻学生编写Fortran程序的负担,为两个矩阵运算软件包Linpack和Eispack编写了接口程序,这也许就算MATLAB的第一个版本。

1984年,在JackLittle(也称JohnLittle)的建议推动下,由Little、Moler、SteveBangert 三人合作,成立rMathWorks公司,同时把MATLAB正式推向市场。

从那时开始,MATLAB的源代码采用C语言编写,除加强了原有的数值计算能力外,还增加了数据图形的可视化功能。

1993年,MathWorks公司推出了MATLAB的4.0版本,系统平台由DOS改为Windows,推出了功能强大的、可视化的、交互环境的用于模拟非线性动态系统的工具Simulink,第一次成功开发出了符号计算工具包Symbolic Math Toolbox 1.0,为MATLAB进行实时数据分析、处理和硬件开发而推出了与外部直接进行数据交换的组件,为MATLAB能融科学计算、图形可视、文字处理于一体而制作了Notebook,实现了MATLAB与大型文字处理软件Word 的成功对接。

至此,MathWorks使MATLAB成为国际控制界公认的标准计算软件。

1997年,MathWorks公司推出了MATLAB的5.0版本,紧接着产生了5.1、5.2版本,至1999年MATLAB发展到5.3版本。

MATLAB拥有了更丰富的数据类型和结构,更好的面向对象的快速精美的图形界面,更多的数学和数据分析资源,MATLAB工具也达到了25个,几乎涵盖了整个科学技术运算领域。

在大部分大学里,应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教材都把MATLAB作为必不可少的内容。

在国际学术界,MATLAB被确认为最准确可靠的科学计算标准软件,在许多国际一流的学术刊物上都可以看到MATLAB在各个领域里的应用。

MATLAB当前推出的最新版本是7.0版(R14),本书无特殊注明均指7.0版。

1.2 MATLAB的语言特点和开发环境
MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。

被称为第四代编程语言的MATLAB最大的特点就是简洁开放的程序代码和直观实用的开发环境。

具体地说MATLAB主要有以下特点:
(1)库函数资源丰富
数百种库函数大大减轻了用户子程序的编写工作量,也避免了一些不必要的错误,因而用户也不必担心程序的可靠性问题。

(2)语言精炼,代码灵活
MATLAB的编程语言符合人们的思维习惯,对代码的书写也没有特别严格的控制,语言精炼,程序的亢余度非常小。

(3)运算符多而灵活
MATLAB的内核是用c语言编写的,它为用户提供了和C语言一样多的运算符,用户运用这些运算符可以使程序更加简炼。

(4)面向对象,控制功能优良
MATLAB在5.x各版本中优化了数据结构,使得程序的结构化控制更精良,面向对象的功能更加友善。

特别是当前的7.0版,在可视化编程方面比以前的版本又有了更大的提高,使界面编程更方便、自由。

(5)程序设计自由
MATLAB7.0版支持长变量名达到63个字符,用户可以不对矩阵进行预定义就使用,变量和数组的应用也有了很大的扩展,这为用户编写程序提供了更大的自由度,使编程更加简单、方便。

(6)图形功能强大
在很多程序语言中,绘制图形是一件很麻烦的事情。

但在MATLAB中,只需调用相应的绘图函数即可,既方便又迅速。

随着硬件的发展和MATLAB7.0推出,MATLAB的图形功能更好,可视化编程能力得到更进一步的提高。

(7)程序的兼容性好
MATLAB可以在各种PC机、大型计算机和各种操作系统上运行。

(8)源代码开放
MATLAB的最重要的特点是源代码的开放性,除了内部函数,所有的MATLAB 核心文件和工具箱文件都完全开放,都可渎可改。

用户对源文件修改就可以生成适合自己的源代码文件。

(9)形形色色的工具箱
凡有工具箱的软件大都分为两大部分,就是核心部分和形形色色的工具箱。

MATLAB有数百个核心内部函数,数十个形形色色的工具箱。

工具箱大致可以分为两大类,——类是学科性工具箱,另一类是功能性工具箱。

学科性工具箱大都涵盖了本学科所有的已有的基本概念和基本运算,大都十分专业。

如符号数学工具箱,简直就是一个高等数学、工程数学解题器。

极限、导数、微分、积分、级数运算与展开、微分方程求解、Laplace变换等应有尽有。

还有控制系统、信号处理、模糊逻辑、神经网络、小波分析、统计;优化、金融预测等工具箱,无一不是非常优秀的运算工具。

这些工具箱都可以添加自己根据需要编写的函数,用户可以不断更新自己的工具箱,使之更适合于自己的研究和计算
1.3 基本语法
1.3.1变量
1、变量的命名:变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。

2、一些特殊的变量:
ans:用于结果的缺省变量名
i、j:虚数单位
pi:圆周率
realmin:最小正实数
realmax:最大正实数
1.3.2简单的数学运算
1、常用的数学运算符:+,—,*(乘),/(左除),\(右除),^(幂)在运算式中,MATLAB通常不需要考虑空格;多条命令可以放在一行中,它们之间需要用分号隔开;逗号告诉MATLAB显示结果,而分号则禁止结果显示。

2、常用数学函数:abs,sin,cos,tan,sqrt,exp,imag,real, rem,
1.3.3流程控制语句
1、if语句
基本格式:
if 逻辑表达式
执行语句
End
其执行过程为:当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。

2、while循环语句
基本格式:
while 表达式
循环体
End
其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。

4、switch语句
基本格式:
switch 表达式(%可以是标量或字符串)
case 值1
语句1
case 值2
语句2
….
otherwise
语句3
End
其执行过程为:当表达式的值等于表达式1的值时,执行语句组1,当表达
式的值等于表达式2的值时,执行语句组2,…,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n。

当任意一个分支的语句执行完后,直接执行switch语句的下一句。

5、for语句
基本格式:
for 循环变量=表达式1:表达式2:表达式3
循环体语句
end
其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。

步长为1时,表达式2可以省略。

执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。

1.3.4特殊矩阵:
常用的产生通用特殊矩阵的函数有:
zeros:产生全0矩阵(零矩阵)。

ones:产生全1矩阵(幺矩阵)。

eye:产生单位矩阵。

rand:产生0~1间均匀分布的随机矩阵。

randn:产生均值为0,方差为1的标准正态分布随机矩阵。

1.3.5函数文件
1、函数文件的基本结构
函数文件由function语句引导,其基本结构为:
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
其中以function开头的一行为引导行,表示该M文件是一个函数文件。

函数名的命名规则与变量名相同。

输入形参为函数的输入参数,输出形参为函数的输出参数。

当输出形参多于一个时,则应该用方括号括起来。

2、函数调用
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。

函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。

1.3.6二维数据曲线图
1绘制单根二维曲线
plot函数的基本调用格式为:
plot(x,y)
其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。

2设置曲线样式
MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标
记符号,它们可以组合使用。

例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。

当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。

要设置曲线样式可以在plot函数中加绘图选项,其调用格式为:
plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)
3 图形标注与坐标控制
有关图形标注函数的调用格式为:
title( ‘图形名称’)
xlabel(‘x轴说明’)
ylabel(‘y轴说明’)
text(‘x,y,图形说明’)
二、GUI简介
如Windows是以”wintel标准“方式操作的,因为你可以用鼠标来点击按钮来进行操作,很直观。

而DOS就不具备GUI,所以他只能输入命令。

DOS 的这种界面叫CLI (Command line User Interface ) 命令行模式的人机接口。

GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。

GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。

这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。

GUI 即人机交互图形化用户界面设计。

纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早已意识到 GUI 在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事 GUI 的研究与设计,同业间也成立了若干机构,以互相交流 GUI 设计理论与经验为目的。

随着中国 IT 产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。

2.1特点
GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。

而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。

2.2组成部分
●桌面
在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。

在桌面上由于可以重叠显示窗口,因此可以实现多任务化。

一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。

桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。

比如在微软公司的Windows XP系统中,各种用户的桌面内容实际保存在系统盘(默认为C盘):\Documents and Settings\[用户名]\桌面文件夹里。

墙纸,即桌面背景。

可以设置为各种图片和各种附件,成为视觉美观的重要因素之一。

●视窗
应用程序为使用数据而在图形用户界面中设置的基本单元。

应用程序和数据在窗口内实现一体化。

在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。

通常在窗口四周设有菜单、图标,数据放在中央。

在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。

●单一文件界面
在窗口中,一个数据在一个窗口内完成的方式。

在这种情况下,数据和显示窗口的数量是一样的。

若要在其他应用程序的窗口使用数据,将相应生成新的窗口。

因此窗口数量多,管理复杂。

●多文件界面
在一个窗口之内进行多个数据管理的方式。

这种情况下,窗口的管理简单化,但是操作变为双重管理。

●标签
多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。

上述中,多文件界面主要是微软视窗系统采用。

而在其他环境中,通常多是单文件界面,所以无所谓单一/多文件界面的称呼问题。

●菜单
将系统可以执行的命令以阶层的方式显示出来的一个界面。

一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。

重要程度一般是从左到右,越往右重要度越低。

命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。

一般使用鼠标的第一按钮进行操作。

即时菜单(又称功能表)
与应用程序准备好的层次菜单不同,在菜单栏以外的地方,通过鼠标的第二按钮调出的菜单称为“即时菜单”。

根据调出位置的不同,菜单内容即时变化,列出所指示的对象目前可以进行的操作。

●图标
显示在管理数据的应用程序中的数据,或者显示应用程序本身。

数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。

通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。

另外,点击数据的图标,一般可以之间完成启动相关应
用程序以后再显示数据本身这两个步骤的工作。

应用程序的图标只能用于启动应用程序。

按钮
菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。

应用程序中的按钮,通常可以代替菜单。

一些使用程度高的命令,不必通过菜单一层层翻动才能调出,极大提高了工作效率。

但是,各种用户使用的命令频率是不一样的,因此这种配置一般都是可以由用户自定义编辑。

2.3实现方法
2.3.1针对特定的图形设备输出接口,自行开发相关的功能函数。

2.3.2购买针对特定嵌入式系统的图形中间软件包。

2.3.3采用源码开放的嵌入式GUI系统。

2.3.4使用独立软件开发商提供的嵌入式GUI产品。

三、设计题目
可视化(GUI)的线性方程组的Jacobi迭代解法。

四、设计内容
4.1.1Jacobi迭代法基本原理
≠0(i=1,2,…,n),对于线性方程组Ax=b,如果A为非奇异方阵,记a
ii
则可将A分解为A=D-L-U,其中D为对角阵,其元素为A的对角元素,L与U为A的下三角阵和上三角阵:
于是Ax=b转化为:
x=D-1(L+U)x+D-1b
与之对应的迭代公式为:
x(k+1)=D-1(L+U)x(k)+D-1b
这就是Jacobi迭代公式。

如果序列{ x(k+1)}收敛于x,则x必是方程Ax=b 的解。

Jacobi迭代法的MATLAB函数文件Jacobi.m如下:
function [y,n] = jacobi(A,b,x0,eps)
if nargin==3
eps=1.0e-6;
elseif nargin<3
error
return
end
D=diag(diag(A));
L=-tril(A,-1);
U=-tril(A,1);
B=D\(L+U);
f=D\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=eps
x0=y;
y=B*x0+f;
n=n+1;
end
4.1.2用Jacobi迭代法求解下列线性方程组。

设迭代初值为0,迭代精度为10-6。

10x
1-x
2
=9
-x
1+10x
2
-2x
3
=7
-2x
2+10x
3
=6
在命令中调用函数文件Jacobi.m,命令如下:
A=[10,-1,0;-1,10,-2;0,-2,10];
B=[9,7,6]’;
[x,n]=jacobi(A,b,[0,0,0]’,1.0e-6)
4.2实验内容
4.2.1启动Matlab并进入GUIDE环境:在Command Window下输入“guide”,进入GUIDE环境。

出现如下图所示的界面。

这里Matlab提供了一个新建空白界面及三个样本界面。

进入后,Matlab就新建了一个fig文件(默认名是untitled.fig),同时得到如下的编辑窗口:
4.2.2.1首先,在用户界面编辑窗口添加2个命令按钮(显示是OK的用个PUSH BUTTON),再如下图所示添加3个静态文本框(Static Text)、4个编辑文本框(Edit Text)
4.2.2.2其次,按下表设置每个控件的属性值(具体操作是:右击要设置属性的控件——property inspector 命令——在弹出的属性窗口中找到相应的属性名称——将该属性的值修改成自己需要的值),以上所示是我修改过的。

控件名s 属性属性修改值
PushButton1 FontSize 16
String ok
Tag Pushbutton1
PushButton2 FontSize 16
String 退出
Tag PushButton2
4.2.3.1最后,添加程序(在添加程序前,先将文件保存,比如以untitled.m
为文件名保存),方法是:单击菜单命令view——M-file Editor,此时,得到
下面的程序:
function varargout = untitled(varargin)
%UNTITLED M-file for untitled.fig
% UNTITLED, by itself, creates a new UNTITLED or raises the existing
% singleton*.
%
% H = UNTITLED returns the handle to a new UNTITLED or the handle to
% the existing singleton*.
%
% UNTITLED('Property','Value',...) creates a new UNTITLED using the
% given property value pairs. Unrecognized properties are passed via
% varargin to untitled_OpeningFcn. This calling syntax produces a
% warning when there is an existing singleton*.
%
% UNTITLED('CALLBACK') and UNTITLED('CALLBACK',hObject,...) call the % local function named CALLBACK in UNTITLED.M with the given input
% arguments.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help untitled
% Last Modified by GUIDE v2.5 27-Jun-2011 02:59:38
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled_OpeningFcn, ...
'gui_OutputFcn', @untitled_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before untitled is made visible.
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% varargin unrecognized PropertyName/PropertyValue pairs from the % command line (see V ARARGIN)
% Choose default command line output for untitled
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes untitled wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = untitled_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see V ARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit4_Callback(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit4 as text
% str2double(get(hObject,'String')) returns contents of edit4 as a double
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
4.2.3.2下面真正添加自己的程序,最后成的程序如下:自己添加的程序用红色表示。

function varargout = untitled(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled_OpeningFcn, ...
'gui_OutputFcn', @untitled_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function pushbutton1_Callback(hObject, eventdata, handles)
A=str2num(get(handles.edit1,'String'));
b=str2num(get(handles.edit2,'String'));
[x,n] = jacobi(A,b,[0,0,0]',1.0e-6)
set(handles.edit3,'String',x);
set(handles.edit4,'String',n);
function pushbutton2_Callback(hObject, eventdata, handles)
ss=questdlg('你真的要退出吗?','退出信息窗口!','不,我还想看看!','是的,我要退出!','是的,我要退出!');
switch ss
case '是的,我要退出!'
delete(handles.figure1);
end
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit3_Callback(hObject, eventdata, handles)
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit4_Callback(hObject, eventdata, handles)
function edit4_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function [y,n] = jacobi(A,b,x0,eps)
if nargin==3
eps=1.0e-6;
elseif nargin<3
error
return
end
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=D\(L+U);
f=D\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=eps
x0=y;
y=B*x0+f;
n=n+1;
end
4.3实验结果:
另外举一个例子:
添加一个退出功能:
华东交通大学课程设计纸
五、课程设计心得
通过此次课程设计,提高了对matlab的熟悉度,使用起来更加娴熟,更得心应手。

在本次实践中,会遇到各种各样的问题,问题多到都不想再坚持做下去。

但是当我最终在不断的查资料,一次次的求助于身边的同学后,将问题逐一解决了后,那不能言说的喜悦侵袭了我。

这不仅仅是知识上的积累,也锻炼了解决问题的能力。

首先,我巩固了可视化(GUI)方面的知识,可以将程序变为可视化程序。

其次,我学会使用求解线性方程组。

在这两个过程中,我解决了以下几个问题:1、空间使用问题,知道了控件的名字须与程序中完全一致;2、学会使用调用函数;3、了解Jacobi迭代法的用法等。

总之,自己还有很多需要改正的地方,希望在以后的学习当中,能够做的更好。

六、参考文献
[1] 谭浩强著.C程序设计(第二版).北京:清华大学出版社,1999
[2] 吴传生主编.经济数学.线性代数(第二版).北京高等教育出版社,2009
- 21 -。

相关文档
最新文档