基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】

基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】

ID:429993

大小:867.98 KB

页数:41页

时间:2017-08-01

上传者:U-944
基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】_第1页
基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】_第2页
基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】_第3页
基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】_第4页
基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】_第5页
资源描述:

《基于JAVA的数值分析计算工具【开题报告+文献综述+毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

毕业论文本科毕业论文开题报告计算机科学与技术基于JAVA的数值分析计算工具一、综述本课题国内外研究动态,说明选题的依据和意义(一)国内外研究动态数值分析在我国发展较早,有许多方向在国际上具有明显的优势。近十几年,数值分析与其他学科交叉的迹象越来越明显,尤其在信息等领域更是如此。西安交通大学数值分析有很好的传统,在一些方向上为我国数值分析的发展做出了突出贡献。在新时期,我们将整合几个优势方向,加大力度,以保持学科的整体优势,在部分方向上有所突破,发挥重点学科的引领作用。随着全球信息化进程的加快,人们越来越深刻地认识到,信息是与材料和能源同等重要的战略资源。信息技术发展的瓶颈主要为信息的加工与利用。如何从高复杂性数据中获得信息并转化为知识,单纯靠提高现有计算机的计算速度和存储容量已无法从根本上解决问题。过去人们获取不到知识是因为信息太少,而现在人们获取不到知识的原因则是信息太多或信息过载。人脑是已知最有效的非结构化信息处理系统。揭示大脑的非结构化信息处理机制,运用现代计算工具有效模拟这一机制,并由此发展高效的智能化信息处理技术,是信息技术发展的必然选择与突破口。24 毕业论文偏微分方程数值分析研究方向的发展目前已到达前沿性的数值分析和最新的高性能计算机的计算能力的结合,从注重数值理论分析到注重数值计算在工业部门中的应用中来。与以往不同,近年来国际优化领域一个显著的特点是以实际问题为导向,即为解决现实中各种复杂的大规模优化设计、管理与决策问题而发展或开创新的最优化问题分支或运筹学的新领域,探讨求解相应优化问题的有效算法,并将其应用于解决实际问题,检验其有效性与实用性,由此再反过来进一步推动相应优化问题理论与算法的发展。毫无疑问,这一发展趋势仍将继续。与以往不同,近年来国际优化领域一个显著的特点是以实际问题为导向,即为解决现实中各种复杂的大规模优化设计、管理与决策问题而发展或开创新的最优化问题分支或运筹学的新领域,探讨求解相应优化问题的有效算法,并将其应用于解决实际问题,检验其有效性与实用性,由此再反过来进一步推动相应优化问题理论与算法的发展。毫无疑问,这一发展趋势仍将继续。由于海量数据在科学研究和生产实际的多个领域普遍存在,人们越来越关心如何应用计算机更快、更好地实现复杂数据的分析处理工作。面对这一挑战,数据挖掘和知识发现技术应运而生,并显示出强大的生命力。数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。统计计算作为数据挖掘和知识发现的重要方法,与当前计算机的强大计算能力相结合,发展有效实用的统计计算理论与方法,应用于解决实际领域中诸如优化、非线性方程求解、数值积分、数据融合等问题以及海量数据的分析,已成为目前本学科领域关注和研究的焦点问题,是今后发展的必然趋势。随着科技的发展,工业应用中的系统规模越来越大,也越来越复杂,尤其在微电子领域情况更是如此。为满足现代高速电路设计与模拟的高性能要求,需要对复杂集成系统构造新型降阶与快速计算方法,目的是为现代电子模拟算法植入电子设计自动化软件库奠定必要的数学理论基础。算法基础的主要研究任务是针对新的复杂系统进行算法分析、模拟与设计,算法综合和算法实现等。大型复杂系统的新型模拟算法无论在理论研究还是在实际应用中在国际上都具有重要性,也符合当今国家高技术研究与发展的需求。(二)选题依据和意义信息处理技术是解决国民经济建设、国家安全与社会发展中一系列重大需求问题的共性基础。该方面任何理论与方法上的突破,都将会对我国国民经济和社会的可持续发展,对国家安全与国防实力的提升,对信息产业的升级换代等带来巨大的推动作用。模拟人的认知(特别是视感知)机理,将认知科学成果、数学分析方法与信息处理技术相结合,发展创新的高效智能化信息处理技术,是信息领域的重点发展方向。本研究方向满足这一国家需求。工程中许多问题需要求解偏微分方程某些边值问题或初边值问题,目前的研究还主要停留在理论分析阶段,和实际工程问题的要求相差悬殊,24 毕业论文需要以后努力将理论分析成果应用到实际工程问题中去,直接为实际问题服务,产生好的经济效益。由于最优化理论与算法方向本身所具有的特殊应用背景,本方向的发展及其研究成果不仅有助于我国各级政府与管理部门科学地制定决策或发展规划,而且能指导各种各样的厂矿、企业、公司优化其研发与生产计划,取得最佳效益,统计计算和数据分析本身就是以解决实际领域的问题为出发点,我们的研究成果可以有效地应用于诸如气候、环境、流行病、经济金融、管理等领域的与国计民生密切相关的数据分析问题。随着我国经济的可持续发展以及西部大开发战略的进一步实施,国家对本学科发展和相关研究成果的需求将会更加迫切。(三)总结大型复杂系统,高数据量工程的处理分析时,人为的计算已经无法匹及,此时就需要大规模的处理机与之相对应的优秀算法来处理数据,从而实现数据的分析挖掘,及有效数据的显而易见。这个课题中,不仅要求,学生对数值分析中各个算法的深刻理解,还要求其能用计算机语言的理解深度来理解各个算法。讲刻版化的数学公式编写成具有优美风格的计算机程序。并要按照软件工程原理,简化操作,简单易懂。二.研究的基本内容,拟解决的问题(一)基本内容本文研究的内容主要包括:学习JAVA编程,理解掌握数值分析中各个算法。(二)拟解决的问题用程序语言解决多元方程组,常微分方程组的求解和,多精度的差值拟合,求解微分,积分。三、研究步骤、方法及措施:(一)研究步骤1.确定要研究的课题及拟解决的主要问题,准备和搜集大量的资料;2.根据论文主旨分析和筛选大量的资料;3.结合自己所掌握的资料,初步完成提纲,征求指导老师意见并修改;4.根据提纲完成初稿,主要依据是自己所搜集的资料;5.修改初稿,请教指导老师,继续搜集资料并深入分析现有资料;24 毕业论文6.不断修改,最终打印成文,主要听取指导老师意见及继续收集各种相关资料。(二)研究方法资料收集法,文献研究法、历史分析法等方法(三)研究措施以网络资源、图书馆电子图书、各种相关著作以及相关期刊论文作为研究的主要来源,采用观察、经验总结、对比分析等方法和手段,进行多个轮回的研究,为本课题的研究提供理论支持,以确定本课题的理论价值和实践价值。四、参考文献[1]任现淼.计算机数学基础——数值分析[M].北京:中央广播电视大学出版社,1999.[2]郑慧娆,陈绍林,莫忠息,等.数值计算方法[M].武汉:武汉大学出版社,2002.[3]李庆扬,王能超,易大义.数值分析[M].4版.北京:清华大学出版社,2001.[4]李庆扬.科学计算方法基础[M].4版.北京:清华大学出版社,2005.[5]张海藩.软件工程.清华大学出版社.2009[6]邱加永.JSP基础与案例开发详解.清华大学出版社.2009[7]王鹏.零基础学Java.机械工业出版社.2008[8]刘威葳.JSP应用开发详解.电子工业出版社.2002[9]武延军.黄飞跃.精通JSP编程技术.人民邮电出版社.2001[10]柏亚军.JSP编程基础及应用实例集锦.人民邮电出版社.2001[11]孟小峰.数据库系统导论.机械工业出版社.2000[12]李振捷.JSP网站开发典型模块与实例精讲.电子业出版社.2006[13]StevenHolzner.Java技术内幕.机械工业出版社.200224 毕业论文毕业论文文献综述计算机科学与技术基于JAVA的数值分析计算工具1引言数值分析主要介绍现代科学计算中常用的数值计算方法及其基本原理,研究并解决数值问题的近似解,是数学理论与计算机和实际问题的有机结合[1]。随着科学技术的迅速发展,运用数学方法解决科学研究和工程技术领域中的实际问题,已经得到普遍重视。数学建模是数值分析联系实际的桥梁。在数学建模过程中,无论是模型的建立还是模型的求解都要用到数值分析课程中所涉及的算法,如插值方法、最小二乘法、拟合法等,那么如何在数学建模中正确的应用数值分析内容,就成了解决实际问题的关键。随着计算机技术的发展和科学技术的进步,科学与工程计算(简称科学计算)的应用范围已扩大到许多的学科领域,已经形成了一些边缘学科。例如,计算物理、计算力学、计算化学等。目前,实验、理论和计算已经成为了人们进行科学活动的三大方法。对从事工程与科学技术工作的人员,学习和掌握《数值分析》(即《计算方法》)是非常必要的。2Java概述Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。2.1Java的定义24 毕业论文Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。Java的开发环境有不同的版本,如sun公司的JavaDevelopersKit,简称JDK。后来微软公司推出了支持Java规范的MicrosoftVisualJ++Java开发环境,简称VJ++。2.2Java的特点2.2.1平台无关性平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。2.2.2安全性Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。2.2.3面向对象Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。2.2.4分布式Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。2.2.5键壮性Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供:Null指针检测、数组边界检测、异常出口、Bytecode校验。24 毕业论文3数值计算的研究动态数值分析主要为了解决工程运用中一系列曲线拟合,无法求解的积分、微分以及含有大批量未知数的方程组,运用当下已经研究的很成熟的算法例如,拉格朗日插值,牛顿插值,欧拉格式,四阶龙库,复化辛普生算法,牛顿逼近等并用当下最前沿的语言JAVA语言实现这些算法,使得在工程运用上,对数据的分析处理更加得心应手。所以本课题意在用计算机程序的形式,解决多元方程组,常微分方程组的求解和,多精度的差值拟合,求解微分,积分等问题。考虑的JAVA的跨平台性,也就意味着JAVA软件有着得天独厚的兼容性,这也是JAVA之所以被总多软件工程师所喜爱的重要原因。3.1拉格朗日插值线性插值也叫两点插值,已知函数y=f(x)在给定互异点x0,x1上的值为y0=f(x0),y1=f(x1)线性插值就是构造一个一次多项式P1(x)=ax+b使它满足条件P1(x0)=y0P1(x1)=y1其几何解释就是一条直线,通过已知点A(x0,y0),B(x1,y1)。线性插值计算方便、应用很广,但由于它是用直线去代替曲线,因而一般要求[x0,x1]比较小,且f(x)在[x0,x1]上变化比较平稳,否则线性插值的误差可能很大。为了克服这一缺点,有时用简单的曲线去近似地代替复杂的曲线,最简单的曲线是二次曲线,用二次曲线去逼近复杂曲线的情形。3.2牛顿插值插值法利用函数f(x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f(x)的近似值。如果这特定函数是多项式,就称它为插值多项式。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。  牛顿插值通过求各阶差商,递推得到的一个公式:  f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0)...(x-xn-1)+Rn(x)3.3欧拉格式24 毕业论文微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值,这个过程称为离散化。实现离散化的基本途径是用向前差商来近似代替导数,这就是欧拉算法实现的依据。欧拉(Euler)算法是数值求解中最基本、最简单的方法,但其求解精度较低,一般不在工程中单独进行运算。所谓数值求解,就是求问题的解y(x)在一系列点上的值y(xi)的近似值yi。对于常微分方程:dy/dx=f(x,y),x∈[a,b]y(a)=y0可以将区间[a,b]分成n段,那么方程在第xi点有y'(xi)=f(xi,y(xi)),再用向前差商近似代替导数则为:(y(xi+1)-y(xi))/h=f(xi,y(xi)),在这里,h是步长,即相邻两个结点间的距离。因此可以根据xi点和yi点的数值计算出yi+1来:yi+1=yi+h*f(xi,yi),i=0,1,2,L这就是欧拉格式,若初值yi+1是已知的,则可依据上式逐步算出数值解y1,y2,L。为简化分析,人们常在yi为准确即yi=y(xi)的前提下估计误差y(xi+1)-yi+1,这种误差称为局部截断误差。如果一种数值方法的局部截断误差为O(h^p+1),则称它的精度是p阶的,或称之为p阶方法。欧拉格式的局部截断误差为O(h^2),由此可知欧拉格式仅为一阶方法。3.4牛顿逼近求代数方程f(x)=0的精确解是很难的事情,特别地当f(x)是高于5次的多项式时,不能通过多项式系数的有限次运算得到根的表达式。在这种情况下求方程的近似解却是可以的,牛顿法就是一种比较好的逐次逼近法。牛顿法在求根过程中逼近很快,用计算机计算是十分方便的。牛顿法的本质仍然是“以直代曲”,首先猜测一个值x1,用它近似方程的根c,用过(x1,f(x1))点的切线y=f(x1)+f’(x1)(x-x1)近似代替曲线f(x),然后用切线方程y=f(x1)+f’(x1)(x-x1)=0的根x=x2=x1-f(x1)/f’(x1)近似代替曲线方程的根c,这样就得到c的第二个近似值。依此类推可得到迭代公式在复平面上选定一个区域,对于任意初始点(除去(0,0)点),讨论它在牛顿法迭代过程中的行为。一般选f(x)=xp-1,其中p是大于2的正整数。这样,迭代公式还可以改写为对于x3-1=0,有三个根:x1=1,x2=[-1+SQR(3)i]/2,x3=[-1-SQR(3)i]/2,三个根均匀地分布在单位圆上。这三个根周围构成三个“吸引盆”(attractorbasin),初始点迅速被吸引到盆内,最后停止在三点之一。用计算机迭代,以当前点到三个终点的距离远近为标准,标上不同的颜色,就能得到美丽的分形图,特别是在120线、240线附近有复杂的“项链”结构。4总结24 毕业论文上面所提到的,大致可分为四大类,微分问题,积分问题,插值拟合,求解多元方程组,笔者意在讲一些常用的数学方法写入程序,以可视化的界面,简单的操作,来呈现上述的4大问题。诸如,微分问题,笔者实现了四种算法,其中包括欧拉格式,改进欧拉,校正欧拉,四阶龙库,这四种方法,主要的区别就在于其微分的精度不同,诸如,积分问题,笔者只实现了复化辛普生算法,因为积分相对来说精度比较好控制。诸如,插值拟合问题,笔者实现了拉格朗日插值和牛顿插值。两者区别在于拉格朗日算法时间复杂度低,但对于高修改量的插值牛顿插值相对较优。诸如求解多元方程组,笔者用的是牛顿逼近,亦或说是切线逼近。是逼近速度较快的一种算法。笔者将上诉四大类问题,集成到一个软体上,意在使软件的可用性上一个档次。参考文献[1]任现淼.计算机数学基础——数值分析[M].北京:中央广播电视大学出版社,1999.[2]郑慧娆,陈绍林,莫忠息,等.数值计算方法[M].武汉:武汉大学出版社,2002.[3]李庆扬,王能超,易大义.数值分析[M].4版.北京:清华大学出版社,2001.[4]李庆扬.科学计算方法基础[M].4版.北京:清华大学出版社,2005.[5]张海藩.软件工程.清华大学出版社.2009[6]邱加永.JSP基础与案例开发详解.清华大学出版社.2009[7]王鹏.零基础学Java.机械工业出版社.2008[8]刘威葳.JSP应用开发详解.电子工业出版社.2002[9]武延军.黄飞跃.精通JSP编程技术.人民邮电出版社.2001[10]柏亚军.JSP编程基础及应用实例集锦.人民邮电出版社.2001[11]孟小峰.数据库系统导论.机械工业出版社.2000[12]李振捷.JSP网站开发典型模块与实例精讲.电子业出版社.2006[13]StevenHolzner.Java技术内幕.机械工业出版社.200224 毕业论文本科毕业论文(20届)基于JAVA的数值分析工具专业:计算机科学与技术24 毕业论文摘要数值分析主要介绍现代科学计算中常用的数值计算方法及其基本原理,研究并解决数值问题的近似解,是数学理论与计算机和实际问题的有机结合[1]。随着科学技术的迅速发展,运用数学方法解决科学研究和工程技术领域中的实际问题,已经得到普遍重视。数学建模是数值分析联系实际的桥梁。在数学建模过程中,无论是模型的建立还是模型的求解都要用到数值分析课程中所涉及的算法,如插值方法、最小二乘法、拟合法等,那么如何在数学建模中正确的应用数值分析内容,就成了解决实际问题的关键。随着计算机技术的发展和科学技术的进步,科学与工程计算(简称科学计算)的应用范围已扩大到许多的学科领域,已经形成了一些边缘学科。例如,计算物理、计算力学、计算化学等。目前,实验、理论和计算已经成为了人们进行科学活动的三大方法。对从事工程与科学技术工作的人员,学习和掌握《数值分析》(即《计算方法》)是非常必要的。本文详细研究了数值分析中的曲线拟合,积分问题,微分问题和多元未知数求解等五类问题的编程方法,采用统一的操作方法,整合到一个工具软件中,以方便应用。【关键词】JAVA,数值分析,曲线拟合,积分,微分24 毕业论文NumericalAnalysisToolsBasedonJAVAAbstractNumericalanalysisfocusesoncommonlyusedinmodernscientificcomputingandthebasicprinciplesofnumericalmethodstostudyandsolvenumericalproblemsintheapproximatesolutionofamathematicaltheoryandcomputerandthecombinationofpracticalproblems.Withtherapiddevelopmentofscienceandtechnology,theuseofmathematicalmethodstosolvescientificandengineeringpracticalproblemsinthefield,hasbeenwidespreadattention.Numericalanalysisofmathematicalmodelingisabridgetoreality.Inthemathematicalmodelingprocess,model,orwhetheritistosolvethemodelcurriculumtobeusedinnumericalanalysisinvolvedinthealgorithms,suchasinterpolation,leastsquares,fitting,etc.,thenhowinthecorrectmathematicalmodelingNumericalanalysisofcontent,itbecomesthekeytosolvingpracticalproblems.Withthedevelopmentofcomputertechnologyandscientificandtechnologicalprogress,scientificandengineeringcalculations(referredtoasscientificcomputing)applicationshasbeenextendedtomanydisciplines,hasformedanumberofinterdisciplinary.Forexample,computationalphysics,computationalmechanics,computationalchemistry.Currently,experiments,theoryandcomputinghasbecomeoneofthethreemethodsofscientificactivities.Engagedinengineeringandscienceandtechnologywork,learningandmasteringthe"ValueAnalysis"(or"method")isverynecessary.Thispaperstudiesthenumericalanalysisofcurvefitting,integrationproblems,differentialproblemsandfivemultipleunknownssolvingproblemssuchasprogramming,usinguniformmethodofoperation,thesoftwareintegratedintoatooltofacilitatetheapplication.【Keywords】JAVA,numericalanalysis,curvefitting,integration,solvingordinarydifferentialequations24 毕业论文目录摘要IAbstractIII1绪论11.1设计背景11.2数值分析的发展史11.3本文工作21.4论文结构22JAVA42.1JAVA简介42.1.1JAVA的发展历史42.1.2JAVA的技术研究和应用72.2ECLIPSE下载和安装73实现数值分析工具的关键技术93.1软件实现的基本原理93.2数值分析重要函数93.2.1拉格朗日插值算法93.2.2拉格朗日插值算法程序实现103.2.3牛顿插值法113.2.4牛顿插值法程序实现133.2.5欧拉格式143.2.6欧拉格式程序实现153.2.7雅可比迭代法153.2.8雅可比迭代法程序实现163.2.9高级方程识别函数174系统开发194.1设计界面和操作194.2软件测试与比较2124 毕业论文4.2.1测试214.2.1.1插值拟合问题测试214.2.1.2微分问题测试224.2.1.3积分问题测试224.2.1.4方程问题测试235结论26参考文献2724 毕业论文1绪论数值分析,也被称之为数值计算。它通过电脑技术,将工程测量数值通过复杂的数学计算得到工程建设的数据,现实生活中,当数据量小,维度单一时,并不会体现出数值分析的作用,但随着时代的发展,工程规模迅速膨胀,从最初的百万级到10的20、30的数量级上窜,传统的计算已经无法适应现代工程的运用,因此早在17世纪,科学家们就已经高瞻远足地在探讨数值计算的离散化计算。随着计算机软件,计算机语言的飞速发展,将传统的数值计算以软件形式处理,将许多前人已经研究透彻的算法,通过数值离散化,转换为通过计算机程序计算的算法,这样就可以给数值计算搭载高速运转的计算机引擎,给当代大规模的工程运算带来巨大的效益。1.1设计背景当今时代软件飞速发展,从拥有单一功能精而专的小软件,到功能复杂,广泛而通用的计算机操作系统,越来越多的计算机软件使人们生活工作变的便捷、高效。但不管如何,软件的首要目标就是注重实用。所以在实用的前提下,笔者打算将数值分析中的插值问题,微分问题,积分问题,多元方程组求解问题,统一地写到一个软件里。这样既提升了软件的复用率,又提高了软件的实用性,是本软件的设计的核心价值理念。另外,笔者还采用了当下流行的JAVA语言进行编程,JAVA语言具有很强的跨平台性,给软件带来了很好的适用性。1.2数值分析的发展史随着计算科学理论的不断发展,许多过去实验和理论无法有效解决的问题,现在通过计算机软件计算得以解决,在某些领域中数值计算甚至成为日常工作必不可少的工具。二十世纪五、六十年代,一批适用于计算机应用的计算方法应运而生,如:计算大型线性代数方程的稀疏矩阵法、与计算机辅助设计密切相关的样条函数等等。微分问题中经典的龙格—库塔法被不断改进为多种变形以适应计算机上的大规模计算。在偏微分方程数值求解方面,拉克斯与黎希特梅尔在195624 毕业论文年建立了一般差分格式的收敛性、稳定性等价定理,这使差分方法的蓬勃发展获得了稳固的基础。总之,当今数值分析研究的现状主要有两个方面:内部主要研究计算的质量和计算速度,计算速度又表现在算法和并行运算两个方面,例如在算法方面,其主要任务就是发现更多更优秀的算法来提高计算速度。在外部方面表现在对其他研究领相互交织,越来越紧密的联系在一起。随着社会的需要。计算数学的内容越来越丰富,并且表现出越来越明显的学科交叉的特点,陆续形成了计算力学、计算流体力学、计算物理学、计算化学、计算生物学、计算地质学、计算经济学等分支学科以及各种大规模工程的计算数学分支。它们在科学技术中正发挥着越来越大的作用。随着软件技术的不断发展,计算数学的未来。正向着两个方向发展:在其自身内部纯计算理论方面,向着方程的离散、网格与自适应相耦合、算法、程序与并行相耦合、算法保真、算法健壮等等方向发展。如形成了涉及最佳逼近、插值与样条逼近、细胞神经网络逼近等热点领域。在应用性方面,数值分析表现出应用越来越广泛的特点。例如发展了计算神经网络。通过函数分析及运筹学方法研究神经网络的本质逼近以及神经网络的学习理论。还有作为数学和生物交叉学科的计算生物学,主要是研究计算神经科学。总之计算数学的内容将越来越丰富,在科学技术、社会发展中将发挥越来越大的作用。并日益融入社会生活的许多方面,成为推动科学技术和社会发展的重要动力。1.3本文工作数值分析中有四大类问题,分别是插值拟合问题,积分求解问题,微分问题,多元方程组求解问题。每一大类问题中有许多拥有各自特点的算法,比如插值拟合问题中,拉格朗日插值是比较传统且运算效率不低的算法,可是运用他的条件比较苛刻,用拉格朗日插值算法拟合数据,需要测量出全部数据值后方可计算,而现实工程规划中,通常很难一次性测量得到所有数据,相比较这个问题,插值拟合问题中的牛顿插值就显的高级一些了,在运用牛顿插值算法计算时,新测量得到的数据加入到样条数据组时无需修改前面已经运算好的结果,这一特点决定了牛顿插值在曲线插值问题中的重要位置!所以综合来讲本文的工作就是分析各个算法的特点,结合JAVA语言的编程风格,写出一个综合性较好的数值分析计算工具。1.4论文结构本文结构如下:24 毕业论文第一章概述数值分析的发展历史和应用领域和未来,以及JAVA语言开发数值分析工具的优点。为本文后面系统设计与实现提供技术理论基础。最后介绍了本文研究的具体内容和论文组织结构。第二章介绍了JAVA的发展历史和技术应用,以及ECLIPSE安装过程,并介绍了其工作环境下的配置,包括JAVA虚拟机及ECLIPSE的设置。另外还对配置好的环境进行测试。第三章详细分析了用JAVA语言实现数值分析工具的系统功能技术,即插值问题、微分问题、微分问题及多元方程组求解问题。第四章主要介绍了改软件设计,需要注意的要点,和四大模块的布局,代码编写,并通过测试,上机调试,优化操作,最后生成一个交成熟的工具软件。第五章主要总结了本文的工作及心得,并介绍了未来的工作和研究24 毕业论文2JAVA2.1JAVA简介Java语言最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。在Java出现以前。Internet上的内容基本是WEB形式的。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言无法适应当下,而SUN的工程师敏锐地察觉道了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都认为:这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。2.1.1JAVA的发展历史从JDK诞生到现在已经有15多年的时间了。沧海桑田一瞬间,JDK已经发布了6个版本。在这15多年里诞生了无数和Java相关的技术和标准。现在让我们进入时间隧道,重新回到1995年,再来回顾一下Java的发展轨迹和历史变迁。(一)JDK前传在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的)。但事实上Java早在上个世纪90年代初就开始酝酿了。1991年4月,Sun公司的JamesGosling领导的绿色计划(GreenProject)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行。而Green项目组的成员一开始使用C++语言来完成这个项目,由于Green项目组的成员都具有C++24 毕业论文背景,所以他们首先把目光锁定了C++编译器,Gosling首先改写了C++编译器,但很快他就感到C++的很多不足,需要研发一种新的语言来替代它,一杯飘香的咖啡成为了它的标志。(二)JDK的幼年时期(1995~1998)Sun继Green项目后又经过了几年的研究,终于在1995年5月23日在SunWorld'95上正式发布Java和HotJava浏览器。在同年,有很多公司先后获得了Java许可证,如Netscape在1995年8月,Oracle在1995年10月分别获得了Java许可证。Sun在1995年发布第一个Java版本后,于1996年1月宣布成立新的业务部门──JavaSoft部,这个部分主要负责开发、销售并支持基于Java技术的产品,由AlanBaratz先生任总裁。在1995年Sun虽然推出了Java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,Sun在1996年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API,用户界面API,发布技术,Java虚拟机(JVM)五个部分。而开发环境还包括了编译Java程序的编译器(即javac)。在JDK1.0时代,JDK除了AWT(一种用于开发图形用户界面的API)外,其它的库并不完整。虽然在1998年之前,Java被众多的软件企业所采用,但由于当时硬件环境和JVM的技术原因,它的应用却很有限。当时Java主要只使用在前端的Applet以及一些移动设备中。然而这并不等于Java的应用只限于这些领域。[17]在1998年是Java开始迅猛发展的一年。在这一年中Sun发布了JSP/Servlet、EJB规范以及将Java分成了J2EE、J2SE和J2ME。标志着Java已经开始向企业、桌面和移动3个领域进军。(三)JDK的青少年时期(1998~2004)到1998年,Java已经走过了3个年头。从JDK1.0到JDK1.1.8。JDK1.x经过了9个小版本的发展,已经初具规模。至此,它已经走出了摇篮,可以去独闯世界了。在1998年12月4日。Sun发布了Java的历史上最重要的一个JDK版本:JDK1.2。这个版本标志着Java已经进入Java2时代。这个时期也是Java飞速发展的时期。在Java2时代Sun对Java进行了很多革命性的变化,而这些革命性的变化一直沿用到现在,对Java的发展形成了深远的影响。JDK1.2自从被分成了J2EE、J2SE和J2ME三大块,得到了市场的强烈反响。不仅如此,JDK1.2还对它的API分成了三大类。核心API由Sun公司制定的基本的API,所有的Java平台都应该提供。这就是我们平常所说的24 毕业论文Java核心类库。可选API这是Sun为JDK提供的扩充API,这些API因平台的不同而不同。特殊API用于满足特殊要求的API。如用于JCA和JCE的第三方加密类库。因此,这次Sun将主要精力放到了Java的性能上。在JDK1.4中,Sun放言要对Hotspot虚拟机的锁机制进行了改进,使JDK1.4的性能有了质的飞跃。同时由于Compaq、Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。到JDK1.4为止,我们已经可以使用Java实现大多数的应用了。[16](四)JDK的壮年时期(2004~至今)虽然从JDK1.4开始,Java的性能有了显著的提高,但Java又面临着另一个问题,那就是复杂。虽然Java是纯面向对象语言,但它对一些高级的语言特性(如泛型、增强的for语句)并不支持。而且和Java相关的技术,如EJB2.x,也由于它们的复杂而很少有人问津。也许是Sun意识到了这一点。因此,在2004年10月,Sun发布了我们期待已久的版本:JDK1.5,同时,Sun将JDK1.5改名为J2SE5.0。和JDK1.4不同,JDK1.4的主题是性能,而J2SE5.0的主题是易用。Sun之所以将版本号1.5改为5.0,就是预示着J2SE5.0较以前的J2SE版本有着很大的改过。[14]Sun不仅为J2SE5.0增加了诸如泛型、增强的for语句、可变数目参数、注释(Annotations)、自动拆箱(unboxing)和装箱等功能,同时,也更新的企业级规范,如通过注释等新特性改善了EJB的复杂性,并推出了EJB3.0规范。同时又针对JSP的前端界面设计而推出了JSF。这个JSF类似于ASP.NET的服务端控件。通过它可以很快地建立起复杂的JSP界面。到今年年底Sun也再接再厉地推出了J2SE6.0的测试版,预计在2007年初将推出它的正式版。正象J2SE6.0的开发代号“野马(Mustang)”一样,我们已经隐约听到了野马的嘶鸣。据Sun发言人透露,J2SE6.0不仅在性能、易用性方面得到了前所未有的提高,而且还提供了如脚本、全新的API(Swing和AWT等API已经被更新)的支持。而且J2SE6.0是专为Vista而设计的,它在Vista上将会拥有更好的性能。在推出J2SE6.0的同时,J2SE7.0项目也已经启动。[9]24 毕业论文2.1.2JAVA的技术研究和应用Java在Intranet应用Intranet是一种与外部世界安全隔离的内部网络,java采用了Internet技术为它的信息底层服务。创建一个成功的Intranet应用程序应遵循以下四个步骤:(一)确定需求。通过考察Intranet网的目的、范围、用户等因素来确定Intranet网设计和实现需求;(二)规划。在确定了Intranet网的需求后,就对Intranet网进行规划,确定项目实施的时间和实施项目所必需的步骤,对条件和需求进行实现性考查;(三)设计。[8]一般是通过确定Intranet网上软件硬件安装的位置与方式(如主Web服务器安装的位置以及软件如何共享等)来设计的实现。在Intranet将根据需求、计划和设计来创建Intranet服务和开发应用程序。Java允许我们对一个线程组中所有的线程同时进行操作,比如我们可以通过调用线程组的方法来设置其中所有线程的优先级,也可以启动或阻塞其中的所有线程。例如,运行模型时,将产生的线程加入到其线程组中,在主线程中,仿真钟每推进一步,就查看线程组中线程的启动时间,如果有等于当前仿真时间的,就启动,使模型得到很好的控制。由于Java的跨平台性,采用多线程机制不仅能模拟并行的系统,而且在系统中实现交互。如果在软件的设计中采用UML面向对象建模技术,可使程序开发过程标准化、可视化,代码编写也简单化[9]。2.2ECLIPSE下载和安装Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。[3](一)下载安装包登录网站http://www.eclipse.org/,进入最新版本的下载页面,详细地址是http://download.eclipse.org/tools/pdt/downloads/index.phprelease=R20070917。在本页面中,提供了PDT插件的单独下载地址和Eclipse与PDT的打包下载地址,为了简化安装与配置过程,本书选择“PDTAll-in-One”版本,即Eclipse与PDT的打包版本。(二)安装与运行下载完成的文件是ZIP文件,使用解压缩软件把压缩包的内容解压到想要存放的位置,24 毕业论文Eclipse运行后,会自动进行配置,配置完成后,提示选择工作空间,通过单击“Browese...”按钮,打开文件定位对话框,选择工作空间对应的文件夹。单击“OK”按钮,进入Eclipse调试界面如图2-1所示。图2-1eclipse主界面24 毕业论文3实现数值分析工具的关键技术3.1软件实现的基本原理这个课题中实现数值分析计算工具的基本思想就是将数值离散化,只有将连续的数值分割成一个一个的离散数值后才有运用计算机软件计算的可能。所以数值离散化是本软件实现的核心思想。3.2数值分析重要函数3.2.1拉格朗日插值算法根据存在性唯一性定理的证明过程可得到,每一个代数插值问题实质上对应一个线性代数方程组的求解问题。对于插值方法的研究实际上是围绕插值条件所引出的线性方程组的求解方法的研究来进行的。常用的方法是插值基函数方法,拉格朗日基函数是具有代表性的基函数,由此而构造的插值多项式称为拉格朗日插值多项式。首先来讨论拉格朗日插值方法的线性插值。[12]已知数据(,),(,)求满足插值条件:,的线性插值函数:。从几何上看,的图形是通过平面上两个定点的直线。由直线的点斜式方程(也可以用两点式方程),所求线性插值函数可表示为:设f(x)在n+1个节点上的函数值为,在每个小区间,(k=0,1,…,n)上作线性插值,得:24 毕业论文在几何上就是用折线替代曲线,如图3.1所示若用插值基函数表示,则在[a,b]上3.2.2拉格朗日插值算法程序实现见图3.2拉格朗日插值程序图;变量x为预测数据横坐标的值;变量y为预测数据纵坐标;变量组(xi,yi)为初始数据组;变量n为初始数据组个数;变量t为L(x)的值;变量j,k为循环变量;24 毕业论文图3.2拉格朗日插值算法流程图3.2.3牛顿插值法于牛顿插值相比,拉格朗日插值多项式结构对称,使用方便。但由于拉格朗日插值是用基函数构成的插值,这样当要增加一个节点时,所有的基函数必须全部重新计算,不具备承袭性,这就造成了计算量的浪费。这就启发我们去构造一种具有承袭性的插值多项式来克服这个缺点,也就是说,每增加一个节点时,只需增加相应的一项即可。这就是牛顿插值多项式。由线性代数,任何一个不高于n次的多项式,都可以表示成函数:24 毕业论文的线性组合,也就是说,可以把满足插值条件p(xi)=yi(i=0,1,…,n)的n次插值多项式,写成如下形式:其中ak(k=0,1,2,…,n)为待定系数,这种形式的多项式称为Newton插值多项式。我们把它记为Nn(x)即它满足:其中ak(k=0,1,2,…,n)为待定系数,插值多项式Nn(x)称为牛顿(Newton)插值多项式。可见,牛顿插值多项式Nn(x)是插值多项式Pn(x)的另一种表示形式,与拉格朗日多项式相比它不仅克服了“增加一个节点时整个计算工作重新开始”的缺点,且可以提高计算效率。Newton插值多项式Pn(x)为:其中ak(k=0,1,2,…,n)可根据插值条件推出,即由有:……这样关于的下三角方程组,可以求得:用数学归纳法可证明。所以n次牛顿(Newton)插值公式为;24 毕业论文其中为差商,其求解形式为:3.2.4牛顿插值法程序实现见图3.3牛顿插值法程序图;变量x为预测数据横坐标的值;变量P为预测数据纵坐标;变量组(xi,yi)为初始数据组;变量N为初始数据组个数;变量y为f[x0,x1,x2,…,xn]的值;变量t为函数的值;变量组Xn分别为各项的值,即X1=f(x0),X2=f[x0,x1](x-x0)以此类推;变量k,n为循环变量。24 毕业论文输入x数据组(xi,yi)i=0,1,2…,Nn=0,P=0Xn=0yn=>Xny=0,t=1,i=1k=0k+1=>kk=n?y+yk/t=>y(xk-xj)*t=>tk=0,1,…,k-1,k+1,nn=0?=≠i*(x-xk)=>i≠=y*i=>XnP+Xn=>Pn+1=>n输出Pn=N?=≠图3.3牛顿插值法程序流程图3.2.5欧拉格式方法构造的思想:微分方程初值问题,微分方程在(x0,y0)处成立,再用前差代替一阶导数,,则。此时x0,y0均已知y(x0)=y0,则由此式可近似求出y(x1)的近似值y1,∴24 毕业论文同样可利用x1处的微分方程可得,一般的利用在xn处的微分方程可得:此式称为微分方程的差分格式,对于这个差分格式我们称为欧拉格式。3.2.6欧拉格式程序实现见图3.4欧拉格式程序流程图;变量x0,y0为初始条件值;变量h为步长;变量N循环次数,亦以要预测的微分值有关,即预测的微分值纵坐标x=N*h+x01=>n读入,x0,y0,h,N;x0+h=>x1y0+hf(x0,y0)=>ypy0+hf(x1,yp)=>yc(yp+yc)/2=>y1输出x1,y1k=n?n=N?N+1=>nx1=>x0,y1=>y0≠=图3.4欧拉格式流程图3.2.7雅可比迭代法首先了解迭代发。设有n阶线性方程组:Ax=b的系数矩阵A为非奇异矩阵,写出它的一个等价形式:x=Mx+g(3.1)任意给出x的一个值称为初始向量,代入(3.1)的右边,算出的结果记为,再将24 毕业论文代入(式3.1)的右边,算得的结果记为,一般地有:[2]=M+g(3.2)上式称为Ax=b的迭代格式,M称为迭代矩阵。由开始得到的迭代序列,,…如果存在极限,即存在x使:,则称迭代格式(3.2)收敛,此时x就是Ax=b的解。其中极限的意思是指或∣-Xi∣→0,i=1,2,…,n。由于对方程组Ax=b可以构造出收敛的迭代格式或不收敛的迭代格式,并且迭代总是只能进行有限步,因此,用迭代法求解线性方程组时面临两个问题:(1)如何构造一个收敛的迭代格式;(2)何时终止迭代得到满意的近似解。再设线性方程组的系数矩阵A可逆且主对角元素都不为零,令并将A分解成从而方程可以写成令:其中以B1为迭代矩阵的迭代法称为雅克比迭代法。3.2.8雅可比迭代法程序实现见图3.5雅可比迭代法程序流程图;变量组aij为方程组系数数据组;变量组bi为方程组常数数据组;变量组yi为迭代得到的数据组;变量组xi为各个未知数的值,默认初始值为0;变量i,j,k为循环变量;变量n为未知数个数;变量N为迭代次数。l=>k读入数据aij,bi,n24 毕业论文i=1,2,…,nmax|xi-yi|ky1=>xii=1,2,…,nk=N?≠输出y1,y2,…,yn=结束输出迭代失败标志图3.5雅可比迭代法程序流程图3.2.9高级方程识别函数本软件的另一特色是增加了,可识别含括号,+,-,*,/,^,等六种运算符的数学表达式,并进行运算处理。这六种运算符运算级别最高的是(),其次是*、/,最后是+、-。对这种表达式计算时的基本思想就是按照运算级别从高到低,从左往右依次运算。[4]建立双向链表的数据结构,每个结构体包含20个字符长度的变量,运算符和常数,以前该结构体的前驱指针,后驱指针。代码如下:typedefstructlist{floatn;/*常数*/24 毕业论文charname[20];/*变量名*/intnamelenth;/*变量名长度*/charc;/*运算符*/charbj;/*标记位*/structlist*prior;structlist*next;}ListSq;第一步,操作是讲作为字符形式存储的表达式,读入到双向链表的结构体中,对变量,运算符,常数进行标记。第二步,处理变量,去掉重复变量,标记好重负变量的出现位置,为后面替换变量数据做好准备。第三步,将经过两次处理后的字符表达式备份,对备份双向链表进行计算,因为计算是破坏性计算,计算过以后,此链表就不能在进行第二次计算,需从原链表复制后再计算。编写计算函数的思想,也是使用双向链表的目的之始。本算法是将含括号,变量,运算符的字符表达式,处理成只含常数,运算符,不含括号并存储在双向链表上结构体表达式。这样计算时只要从左向右一次计算,计算时需要探测该节点的下下一个节点的数据,首先一次循环处理掉所有的乘除运算,再进行一次循环处理加减元算,每次将计算好的结果放在计算时的第一节点,即修改原有节点的属性,将其变成常数,值为计算结果,并修改后驱指针,跳过已经计算好的节点。如遇括号,首先遇到的肯定是左括号,几下位置,继续探测右括号,如果在还没探测到右括号的时候,再一次探测到左括号,则修改标记位置,继续探测,指导探测到最深的一组括号位置,然后将此链表截下进行数值计算,返回后,讲左括号节点标记为常数,值为计算结果,以此类推,就可以讲表达式中的所有括号计算完。24 毕业论文4系统开发4.1设计界面和操作将主界面,插值问题,积分问题,微分问题,多元方程组求解问题等五个模块,制作成一个JAVApanel,再将每个panel添加的一个cardlayout布局容器里,建立menubar,添加menu来实现各个控制板间的跳转。各个模块的布局如下:(一)主界面:主界面相对比较简单,上方的菜单栏跟中间的四个功能键,功能一致。都是实现模块间的跳转,只是中间的四个功能键会在选择功能模块后消失。图4-1主界面模块图(二)插值问题:插值模块有两个算法,一个是拉格朗日算法,一个是牛顿插值算法,左面的六个TEXT栏是原始数据的输入栏,X为预测数据的输入栏,下方左边的大方框栏是原始数据的现实栏,右面是预测数据的现实栏。另外四个按钮的功能跟按钮上所写明的功能一致。24 毕业论文图4-2插值模块图(三)微分问题:微分模块中有四个微分算法,分别代表着不同精度,不同O(n)的四个算法,其中以四阶龙库算法精度最高,但算法时间效率最低,与之相对应的欧拉格式就有较高的时间效率,但精度相对交低,另外步长h也是跟精度密切相关的参数,步长越小,精度越高。图4-3微分模块图(四)积分问题:积分模块中只有一个复化辛普生算法。b,a为积分的上下积分区间,此算法默认函数为f(x)=sin(x)/x,n为步长,步长越小精度越高,最下面是一个输出面板。24 毕业论文图4-4积分模块图(五)多元方程组求解问题:多元方程组求解,采用的是雅可比迭代算法,当输入未知数个数后,下面的原始数据输入栏中会自动现实你需要输入的未知数系数,不过得注意的是,只有收敛才可以求解,所以一定要使未知数前的系数小于1。图4-5多元方程组求解模块图4.2软件测试与比较4.2.1测试4.2.1.1插值拟合问题测试输入初始数据X1=1,Y1=2;X2=2,Y2=4;X3=-1,Y2=-2;X4=4,Y4=8;预测当X=9,10,20,-3时,Y=18,20,-6;测试结果正确,见图4-1。24 毕业论文图4-1拉格插值数据测试图4.2.1.2微分问题测试以y’=y-2*x/y为例,初始条件为y(0)=1,则当步长H=0.1,X=1时,Y=1.7378,测试正确见图4-2。图4-2欧拉格式数据测试图4.2.1.3积分问题测试以f(x)=sin(x)/x为例,当步长N=100,积分区间为[1,2],[2,4],[-1,1]时,积分值分别为0.658,24 毕业论文0.157,1.892,测试正确见图4-3。图4-3复化辛普森算法数据测试图4.2.1.4方程问题测试以这个方程组为例,首先讲他转化为收敛性方程组即:得到答案x1=1.1,x2=1.2,x3=1.3,测试正确见图4-4。24 毕业论文图4-4多元方程组求解问题测试图4.2.2算法比较4.2.2.1欧拉格式,改进欧拉,校正欧拉和四阶龙库算法的精度比较以y’=y-2*x/y,初始条件为y(0)=1,则当步长H=0.1为例,预测当x=0.1,0.2,...,1.0时y=的值。运用欧拉格式计算,测试数据见表4-1。表4-1欧拉格式测试数据表xnyny(xn)xnyny(xn)0.11.1001.0950.61.5091.4830.21.1911.1830.71.5801.5490.31.2771.2640.81.6491.6120.41.3581.3410.81.7171.6730.51.4351.4141.01.7841.732注:表中yn为计算值,y(xn)为准确值,下同。由表4-1得,运用欧拉格式计算,精度在0.1以内。运用校正欧拉计算,测试数据见表4-2。表4-2校正欧拉测试数据表xnyny(xn)xnyny(xn)0.11.0951.0950.61.4861.4830.21.1841.1830.71.5521.5490.31.2661.2640.81.6161.61224 毕业论文0.41.3431.3410.81.6781.6730.51.4161.4141.01.7371.732由表4-2得,当运用校正欧拉进行计算时,微分精度就可以达到0.01。运用四阶龙库计算,测试数据见表4-3。表4-3四阶龙库测试数据表xnyny(xn)xnyny(xn)0.11.0951.0950.61.4831.4830.21.1831.1830.71.5491.5490.31.2641.2640.81.6121.6120.41.3411.3410.81.6731.6730.51.4141.4141.01.7321.732由表4-3得,当运用四阶龙库计算时,微分精度可以达到0.001甚至更高。24 毕业论文5结论本文分析了数值分析中的计算方法,学习其离散化的思想,结合计算机编程的原理,将一些人为不可求解的计算问题已经海量数据计算的问题,转化为软件形式计算,以提高数值分析在工程运算中的应用。在本文中主要做了如下的研究:首先介绍了JAVA语言和数值分析课程,介绍了数值分析中四个基本问题,插值问题,微分问题,积分问题,多元方程组求解问题,给出了每个问题的离散解决方案和软件实现方法,并比较了各类算法之间的优缺点。通过本次毕业设计,使我能够更加明白数值分析可以解决实际问题中会出现无法积分,无法微分的数学方程,取得有效范围内的近似值的方法,也使我的JAVA编程能力更上一个台阶,虽然其中还有很多不足,但我会在今后的学习工作中,更加完善这个工具。26 毕业论文参考文献:[1]Ciarlet,P.G.1978.TheFiniteElementMethodforElliptic Problems.Amsterdam:North-Holland.[2]Golub,G.H.,andC.F.VanLoan.1996.MatrixComputations,3rdedn.Baltimore,MD:JohnsHopkinsUniversityPress.[3]Hairer,E.S.P.Norsett(forvolumeI),andG.Wanner.SolvingOrdinaryDifferentialEquations,volumesI andII.NewYork:Springer.,1996[4]任现淼.计算机数学基础——数值分析[M].北京:中央广播电视大学出版社,1999.[5]郑慧娆,陈绍林,莫忠息等.数值计算方法[M].武汉:武汉大学出版社,2002.[6]李庆扬,王能超,易大义.数值分析[M].4版.北京:清华大学出版社,2001.[7]李庆扬.科学计算方法基础[M].4版.北京:清华大学出版社,2005.[8]张海藩.软件工程.清华大学出版社.2009.[9]邱加永.JSP基础与案例开发详解.清华大学出版社.2009.[10]王鹏.零基础学Java.机械工业出版社.2008.[11]刘威葳.JSP应用开发详解.电子工业出版社.2002.[12]武延军,黄飞跃.精通JSP编程技术.人民邮电出版社.2001.[13]柏亚军.JSP编程基础及应用实例集锦.人民邮电出版社.2001.[14]孟小峰.数据库系统导论.机械工业出版社.2000.[15]李振捷.JSP网站开发典型模块与实例精讲.电子业出版社.2006.[16]StevenHolzner.Java技术内幕.机械工业出版社.2002[17]刘爱晶.计算数学的发展历程.科技信息(学术版),2008年.26

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭