基于MATLAB的数值分析课程可视化平台设计毕业论文.doc_第1页
基于MATLAB的数值分析课程可视化平台设计毕业论文.doc_第2页
基于MATLAB的数值分析课程可视化平台设计毕业论文.doc_第3页
基于MATLAB的数值分析课程可视化平台设计毕业论文.doc_第4页
基于MATLAB的数值分析课程可视化平台设计毕业论文.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业生论文本科毕业生论文 基于基于 MATLABMATLAB 的的 数值分析数值分析 课程可视化平台设计课程可视化平台设计 The Numerical Analysis Course Visualization Platform Based on MATLAB Software 摘 要 本文利用 MATLAB 的 GUIDE 工具 设计制作基于 MATLAB 的 数值分析 课 程的可视化平台 论文首先分析了 MATLAB 中的 GUIDE 工具箱 包括它的组成部分 所支持的组件及它的编程方式 使大家了解如何利用该工具制作图形化窗口 其次介 绍了平台开发的 MVC 架构 及具体的成员说明 M 数据模型 V 可视化窗口 C 数 据控制 并以数值分析中的插值算法为例 详细说明了平台的制作过程 数据模型说 明 窗口设计 控制代码分析 函数调用和运行测试 第三部分对平台中涉及的 数 值分析 课程算法进行了介绍 且对 数值分析 课程中的部分算法进行了分析 同 时举例说明了自定义函数的使用方式和平台设计难点等 最后总体说明了该可视化平 台的开发思路 在开发过程中遇到的问题与难点以及该平台最后的设计成果与意义 关键词 数值分析 课程 MATLAB GUI 可视化平台 自定义函数 Abstract In this paper GUIDE in MATLAB software is used to design the visualization platform about Numerical Analysis course The first I analyzed the GUIDE tool program components and its program method so we could know how to use these tools to create a window program Then I introduced the MVC architecture platform and specific members of the explanation which includes M data model V visualization window C data control after that I gave an example about numerical analysis of the interpolation algorithm and explained the platform s production process which includes the data model description window design control code analysis function call and run tests The third I described a simple introduction on Numerical Analysis of Operators course algorithm in the platform Meanwhile some examples of how to use the self built functions and difficults to create the platform are analyzed Finally I showed the development ideas the significants of the visualization platform and some difficulties which I met in this work Keywords Numerical Analysis MATLAB GUI Visualization Platform Function 目 录 绪 论 1 1 1 背景和意义 1 1 2 主要方法和成果 1 1 3 结构安排 1 第 2 章 MATLAB 中创建图形用户接口 3 2 1 GUI 开发方法简介 3 2 2 GUIDE 支持的组件类型 4 2 3 GUIDE 及其组成部分 5 2 3 1 界面设计编辑器 5 2 3 2 设置组件属性 属性检查器 8 2 3 3 观察对象继承表 对象浏览器 8 2 3 4 创建菜单 菜单编辑器 8 2 4 使用 GUIDE 控制 GUI 9 2 5 M 文件以及 GUI 数据管理 10 第 3 章 可视化平台设计 12 3 1 平台开发 12 3 1 1 M 数据模型 12 3 1 1 V 可视化窗口 13 3 1 3 C 数据控制 14 3 1 5 部分截图 16 3 2 平台分析 16 第 4 章 数值分析算法函数 18 4 1 插值 18 4 1 1 算法分析 18 4 1 2 举例说明 19 4 1 2 算法小结 20 4 2 拟合 20 4 2 1 算法分析 20 4 2 2 举例说明 21 4 2 2 算法小结 22 4 3 数值积分 22 4 3 1 算法分析 23 4 3 2 举例说明 24 4 3 3 算法小结 25 4 4 数值微分 25 4 4 1 算法分析 25 4 4 2 举例说明 26 4 4 3 算法小结 26 4 5 解线性方程组的直接法 26 4 5 1 算法分析 27 4 5 2 举例说明 29 4 5 3 算法小结 29 4 6 解线性方程组的迭代法 30 4 6 1 算法分析 30 4 6 2 举例说明 31 4 6 3 算法小结 32 4 7 非线性方程 组 的求解 32 4 7 1 算法分析 32 4 7 2 举例说明 33 4 7 3 算法小结 34 4 8 常微分方程组的数值解 35 4 8 1 算法分析 35 4 8 2 举例说明 37 4 8 3 算法小结 38 结 论 39 参考文献 41 附 录 42 绪 论 1 1 背景和意义 随着计算机普及网络的推广 数字化教学开始步入校园 由于 MATLAB Matrix Laboratory 方便的使用 强大的计算功能 图形的支持等优点 被教育工作者甚至是 一些高科技的研发人员所青睐 同样在数学教育的数字化建设中 由于其得天独厚的 优势 使之成为了一块重要的基石 MATLAB 软件可以进行非常强大的数值计算 数 据分析 数据可视化等 用其自带的 GUI Graphical User Interfac 开发工具甚至可以 开发一些专业的窗口程序 1 建设学校的数字化在线教育平台 除了网站等相关设施的建设外 更离不开教学 方式的升级与革新 通过对 数值分析 课程算法的归纳总结 结合 MATLAB 工具 实现算法 设计和制作关于该课程的图形化窗口界面程序 可以更直观的帮助学生理 解课本上的例题 从而提高学习质量 1 2 主要方法和成果 本文通过学习 数值分析 课本中的算法 将其中的数学实验内容进行归纳 总 结 并把各章节的算法放到一起分析研究 然后利用 MATLAB 工具 实现 数值分 析 课程中的算法 并将这些算法制作成自定义函数 为以后的函数调用提供方便 最后利用 MATLAB 的 GUI 制作一个基于 数值分析 课程算法的可视化平台 调用 实现自定义函数 这样不仅可以使自定义函数更加方便的使用 同时可以直观的看到 数值分析中的算法所得出的结果 帮助教学和学习 论文最后做成了几十个自定义函数和几个图形化窗口 将 数值分析 课本中每 章的主要算法都包含其中 而且基本上都采用了图形的表现形式 使学习过程中更直 观和更方便 1 3 结构安排 首先根据实际问题介绍论文研究的背景和意义 包括 MATLAB 软件 MVC 开发 模式 数值分析 课程和数学实验 其次介绍了在 数值分析 课程教学实验中的主 要软件 MATLAB 如何创建图形化窗口 然后以插值算法为例 详细说明了开发平台 的过程 然后分析说明了 数值分析 课程中各节算法 详细分析了算法的实现 再 用自定义函数与可视化平台运算课本中的例题 说明自定义函数的使用方法和可视化 平台的效果和意义 并在最后介绍了该节算法在设计中遇到的问题与难点 第 2 章 MATLAB 中创建图形用户接口 本章介绍如何利用 MATLAB 中的 GUI 来创建数值分析计算器图形用户界面 首 先对 GUI 的基本概念作简单的介绍 然后说明 GUI 开发环境及其组成部分的用途和 使用方法 2 1 GUI 开发方法简介 通常在开发一个实际的应用程序时都会尽量做到界面友好 最常用的方法就是使 用图形界面 提供图形用户界面的应用程序能够使用户的学习和使用更为方便容易 用户不需要知道命令是怎样执行的 只要通过与界面交互就可以使指定的行为得以正 确执行 2 在 MATLAB 中 图形用户界面是一种包含多种对象的图形窗口 用户必须对每 一个对象进行界面布局和编程 从而使用户激活 GUI 每个对象时都能够执行相应的行 为 另外 用户必须保存和发布所创建的 GUI 使得 GUI 能够真正地得到应用 MATLAB 为用户开发图形界面提供了一个方便高效的集成环境 MATLAB 图形 用户界面开发环境 GUIDE 1 上述所有的工作都能够使用 GUIDE 方便地实现 GUI 界面保存在一个 FIG 资源文件中 同时还能够生产包含 GUI 初始化和组件界面布局控 制代码的 M 文件 这个 M 文件为实现回调函数提供了一个参考的框架 虽然使用用 户自己编写的 包含 GUI 所有发布命令的 M 文件也能够实现一个 GUI 但是使用 GUIDE 执行效率更高 使用 GUIDE 不但能够交互式地进行组件界面布局 而且能够 生成两个用来保存和发布 GUI 的文件 2 1 FIG 文件 该文件包括 GUI 图形窗口及其所有后裔的完全描述 包括所有对象 的属性值 FIG 文件包含序列化的图形窗口对象 在用户打开 GUI 时 MATLAB 能够 通过读取 FIG 文件重新构造图形窗口及其所有后裔 所有对象的属性都被设置为图形 窗口创建时保存的属性 可以使用 open openfig 和 hgload 命令来打开一个后缀为 fig 的文件 1 2 M 文件 该文件包括 GUI 设计 控制函数以及定义为子函数的用户控制回调 函数 主要用于控制 GUI 展开时的各种特征 这里将 GUI 的 M 文件称为应用程序 M 文件 应用程序 M 文件使用 openfig 命令来显示 GUI 应用程序 M 文件并不包括用户 界面设计的任何代码 这些代码将完全由 FIG 文件保存 GUIDE 可以根据用户 GUI 的版面设计过程直接自动生成 M 文件框架 这样就简 化了 GUI 应用程序的创建工作 用户可以直接使用这个框架来编写自己的函数代码 这样的编写方法具有以下优点 1 应用程序 M 文件已经包含实现一些有用的函数来编写代码 无需用户自行编 写 可以使用该 M 文件生成的有效方法来管理图形对象句柄并执行回调函数子程 序 提供管理全局数据的途径 文件支持自动插入回调函数原型 确保当前 GUI 与未来发布的兼容性 用户也可以选择由 GUIDE 生成 FIG 文件 自己编写应用程序 M 文件的 GUI 创建 方式 编写 M 文件时要注意 应用程序 M 文件中不能包含用户控件创建命令 所有 的界面设计信息都保存在由界面设计编辑器生成的 FIG 文件中 实现一个 GUI 主要包括以下两项工作 GUI 界面设计和 GUI 组件编程 整个 GUI 的实现过程可以分为以下几步 通过设置 GUIDE 应用程序的选项来进行 GUIDE 组态 使用界面设计编辑器进行 GUI 界面设计 理解应用程序 M 文件中所使用的编程技术 编写用户 GUI 组件行为响应控制 即回调函数 代码 2 2 GUIDE 支持的组件类型 界面设计编辑器组件平台中包含所有能够在 GUI 中使用的用户界面控件 这些控 件都属于 MATLAB 的用户控件对象 uicontrol 可以通过 Callback 属性来进行回调 函数编程 下面将简单介绍各种控件的概念和特点 3 按钮 通过鼠标点击按钮可以实现某种行为 按钮按下和弹起等 并调用相应 的回调子函数 拴牢按钮 点击该按钮将使按钮的外观保持陷下状态 同时调用相应的回调函 数 再次点击该按钮将使按钮弹起 同样也要调用回调函数 拴牢按钮的回调函数首 先要对按钮的状态进行查询 然后才能决定相应的行为 单选按钮 单选按钮通常以组为单位 一组单选按钮之间是一种互相排斥的关 系 也就是说任何时候一组单选按钮中只能有一个有效 复选框 复选框为用户提供一些可以独立选择的选项进行设置程序模式 例如 显示工具条与否以及生成回调函数原型与否等等 编辑框 编辑框是控制用户编辑或修改字符串的文本域 其中 string 属性包含 用户输入的文本信息 静态文本 静态文本通常作为其他控件的标签使用 用户不能采用交互方式修 改静态文本或调用相应的回调函数 滚动条 使用户能够通过移动滚动条来改变指定范围内的数值输入 滚动条的 位置代表用户输入的数值 组合框 组合框是图形窗口中的一个封闭区域 它把相关的控件 例如一组单 选按钮 组合在一起 使得用户界面更容易理解 列表框 列表框显示由其 String 属性定义的一系列列表项并使用户能够选择其 中的一项或多项 弹出式菜单 弹出式菜单将打开并显示一个由其 String 属性定义的选项列表 GUI 中可以存在一个或多个以上的 GUI 组件 使用时要注意保证各个组件的名称 或属性有所不同 2 3 GUIDE 及其组成部分 GUIDE 提供一个界面设计工具集实现图形用户界面的创建工作 这些工具包括 2 界面设计编辑器 添加并排列图形窗口中的组件对象 属性查看器 检查并设置组件的属性值 对象浏览器 观察此次 MATLAB 运行过程中图形对象的句柄继承关系表 菜单编辑器 创建窗口菜单和文本菜单 以上这些工具通过界面设计编辑器的相应菜单进行调用 使用 guide 命令来启动 界面设计编辑器 Guide 界面设计编辑器的外观如图 2 1 所示 图 2 1 界面设计图 2 2 添加按钮 2 3 1 界面设计编辑器 界面设计编辑器使用户能够从组件面板中选择 GUI 组件并将它们排列在图形窗口 中 界面设计编辑器由四个部分组成 组件面板 工具栏 菜单栏和界面区域 组件 面板包含用户界面可获得的所有组件 用户控件对象 工具栏和菜单栏可以用来启动 其他界面设计工具 例如菜单编辑器 界面区域实际上就是激活后的 GUI 图形窗口 1 组件面板 在 GUI 界面中放置组件的方法和步骤是这样的 首先点击组件面板的相应按钮 选择用户希望放置的组件类型 光标变为十字形后使用十字形光标的中心点来确定组 件右上角的位置 或者通过在界面区域内点击并拖动鼠标来确定组件的大小 图 2 2 给出了一个添加组件的示例 3 GUI 组件布置完成后 用户可以使用激活按钮或选择 Tools 菜单的 ActivateFigure 选项来观察 GUIDE 的设计结果 激活图形窗口将发生以下事件 首先保存 FIG 文件 和 M 文件 如果用户尚未保存该设计结果 GUIDE 将打开保存对话框使用户选择将 要创建的 M 文件名 然后 GUIDE 保存与 M 文件同名的 FIG 文件 扩展名为 fig 如 果存在一个同名的 M 文件 GUIDE 将会显示一个提示对话框 如果用户选择提示对 话框的 Replace 按钮 原来的 M 文件将被替换 如果选择 Append 则 GUIDE 将向原 有的 M 文件中插入未保存的新组建回调函数并根据应用程序选项对话框设置的变化来 修改原有代码 2 文本菜单 使用界面设计编辑器进行界面设计时 可以使用鼠标左键来选择一个对象 然后 点击右键来显示与所选对象相连的文本菜单 图 2 3 表示了一个与图形窗口对象联系 在一起的文本菜单 所有已定义的回调函数都列举在该菜单的下方 图 2 4 描述了一个与按钮相联系的文本菜单 同样 所有已定义的回调函数都列 举在该菜单的下方 图 2 3 与图形窗口文本菜单 图 2 4 按钮相联系的文本菜单 3 排列工具 用户可以在界面区域内通过选择并拖动任意组件或组件群进行组件排列 另外 界面设计编辑器还提供一些更为精确的组件排列方法 2 排列工具 排列并分布组件群 栅格和标尺 在网格内使用可选的标线来排列组件 指引线 指定任意位置的水平和竖直标线 拉前退后 控制组件的前后顺序 排列工具使用户能够根据其他组件的位置调整被选择物体的间隔或放置某个组件 上述的排列方法可以通过排列工具栏获得 当用户按下 Apply 按钮时 指定的排列操 作将应用于所有被选择的组件 图 2 5 显示了排列工具栏的外观 图 2 5 排列工具栏图 2 6 排列按钮 排列工具提供两种类型的排列操作 Align 按照一个单参考线来排列所有被选择的组件 Distribute 根据组件间的关系进行所有被选组件的统一放置 这两种排列操作都能够在水平和竖直两个方向上使用 最好使用两个步骤各自独 立地完成水平和竖直方向上的排列工整 4 网格和标线 界面区域可以使用网格和标线辅助完成组件设计工作 用户可以将网格线的间隔 设置在 10 到 200 个像素之间 缺省情况下以 50 个像素为间隔 如果用户选择了 snap to grid 选项 那么对于任何一个在网格线周围 9 像素范围内移动或重画的对象 系统 都会自动将该对象放置在该网格线上 无论网格是否可见 snap to line 选项都是有效 的 网格和标线对话框如图 2 7 所示 图 2 7 网格标线图 2 8 属性检查器 该对话框可以完成以下工作 1 控制标线 网格和指引线的可见与否 2 设置网格间距 3 使能 snap to line 界面设计编辑器有水平和竖直两种指引线 当用户希望在界面设计编辑器的任意 位置建立换一个组件排列参考标准时 指引线将非常有用 点击标线的左边或顶端并 将其拖放到界面区域中所需位置处就会生成一条指引线 界面设计编辑器提供四种控制交叠对象前后关系的操作 4 放到最前 将被选物体放置到未选中对象的前面 可以通过文本菜单或快 捷键 Ctrl F 来实现 5 放到最后 将被选物体放置到未选中对象的后面 可以通过文本菜单或快 捷键 Ctrl B 来实现 6 向前移动 将被选物体向前移动一级 也就是说将被选物体放置到与该对 象相连的高一级对象的前面 可以从 Layout 菜单中获得该操作 7 向后移动 将被选物体向后移动一级 也就是说将被选物体放置到与该对 象相连的低一级对象的后面 可以从 Layout 菜单中获得该操作 2 3 2 设置组件属性 属性检查器 属性检查器提供一个所有可设置属性的列表并显示当前的属性值 使用户能够设 置界面中各组件的属性 列表中的每一个属性都对应于一个相应于该属性的属性值选 择范围 例如 BackgroudColor 属性的颜色选择器 FontAngle 的弹出式菜单和 Callback 字符串的文本域 属性检查器的外观如图 2 8 所示 用户可以通过多种方式来启动属性检查器 双击界面设计编辑器中的组件 选择 Tools 菜单下的 Inspect Property 选项 选择 Edit 菜单下的 Inspect Property 选项 从组 件的文本菜单中选择 Inspect Property 选项 通过对 GUI 中各个用户控件对象的属性设置可以实现用户所需的控件外观和行为 特征 2 3 3 观察对象继承表 对象浏览器 对象浏览器显示图形窗口中所有对象的继承关系 在图 2 9 给出的 GUI 中 从对 象浏览器可以看出 第一个创建用户控件是面板 panel 然后是 4 个按钮 Radio button 图 2 9 对象浏览器图 2 10 菜单编辑器 2 3 4 创建菜单 菜单编辑器 菜单编辑器的外观如图 2 10 所示 GUIDE 能够创建两种类型的菜单 在图形窗口菜单中显示的菜单栏菜单 当用户 右击图形对象时弹出的文本菜单 可以使用菜单编辑器来创建这两种类型的菜单 1 定义菜单栏菜单 创建菜单的第一步是使用 New Menu 工具来创建一个菜单 然后来指定菜单的属 性 用户点击创建的菜单项将会显示如图 2 11 所示的一个文本域 在该文本域中可以 设置菜单的标签 分隔符 选中模式以及回调函数字符串 图 2 11 创建菜单项 菜单创建成功后 MATLAB 将该菜单添加到图形窗口的菜单栏中 下面进行第二个步骤 创建菜单项 使用 New Menu Item 工具来添加菜单项 每 一个菜单项也可以有级联的子菜单项 图 2 12 显示了为窗口菜单定义了三个菜单的菜 单编辑器外观 图 2 12 定义菜单外观图 2 13 菜单效果 如果用户激活图形窗口 这三个菜单将会出现在窗口中 如图 2 13 所示 2 定义文本菜单 定义了文本菜单对象后 当用户右击鼠标时 文本菜单随之出现 菜单编辑器能 够定义文本菜单并将菜单与对象联系起来 文本菜单的所有菜单项都是文本菜单的子对象 这些菜单项并不显示在窗口菜单 栏中 选择菜单编辑器工具条中的 New Context Menu 来创建父菜单并为之定义一个标 签 注意在定义文本菜单之前要选择菜单编辑器的 Context Menus 标签界面 使用菜单 编辑器工具条中的 New Menu Item 按钮来创建文本菜单项 然后给该菜单项添加一个 标签并定义回调字符串 在界面设计编辑器中选择需要定义文本菜单的对象 使用属性检查器将该对象的 UIContextMenu 属性设置为所需文本菜单的标签名 在应用程序 M 文件中给每个文本 菜单项添加一个回调函数 当用户选择特定的文本菜单项时 这个回调子函数将被调 用 2 4 使用 GUIDE 控制 GUI 调用 guide 命令来显示一个空的界面设计编辑器和一个无标题的图形窗口 在为 该图形窗口添加组件时 首先应该使用 GUIDE 应用程序选项对话框来进行 GUI 组态 选择界面设计编辑器的 Tools 菜单下的 Application Options 选项打开选项对话框 GUIDE 应用程序选项对话框外观如图 8 14 所示 该对话框能够设置的选项包括以下几项 1 窗口重画行为 Resize behavior 命令行访问 Command line accessibility 仅生成 FIG 文件 生成 FIG 文件和 M 文件 General fig file only General fig file and m file 生成回调函数原型 General Callback function propotypes 同一时刻仅允许运行一个应用程序实例 Application allows only one instance to run 使用系统背景颜色配置 Use system color for background recommended for GUIs 函数直到应用程序窗口销毁才返回 Function does not return until application window disnissed recommended for functions returning values 2 5 M 文件以及 GUI 数据管理 GUI 包含很多可以使软件与用户终端进行交互的用户界面组件 GUI 的实现任务 之一就是控制这些组件如何相应用户的行为 对应用程序 M 文件代码进行详细分析的 目的就是要通过了解 GUIDE 创建应用程序 M 文件的功能 从而实现 GUI 规划 MATLAB 通过创建应用程序 M 文件 为 GUI 控制程序提供了一个框架 这个框 架包含着一种高效而坚固的编程方法 所有代码 包括回调函数 都包含在应用程序 的 M 文件中 这就使得 M 文件仅有一个入口可以初始化 GUI 或调用相应的回调函数 以及 GUI 中希望使用的任意帮助子程序 无论用户是否使用 GUIDE 来创建应用程序 M 文件 这里所说的编程技术对用户进行 GUI 编程都是有用的 这些技术包括 1 回调函数自动命名 GUIDE 给添加到应用程序 M 文件中的回调子函数自动命 名 GUIDE 还将 Callback 属性值设置为一个字符串使用户激活控件时该子函数能够被 调用 单个 多个实例控制 设计 GUI 时 可以选择是否允许 GUI 图形窗口的多个实 例存在 很多信息对话框只能只能同时存在一个实例 因为对于用户的某种特定行为 对话框只能提示一次 GUIDE 界面设计编辑器实际上是允许多个实例存在的 GUI 这 样设计这个 GUI 的目的是使用户能够同时打开多个界面 自动创建 GUI 组件句柄结构体 GUIDE 使用保存在 GUI 图形窗口中的应用程 序定义数据来实现数据的存储和获取 使用结构体在回调子函数间传递数据 自动命名 Tag 属性 生成子函数原型并指定回调属性字符串 当用户发布 GUI 时 应用程序 M 文件创建一个包含所有 GUI 组件句柄的结构体 然后将该结构体保存 在图形窗口的应用程序数据中以备将来使用 句柄结构体的域与相应对象的 Tag 属性 一致 例如 一个 Tag 属性为 pushbutton1 的对象可以使用以下句柄访问 handles pushbutton1 单个 M 文件同时包含 GUI 初始化和对调函数执行代码 可以直接使用 MATLAB 内建函数 或自定义函数 第 3 章 可视化平台设计 在前面章节的基础上 这章主要介绍如何使用 GUIDE 制作这个可视化平台的设计 本可视化平台采用经典的 MVC Model View Controller 4 架构模式开发 它将该平台的 输入 处理和输出分开 使用 MVC 应用程序被分成三个核心部件 模型 视图 控 制器 它们各自处理自己的任务 在这个平台中 为存储数据的变量 向量 矩阵及 在 GUIDE 中存储数据的句柄可以看做是该平台的 M 数据模型 而用 GUIDE 设计 出来的可视化窗口 充当着 V 视图 的角色 最后的输入转化 函数调用和输出转 化 则是关键的 C 数据控制 这样一个 MVC 架构就成型了 下面的工作就是逐个 进行开发 3 1 平台开发 根据 MVC 架构 在进行 数值分析 课程可视化平台的开发中首先说明的是 M 即数据结构的设计思路 然后介绍了 V 即可视化平台的视图设计过程 最后说明的是 C 即数据控制与函数调用等方面内容 3 1 1 M 数据模型 由于 MATLAB 的数据形式有限 一般为向量或矩阵形式 但在实际的开发过程 中 所遇到的算法多种多样 这使得自己编写的函数需要有不同形式的输入输出 即 数据传输的过程中 形式是多样的 面对丰富的数值分析算法 如何选择合适的但能 体现函数性质内容的数据存储模型 变成了一件困难的事情 在实际的开发中 作者也没有选择出一种最合适的统一数据模型 了解数值分析 的读者可以知道 这几乎是不可能的 为了回避这一难题 该论文中将每章的数据模 型尽量写成统一的形式 而在不同章节的算法中又是不同的数据形式 利用这种求同 存异的思路 一方面能将数据结构的多样性进行说明 另一方面能根据算法的内容灵 活选择数据形式 从而使自己建立的函数能够直观易懂 数值分析 课程涉及很多算法 不同章节的算法有不同的输入输出要求 使得 不同章节的算法拥有不同的数据模型 在插值算法中 为了将插值表达式与插值点的 值分开显示 函数会根据输入参数的数量 控制输出 这样其中的数据模型就是 字 符串与数值 在后面的迭代算法中 为了对比迭代的优越性和跌打算法中具体的值 即每一步的结果 在输出的结果矩阵中加入了一列序列向量 使得可以知道每一步的 计算结果 而后来在求解方程组时 将关键的对角矩阵 上下三角矩阵 结果向量等 合并成为了一个大的矩阵进行输出等 可以说每个章节的算法都有各自独特的数据模 型 且各自有其独特的意义所在 3 1 1 V 可视化窗口 数据模型是繁琐的 而视图是复杂 傻瓜化与界面友好的 视图的设计不仅需要 要根据函数的输入输出来选择合适的控件 以便可以输入方便 容易理解 输出直观 吸引人 而且需要根据人为的操作习惯 做到界面人性化 操作傻瓜化 系统完善化 等 在这篇论文中 由于作者的能力有限 没有达到那么完美的结果 只是简单的实 现了该可视化平台需要的功能 下面以前面介绍的 MATLAB GUI 内容来完成可视化的设计工作 即制作图形化 窗口视图 View 第一步 新建 GUI 调整窗口大小 打开 MATLAB 点击 File 选择 new file 新 建一个 GUI 图 3 1 图 3 1 新建 GUI 图 3 2 开始一个空的 GUI 此时弹出 MATLAB 的 GUI 操作窗口 如下图 图 3 2 选择 Blank GUI 开始 一个空的 GUI 设计 此时就打开了 GUI 开发工具的界面设计编辑器 默认的一个空的窗体 图 3 3 用箭头拖动右下角的黑点 可以改变窗体的大小 选择一个合适的大小 在界面设 计编辑器的左边是工具栏 从上到下依次为 指针工具 按钮工具 单选框 文本域 下拉菜单 标签栏 复选按钮组合框 ActiveX 控件 右边从上到下依次为 滚动条 复选框 标签工具 滚动选单 坐标轴域 单选按钮组合框 根据需要在窗体中添加 相应的组件 下面开始在面板中添加按钮等组件 图 3 3 窗口编辑器 图 3 4 完成后的窗口 第二步 根据函数的输入输出 添加组件 在添加组件前要对这章节的算法有个大 体的了解 这样可以知道有多少个输入输出 是否需要一个坐标轴来显示 要用什么 样的形式展示结果 然后根据函数的实际情况 添加相应的组件 例如用于显示标题 的 static text 静态文本 用于输入输入出文本 数值或矩阵的 Edit text 可编辑文 本框 用来显示函数图形的 axes 坐标系 用来响应用户操作调用 CallBack 回调函 的 button 按钮 等 根据需要可以拖动组件右下角的十字标志 改变组件大小 当控件添加好后 用上文提到的对齐工具 对这些控件的大小位置等进行调整 篇幅 有限 具体的添加和调整方法在此就不在累述 第三步 为了后面的 C 数据控制 修改控件属性 调整好组件位置后 下面开 始对主要的控件 tag 属性进行修改 通过前面章节可以知道 在 MATLAB 的 GUI 设 计中 组件依靠它的 tag 属性在 m 文件中调用 为了便于以后的操作作者将静态文本 控件 X 后的文本框 edit 控件的 tag 属性值修改为 X 同理将静态文本控件 Y 后的文本框 edit 控件的 tag 属性值修改为 Y 这样便于在 M 文件中定位回调函数或 对数据句柄进行操作 3 1 3 C 数据控制 数据控制是这个平台数据操作的核心内容 没有数据 上面做的可视化界面也将 只是一个形式 在这节里要详细的介绍如何得到输入数据 数据转换 调用函数来得 到结果以及如何将结果输出到可视化平台上去 现在我们的 GUI 窗口已经初见成型了 但是单击按钮之后 是不会出现结果的 因为核心的数据我们还没有 现在的这个 GUI 是一个虚有其表的 GUI 下面来给它加 入核心 数据的传值 转换 平台的函数调用 结果输出等 这些过程都是在单击相 应的按钮时触发回调函数 3 来执行 第一步 找到回调函数的插入点 右键单击 Lagrange 插值 按钮 选择 CallBack 选项 这时会弹出这个窗口的 M 文件 并定位到 Lagrange 插值 按钮的 CallBack 回调 函数 在按钮上方点击鼠标右键 在弹出的窗口中选择 ViewCallbacks 浏览回调函数中 的 Callback 回调函数 进入 m 文件的编辑如图 3 5 由于在前面的视图制作中 我们已经将按钮的 tag 属性设置为 flagrange 这是我 们可以看到下面的函数名字段 function flagrange Callback hObject eventdata handles 图 3 5 调用回调函数 图 3 6 修改 M 文件 打开相应的 m 文件进行编辑 第二步 获得窗口中的输入数据 首先获得窗口中的输入框句柄即数据的保存形 式 这里输入框中的数据一律是以字符串来传递的 得到输入框中的数据 get handles edit1 String 然后将数据先保存到一个变量中去 xx get handles edit1 String 第三步 转化数据格式 调用自定义函数 用 str2num string 函数来对数据进 行转化 同时将结果保存到一个变量中 x str2num xx 调用我们编写的自定义函数 根据函数的输出情况 将值赋值到新的变量 L fLagrange x y 第四步 转化函数结果 更细控件内容 输出结果 将函数运行得到的结果转换 为文本类型数据 用 set 方法更新 GUI 窗口中控件的内容 此刻就可以在可视化化窗 口中看到结果 sy0 num2str y0 sL char L Lx L t yy0 y0 out Lx sL yy0 sy0 set handles edit4 String out 第五步 运行测试 修改好 M 文件后保存 可以点击工具栏的 Run 来运行 图 3 7 这时会打开我们刚刚编辑的 GUI 窗口 图 3 7 在 M 文件中运行图 3 8 运行结果图 点击 flagrange 插值 按钮 看看运行效果 图 4 8 出来的结果可能有些问题 需 要我们再继续修改 根据错误的提示 修改 m 文件或我们自定义的函数文件 最后达 到我们想要的结果 3 1 5 部分截图 主要功能具有了 为了让平台更健壮 可以根据需要 添加菜单项 帮助文件 图片 音乐等 这些工作留给大家以后慢慢研究 平台最终完成后的效果如下图 3 9 所示 a 拟合 b 插值 c 数值积分 d 解线性方程组的直接法 e 解线性方程组的迭代法 f 常微分方程的数值解 图 3 9 平台部分截图 3 2 平台分析 该平台涵盖了 数值分析 课程中的 8 种数值计算方法 30 多种算法 可以利用 该平台计算课本上例题或者进行演示 方便 准确 快捷 即使不懂 MATALB 的人 也可以方便的使用该平台 完成其他相应的工作 程序中将部分算法结果用坐标图绘 制出函数图形 部分算法的过程也得到了显示 为了直观地反应出不同算法的结果 平台采用了多种多样的输出形式 使得输出结果直观明显 平台以 数值分析 课程的章节分开显示 每个章节的算法为一个窗口 在算法 切换时不是很方便 而且部分算法的结果输出形式较差 缺少解释说明性的文字 曾 想用 VC 或 JAVA 做 弥补这些缺点 但作者能力有限 没办法在几种语言中进行 切换编程 这些问题可以作为该平台以后的研究方向 从设计中 可以发现 MATLAB 提供的 GUI 工具制作可视化窗口时非常便利 但 作为一种开发工具而不是专业编程语言 它的很多控件都不可以作更细致的调整 例 如 文字框的的内容不能以一定的格式输出 很容易出现排列不整齐的现象 图形的 输出 虽然很方便 但是要想在一些特定点的位置加一些说明又将是件困难的事情 面板的控制 也不是非常的灵活 如果面板过多 不仅难以控制 而且运行速度也将 大大的降低 通过论文可以看到 用 MATLAB 开发 数值分析 课程的可视化平台是可行的 同样开发其他数学相关的平台也是可行的 可以该论文作为一个开发参考 开发其他 的数学教学可视化平台 MATLB 提供了一套程序打包工具 可以方便的将 m 文件打包生成 C 的程序 这 样就可以利用 C 语言来弥补 GUIDE 工具的不足之处 3 第 4 章 数值分析算法函数 21 世纪 随着科技的日新月异 计算机在处理一些具有庞大的计算量的问题中发 挥了重要的作用 在一些具体的科学或工程计算问题中 对问题采用的解决方法一般 分为以下几个步骤 5 首先 科研人员或工程研究人员对具体的问题建立起物理模型 然后由基础研究人员把问题模型归结成数学模型 经过研究证明数学模型解的存在唯 一性 但要用手工的方法计算出解是很耗时费力的 甚至是不可能实现的 最后还需 数值分析专家对该数学模型运用数值方法化简或者借助计算机把求解任务交给计算机 来完成 4 随着科学的发展 工作人员在解决遇到的实际问题时 所要求的计算量越来越大 所以数值方法在当今的计算中发挥的作用也越来越明显 尤其是计算机的发展 使得 数值方法可以借助计算机来完成 给科研人员和工程计算人员带来了极大的方便 为了适应社会的需求 目前的高等学校 把数值分析作为一门数学系和计算机系 的专业课程来开设 培养学生的数值分析思维及运用数值分析的能力 使得学生在进 入社会后 在此基础上有更进一步的研究来解决实际中的一些大型问题 为社会培养 有用的人才 4 1 插值 在离散数据的基础上补插连续函数 使得这条连续曲线通过全部给定的离散数据 点 插值是离散函数逼近的重要方法 利用它可通过函数在有限个点处的取值状况 估算出函数在其他点处的近似值 这节主要实现了 Lagrange 插值 牛顿插值 Hermiet 插值和三次样条插值 并将 这些插值方法做成了函数形式 对应的函数依次为 fLagrange x y x0 fNewton x y x0 fHermite x y dy x0 fSpline3 x y dy x0 4 1 1 算法分析 下面以 Lagrange 插值为例说明函数的设计和使用方法 首先根据 Lagrange 插值的原理 得到公式 5 n i kk iin nkxxxlxL 0 1 0 然后根据公式 得到程序算法 下面用伪代码描述 Lagrange 插值多项式的算法 6 Step 1输入 插值节点控制数 n 插值点序列要计算的函 1 0 niyx ii 数点 x Step 2FOR to i 控制 lagrange 基函数序列0 in FOR to 0 jn 对给定 x 计算 lagrange 基函数 ij nj ji j i xx xx xl 0 IF ji THEN jij xxxxtmptmp tmp 表示 lagrange 基函数 xli i ytmpfxfx 计算 n i iin fxyxlxL 0 Step 3输出的计算结果 fx xLn 完成后的函数为 out fLagrange x y x0 x x 横坐标的值 y 对应 y 纵坐标的值 Out 当只有俩个参数是输出表达式 三个时输出 x0 对应的值 x0 要求的坐标点 x0 4 1 2 举例说明 例 4 1 给定 构造二次插值224951 0 13sin 207912 0 12sin 190809 0 11sin 函数并计算 7 3011sin 解 在 MATLAB 命令行中输入 x 11 12 13 y 0 190809 0 207912 0 224951 x0 11 5 f fLagrange x y Y0 fLagrange x y x0 得到插值函数 F 320000e 4 t 2 178390e 1 t 154800e 2 对应点的值 Y0 0 1994 如图 4 1 a 用平台输入后得到如图 4 10 b 结果 a 命令行输出结果 b 平台输出结果 图 4 1 插值 不仅输出了插值函数和对应点的值 还绘制出了插值函数图 图中圆点即为要求 点 4 1 2 算法小结 本节基于课本内容编写算法 但由于采用的插值方法不同 使得输入参数不同 算法不同 这样就出现了同样的一组数据 在一些算法中可能无法得到结果 这就需 要补齐条件 重新进行计算 而且该章后面的样条函数是分段的 每一段有一个函数 表达式 但是程序难于将这些表达式一同输出 在这里 将根据待求点的值所在范围 进行判断 然后只输出该段的表达式 4 2 拟合 通过观察或测量到一组离散数据序列 当所得数据比较准确的时候 可构造插值 函数 构造的原则是要求插值的函数通过这些插值节点 但通常所测得的数据有误差 如果数据系列无法同时满足某特定函数 即插值的 无法满足要求 在这种情况下只能通过逼近函数最优的靠近样点 即数据拟合 仍然是已知 求一个简单易算的近似函数 来拟合这些数据 m xx 1m yy 1 xf 4 2 1 算法分析 在这节算法中 平台主要实现了线性拟合 二次拟合 指数型拟合 幂函数型拟 合 双曲线型拟合等 并将这些插值方法做成了函数形式 对应的函数见附录 下面将以用构造形如的拟合函数 即指数型拟合 来分析本章的拟合 bx aexp 函数算法 用形如的函数拟合给定 bx aexp 1 2 1 miyx ii 算法描述 Step 1输入值 及 m1 2 1 miyx ii Step 2解方程组 m i ii m i i m i i m i i m i i yx y b a xx xm 1 1 1 2 1 1 log log Step 3输出即所求拟合函数 bx aexp 制作完成后的函数为 sol A b delta p fLeastSquareMethod3 x y 其中输入参数 x y 为给定点的对应坐标向量 输出参数 delta 为误差 p 为差值表达式 bsoleA x x 坐标点的值 y y 坐标点的值 sol 系数矩阵 A 拟合矩阵 b 拟合矩阵的值 delta 均方误差 p 拟合表达式 4 2 2 举例说明 例 4 2 求一个经验函数形如的公式 使它能够和下列数据相拟合 5 bx aey i x 12345678 i y 15 320 527 436 649 165 687 8117 6 解 在 MATLAB 命令框中输入 x 1 2 3 4 5 6 7 8 y 15 3 20 5 27 4 36 6 49 1 65 6 87 8 117 6 sol A b delta p fLeastSquareMethod3 x y 得到 sol 2 4369 0 2912 A 8 36 36 204 b 29 9787 147 1350 delta 0 1239 p 804812150005729 70368744177664 exp 655760171107309 2251799813685248 t 即得到的表达式为 如图 4 2 a x ey 4369 2 2912 11 用平台计算得到图 4 2 b 的结果 a 命令行输出结果 b 平台输出结果 图 4 2 最小二乘法 平台将不仅输出了最后结果 同时将计算过程中出现的主要向量和矩阵等也进行 了显示 而且绘制出了数据点和拟合好的函数图形 非常直观方便 4 2 2 算法小结 在所有的算法中 本节的算法是比较简单和易于实现的 只要掌握了法方程的求 解 就可以很轻松的完成该节算法的可视化窗口 该节算法的输出结果比较好 平台 将数据点以红星表示 拟合函数以蓝线条表示 计算中出现的法方程即其解都做了显 示 非常直观方便 4 3 数值积分 求定积分的近似值的数值方法 即用被积函数的有限个抽样值的离散或加权平均 近似值代替定积分的值 构造数值积分公式最通常的方法是用积分区间上的 n 次插值多项式代替被积函数 由此导出的求积公式称为插值型求积公式 特别在节点分布等距的情形称为牛顿 柯茨 公式 例如梯形公式与抛物线公式就是最基本的近似公式 但它们的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论