计算机课程设计基于EXCEL VBA的Lagrang插值程序设计_第1页
计算机课程设计基于EXCEL VBA的Lagrang插值程序设计_第2页
计算机课程设计基于EXCEL VBA的Lagrang插值程序设计_第3页
计算机课程设计基于EXCEL VBA的Lagrang插值程序设计_第4页
计算机课程设计基于EXCEL VBA的Lagrang插值程序设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、基于基于 excelexcel vbavba 的的 lagranglagrang 插值程序设计插值程序设计 学生姓名: 班级:08081103 指导老师: 摘要:excel 是 microsoft office 家族成员,是 windows 环境下应用最广泛的软件之一。 是一个功能强大、技术先进、使用方便的表格式数据综合管理和分析系统。它向用户提 供了史无前例的、超强的计算功能及表格功能。它采用电子表格方式进行数据处理,操 作直观方便;它提供了丰富的函数,可以进行各种数据处理、统计分析。此外,excel 的强 大功能还在于它提供的宏语言 visual basic for application

2、(简称 vba),为广大用户提供 了一个新的、更高层次的二次开发平台。 本文介绍一种基于 excel 内核的 vba 编程方法,来扩展 excel 的功能,以实现 lagrang 插值函数计算的数据统计功能。讨论如何利用 microsoftexcel 的强大数据处理 功能和其中的 vba 程序,编制简单、快捷、实用的计算数学模块,使得许多复杂、烦琐 的数值计算可通过自编数学软件轻松完成。 关键词: excel, lagrang , 插值函数 vba 编程 指导老师签字:指导老师签字: 目目 录录 1 引言 .1 2 基于 excel vba 的 lagrang 插值的理论基础 .2 2.1 v

3、ba 简介 .2 2.1.1 vba 是什么.2 2.1.2 vba 和 vb 的区别.3 2.1.3 vba 的特点.3 2.1.4 vba 的 excel 基本应用 .4 2.2 宏操作 .5 2.2.1 宏的概念.5 2.2.2 宏可以实现的操作.5 2.3 插值多项式的简介 .6 2.3.1 发展历史 .6 2.3.2 主要内涵 .6 2.3.3 基本类型 .6 2.4 拉格朗日(lagrang)插值函数.7 2.4.1 lagrang 插值基函数.7 2.4.2 lagrang 插值公式.8 3 基于 excel vba 的 lagrang 插值的实现.9 3.1 问题的提出 .9

4、3.2 插值在 excel中的实现 .9 3.3 程序设计 .9 3.4 运行结果 .10 4 结论.12 参考文献.13 致谢.14 1 1 引言引言 数学在工程、技术、经济及其它各个领域的使用常常都归结为对数值计算的研究, 我们将在 excel 中实现几种典型的数值计算方法,并编写出这些计算的 vba 代码,供 数值计算者使用并举一反三,自己动手解决复杂计算问题,提高工作效率。 许多实际问题往往是通过函数 y=f(x)来反映其内在的规律,而一般函数 y=f(x)的解 析表达式是不易获得的,往往是通过观察或实验获得 y=f(x)在一些特殊点 处的函数值,然后去找一类较简单的函数 p(x)(通

5、常是多njxj, 1 , 0njyj, 1 , 0 项式函数)满足来代替 f(x)即使 y=f(x)的解析表达式已知,要 njyxp jj , 1 , 0 求出 y=f(x)在一些特殊点处的函数值 f()也是不容易的,这时我们的想法是用一个 j x j x 多项式 p(x)来近似代替 f(x),用 p()代替 f()用多项式近似表达函数是近似计算与 j x j x 理论分析的重要内容,它在计算数学中占有举足轻重的地位在这些方面已有了许多 数学家作了大量的工作,例如 lagrange、newton、hermite、taylor 等。本文将 lagrang 展开式的形式给出插值的计算方法。 2 2

6、 基于基于 excelexcel vbavba 的的 lagranglagrang 插值的理论基础插值的理论基础 2.12.1 vbavba 简介简介 2.1.12.1.1 vbavba 是什么是什么 直到 90 年代早期,使应用程序自动化还是充满挑战性的领域 .对每个需要自动 化的应用程序 ,人们不得不学习一种不同的自动化语言 .例如:可以用 excel 的宏语 言来使 excel 自动化,使用 word basic 使 word 自动化,等等.微软决定让它开发出 来的应用程序共享一种通用的自动化语言 -visual basic for application(vba), vba 是非常流行

7、的应用程序开发语言 visual basic 的子集. 实际上 vba 是寄生于 vb 应用程序的版本 . vba 究竟是什么 ?更确切地讲 ,它是一种自动化语言 ,它可以使常用的程序自动 化,可以创建自定义的解决方案 . 此外,还可以将 excel 用做开发平台实现应用程序 . office 取得巨大成功的一个重要原因就是vba,使用 vba 可以完成很多事情, 基于 excel、word 的 vba 小程序不计其数。 大多数人看到了 vba 可以自动化一个程序,可以扩展已有程序,但没有看到在 office 中,vba 代码可以是录制的,而不是写出来的,带来的好处是,学习曲线变 得非常缓。如

8、果没有宏录制功能,要熟悉某个office 组件的对象模型,绝非一日 之功。 以 arcgis 为例,arcgis 扩展必须使用 arcobject,不管是使用 vba 也罢,vb 也罢,还是 c+也罢。但同时, arcobject 的学习不是一天两天可以搞定,对于业 余程序员,要使用 vba 来扩展 arcgis,几乎没有可能;专业程序员又不屑使用 vba;而对于公司,如果要基于 arcobject 来扩展 arcgis,选择 vba 意味着源码 的保护很困难。所以, arcgis 的 vba 就如同鸡肋。 不过,学习 ao 的时候,使用 vba 比使用其他语言要容易一些,写几行代码, 然后直

9、接运行测试结果,这种交互式的学习应该是最好的学习方法。 arcgis 以及 ao 与 office 相比,还有一个很大的差别,就是arcgis 缺乏中 等粒度的对象,例如 word 和 excel 的 range 对象。对于 office 开发,可以在对 底层小粒度对象一无所知的状况下做很多事情,这就是抽象的力量。常人可以处理 的复杂度是有限的,面对数十个对象和几百个对象,后者需要付出的努力不是10 倍,而是数十倍或更多,因为在学习过程中,必须可以把这些对象在大脑中很好的 组织,以控制其复杂度。 visual basic for applications(简称 vba)是新一代标准宏语言,是基

10、于 visual basic for windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语 言的特征,没有面向对象的程序设计概念和方法。而 vba 提供了面向对象的程序设 计方法,提供了相当完整的程序设计语言。vba 易于学习掌握,可以使用宏记录器记 录用户的各种操作并将其转换为 vba 程序代码。这样用户可以容易地将日常工作转 换为 vba 程序代码,使工作自动化。因此,对于在工作中需要经常使用 office 套装 软件的用户,学用 vba 有助于使工作自动化,提高工作效率。另外,由于 vba 可以 直接应用 office 套装软件的各项强大功能,所以对于程序设计人员的

11、程序设计和开发 更加方便快捷。 2.1.22.1.2 vbavba 和和 vbvb 的区别的区别 1. vb 是设计用于创建标准的应用程序 ,而 vba 是使已有的应用程序 (excel 等)自 动化。 2. vb 具有自己的开发环境 ,而 vba 必须寄生于已有的应用程序 。 3. 要运行 vb 开发的应用程序 ,用户不必安装 vb,因为 vb 开发出的应用程序 是可执行文件 (*.exe),而 vba 开发的程序必须依赖于它的父应用程序 ,例如 excel。 尽管存在这些不同 ,vba 和 vb 在结构上仍然十分相似 .事实上,如果你已经了解 了 vb,会发现学习 vba 非常快.相应的,

12、学完 vba 会给学习 vb 打下坚实的基础 。而 且,当学会在 excel 中用 vba 创建解决方案后 ,即已具备在 word access outlook foxpro prowerpoint 中用 vba 创建解决方案的大部分知识 。 * vba 一个关键特征是你所学的知识在微软的一些产品中可以相互转化。 2.1.32.1.3 vbavba 的特点的特点 vba 最大特点和最大优点是利用面向对象(oop)的 activex automation 技术,使 语言的引擎在技术上与开发环境分离。它的功能在很大程度上依赖于它的客户显露的 automation 接口。同时,由于 vba 是基于

13、activex automation 技术,它可以使用任何 automation 技术的应用程序共同工作。 在 microsoft excel 中,与表对应的对象是工作表(sheet 或 worksheet),与每 一个表格方格对应的对象是单元格区域(range),它可以仅包括一个单元格(cell), 也可以由多个单元格合并而成。工作表对象中的 cells 属性,在单元格的选择方面可 以达到与 range 相同的效果,它是以行(row)和列(gol)作为参数的,对于行和列 的选择可以采用变量的形式。在本例中,可设定工作表(worksheet)的每一行第一列 (cells(i,1)为中桩桩号,每

14、一行第二列(cells(i,2)为对应的地面高程。 2.1.42.1.4 v vb ba a 的的 e ex xc ce el l 基基本本应应用用 application 对象是 excel 对象模型的顶层,表示整个 excel 应用程序。在 vb 应 用程序中调用 excel,就是使用 application 对象的属性、方法和事件。为此,首先要 声明对象变量: dim vbexcel as object 或直接声明为 excel 对象: dim vbexcel as excel.application 在声明对象变量之后,可用 createobject 函数或 getobject 函数给

15、变量赋值新的 或已存在的 application 对象引用。 1.用 createobject 函数生成新的对象引用: set vbexcel=createobject (excel.application) 字符串excel.application是提供 excel 应用程序的编程 id,这个变量引用 excel 应用程序本身。 2. 用 getobject 函数打开已存在的对象引用: set appexcel=getobject(samp.xls) 上面语句打开文件 samp.xls。 一一 applicationapplication 对象常用的属性、方法对象常用的属性、方法 / 属性属

16、性描述描述 visible 属性取 true 或 false,表明 excel 应用程序是否可见 left,top 属性excel 窗口的位置 height,width 属性excel 窗口的大小 windowstate 属性 指定窗口的状态,取:ximaximized(最大化)x1 minimized(最小化)x1 normal(缺省) quit 方法退出 microsoft excel calculate 方法重新计算所有打开的工作簿、工作表或单元格 evaluate 方法求值数学表达式并返回结果 示例 1: 求值数学表达式: dim vbexcel as object set vbexc

17、el=createobject (excel.application) x=vbexcel. evaluate (3+5*(cos (1/log (99. 9) 2.22.2 宏宏操作操作 2.2.12.2.1 宏的概念宏的概念 要使 access 2000 的众多数据库对象成为一个整体,以一个应用程序的面貌展示 给用户,就必须借助于代码类型的数据库对象。宏对象便是此类数据库对象中的一种。 宏对象是一个或多个宏操作的集合,其中的每一个宏操作执行特定的单一功能。 用户可以将这些宏操作组织起来形成宏对象以执行特定的任务。 用户主要是在进行事务性或重复性的操作的情况下使用宏,如打开和关闭窗体、 显示

18、和隐藏工具栏或运行报表等。 所谓宏,就是一个 vba 模块,这里所说的宏操作,就是一个工作表操作法的全过 程可通过自己编写一段宏程序自动完成,结果相同,且精度能自动控制,而且这段程 序非常容易编写,只要在工作表中操作时启动“宏录制”(击“工具/宏/录制新宏” , 再确认宏名和保存宏的位置,出现“停止录制”确认工具框,为方便使用控制语句, 最好单击其上的“相对引用”钮,),当进行重复操作过程时即可停止宏录制(当然也 可以录制到操作结束),再用录制宏同样的方法打开宏代码进行编辑,删除多余的句, 将适当的重复操作语句放到循环体中即完成宏代码编写,方便得很。 2.2.22.2.2 宏可以实现的操作宏可

19、以实现的操作 一般来说,使用宏可以实现下列操作: 1创建全局赋值键(变量) 。 2在首次打开数据库时,执行一个或一系列操作。 3建立自定义菜单栏。 4从工具栏上的按钮执行自己的宏或者程序。 5可以使用宏把筛选程序加到各个记录中,从而提高记录查找的速度。 6使用宏可以随时打开或者关闭数据库对象。 7使用宏可以为窗体或者报表中的控制设置值,同时还可以模拟键盘动作,并把输入 提供给对话框。 8.可以使用宏来显示各种信息,并能够使扬声器发出报警声,以引起用户的注意。 9使用宏可以实现数据自动传输。可以自动地在各种数据格式之间引入或导出数据。 10可以使用宏移动 access 环境下的任何一个窗体,并能

20、够改变它们的大小。 11使用宏可以启动其他的应用程序,可以是 msdos 应用程序,也可以是 windows 应用程序。 12使用宏可以为窗体定制菜单,并可以让用户设计其中的内容。 2.32.3 插值多项式的简介插值多项式的简介 2.3.12.3.1 发展历史发展历史 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据 点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况, 估算出函数在其他点处的近似值。 早在 6 世纪,中国的刘焯已将等距二次插值用于天文计算。17 世纪之后,i.牛顿, j.-l.拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插

21、值法仍然是数据 处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方 程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 2.3.22.3.2 主主要要内内涵涵 插值问题的提法是:假定区间上的实值函数在该区间上个互不相同ba, xf1n 点处的值是,要求估算在中某点的值。其做法是: n xxx 10, n xfxf, 0 xfba, 在事先选定的一个由简单函数构成的有个参数的函数类1n n ccc 10, 中求出满足条件的函数,并以作为 n ccc, 10 nixfxp ii , 1 , 0 xp xp 的估值。此处称为被插值函数,称为插值结(节)点, xf

22、xf n xxx 10, 称为插值函数类,上面等式称为插值条件,中满足上 n ccc, 10 n ccc, 10 式的函数称为插值函数,称为插值余项。当估算点属于包含 xpxfxr 的最小闭区间时,相应的插值称为内插,否则称为外插。 n xxx 10, 2.3.32.3.3 基本类型基本类型 多项式插值多项式插值 这是最常见的一种函数插值。在一般插值问题中,若选取 为 n 次 多项式类,由插值条件可以唯一确定一个 n 次插值多项式满足上述条件。从几何上看 可以理解为:已知平面上 n1 个不同点,要寻找一条 n 次多项式曲线通过这些点。插 值多项式一般有两种常见的表达形式,一个是拉格朗日插值多项

23、式,另一个是牛顿插 值多项式。 埃埃尔尔米米特特插插值值 对于函数 f(x),常常不仅知道它在一些点的 函数值,而且还 知道它在这些点的 导数值。这时的插值函数 p(x),自然不仅要求在这些点等于 f(x)的函数值,而且要求 p(x)的导数在这些点也等于 f(x)的导数值。这就是 埃尔米特插值问题,也称带导数的插值问题。从几何上看,这种插值要寻求的多项 式曲线不仅要通过平面上的已知点组,而且在这些点(或者其中一部分)与原曲线 “密切”,即它们有相同的斜率。可见埃尔米特插值多项式比起一般多项式插值有 较高的光滑逼近要求。 分分段段插插值值与与样样条条插插值值 为了避免高次插值可能出现的大幅度波动

24、现象,在实际 应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次 埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。为了克服这一缺点,一 种全局化的分段插值方法 三次 样条插值成为比较理想的工具。见 样条插值。 三三角角函函数数插插值值 当被插函数是以 2 为周期的函数时,通常用 n 阶三角多项式 作为插值函数,并通过 高斯三角插值表出。 插值(interpolation),有时也称为 “重置样本”,是在不生成 像素的情况 下增加图像像素大小的一种方法,在周围像素色彩的基础上用数学公式计算丢失像 素的色彩。有些相机使用插值,人为地增加图像的 分辨率。 道插值,还有 0.

25、618 法插值,三点二次插值和二点二次插值。 2.42.4 拉格朗日拉格朗日(lagrang)(lagrang)插值函数插值函数 2.4.12.4.1 lagranglagrang 插值基函数插值基函数 选取了作为插值空间的一组基函数。本节将引入该空间中令一组基 n xxx, 1 2 n p 函数 lagrang 插值基函数。 针对个互异的插值节点,够照不超过 n 次的多项式 ,使之满足插1n i x n i 0 xli 值条件 njixl ij ijijji , 2 , 1 , 0, 1 0 设 niiii xxxxxxxxxxcxl 1110 由得 1 ii xl niiiiiii i x

26、xxxxxxxxx c 1110 1 故 niiiiiii nii i xxxxxxxxxx xxxxxxxxxx xl 1110 1110 或 ini n niiiiiii nii i xxx x xxxxxxxxxx xxxxxxxxxx xl 1 1 1110 1110 其中 nn xxxxx 01 成为关于节点的 lagrang 插值基函数。 xlxlxl n , 10 n ii x 0 它们依赖于插值点 。 n ii x 0 并满足: njixl ijji , 2 , 1 , 0, 2.4.22.4.2 lagranglagrang 插值公式插值公式 做 可以验证满足插值条件。称之为

27、 lagrang 插值多项 n i iin xlxfxl 0 xln 式。 其误差估计为 x n f xlxfxr n n nn1 1 !1 1.若被插值函数本身就是不超过 n 次的多项式,则有。 xfxln 2. 取,则。 故 n i i xl 0 1 1xf 0 1 n f 1111 10 xlxlxl n 拉格朗日插值公式是 i n i ii n i n j ji j n xfxlxf xx xx xr 100 其中 n j ji j i xx xx xl 0ni, 2 , 1 称为插值基函数,求该多项式的关键是求 xli 。 3 3 基于基于 excelexcel vbavba 的的

28、lagranglagrang 插值插值的实现的实现 3.13.1 问题的提出问题的提出 已知函数 f(x)的插值条件为: i x 0.400.550.650.800.901.05 i x 0.410750.578150.696750.888111.026521.25382 求题中的拉格朗日擂值多项式,并求 f(0.596)的近似值。 xp5 3.23.2 插值在插值在 excelexcel 中的实现中的实现 将插值条件输人 excel 工作表的区域 a2:b7 中(见表 1,当然也可以输人在其它地 方),在 c3 中输入公式“=(b3 一 b2)/(a3 一 a2)”即得差商,c4 中输人 1

29、0,x xf “=(b4 一 b3)/(a4 一 a3)”又得到差商;至于二阶差商,只要在 d4 中输 21,x xf 人公式“=(c4-c3)/(a4 一 a2)”,立即可得到的值,其余各阶差商的表 210 ,xxxf 上计算方法都是简单的重复操作,表 1 只给出最终结果。 表 1 计算差商表 3.33.3 程序设计程序设计 编写出计算 f(0.596)的宏 macro4 如下(题中要求的的表达式可根据该宏的运 xp5 行结果写出,由于式子较长,这里就省略了。若对别的 x。值,只要将程序中语句 “w=0.596”改为“w=x0”就可计算出 f(x0)的值)。 sub macro4() dim

30、 x(5), y(5), l(5), t(5)定义 4 个数组 dim w, u, v, w1定义 4 个变量 for i = 0 to 5 x(i) = cells(i + 2, 1).value: y(i) = cells(i + 2, 2).value 将单元格 中的插值条件赋给数组 next i w = 0.596 for k = 0 to 5 u = 1 v = 1 for j = 0 to 5 if j = k then j = j + 1: if j = 6 then goto 2 u = u * (w - x(j): v = v * (x(k) - x(j) next j l(k) = u / v: cell

温馨提示

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

评论

0/150

提交评论