




已阅读5页,还剩120页未读, 继续免费阅读
(应用化学专业论文)科学仪器通用数据处理软件包的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 从现代科学仪器的发展趋势上来看,以测控技术和计算机技术相结合的现代虚拟化学 仪器系统已成为当今仪器发展的主流方向,它从根本上更新了仪器的概念,具有传统仪器 无法比拟的优势。软件技术越来越多的应用到仪器分析领域,如何迅速的开发出适合自己 要求的应用软件成为分析化学家面临的问题。 本文基于模块化应用的思想,实现了现代化学仪器通用软件平台中最基础、最重要的 先进算法软件包、数据管理软件包。先进算法软件包实现了线性方程的求解,积分和微分 运算,离散点的插值计算和函数拟合运算等的数据处理:数据管理软件包包括数据库操作 模块、数据记录集模块两个子模块。这些模块与其它模块一起共同构建了现代科学仪器通 用软件平台的基本框架,在系统内部统一标准的支持下,开发出可以实现高度自由组合应 用的通用标准数据处理软件包,从而极大地避免低水平的重复开发工作,为迅速建立标准 的软件模块从而构建应用于不同环境下的分析仪器软件打下坚实的基础。使用本软件包可 以大大节省了开发时间、降低开发难度,节约开发成本。 关键字:现代科学仪器、模块化、先进算法、数据管理、虚拟仪器 i i i a b s t r a c t a sat r e n do fm o d e r nc h e m i c a li n s t r u m e n ta n a l y s i s ,t h ed e s i g no f v i r t u a li n s t r u m e n t ( v i ) h a s b e c o m eo n eo ft h em a i nd i r e c t i o n st h a ta r er a d i c a l l yc h a n g i n g t h et h o u g h t sa b o u tm a n u f a c t u r i n g o ft h ei n s t r u m e n t s t h e r e f o r ei ti sb e c o m i n gm o r ea n dm o r ei m p o r t a n tt od e v e l o pau n i v e r s a l s o f t w a r ep l a t f o r mf o rs c i e n t i f i ci n s t r u m e n t s t h i sp a p e r i sa b o u tt h ed e s i g na n di m p l e m e n t a t i o n o f s u c ha p l a t f o r n 2t h a ti sc o n s i s t so f s i x m o d u l e s i ng e n e r a l ,t h ec o m m o nc a l c u l a t i o na l g o r i l u n si nc h e m i s t r yr e s e a r c hi n c l u d el i n e a re q u a t i o n g r o u p ,r e g r e s s i o na n a l y s i s ,i n t e g r a l ,d i f f e r e n t i a le q u a t i o n ,m a t r i x ,a n ds oo n - t h ec o r r e s p o n d i n g m o d u l ei n c l u d e sv a r i o u sf u n c t i o n sf r o mm a n y o ft h e s ea s p e c t s 。 t h ed a t u mm a n a g e m e n tm o d u l ei n c l u d e sd a t ai n q u i r e m e n t ,r e c o r dm a n a g e m e n t s u c ha sa d d i n g ,d e l e t i n g a n du p d a t i n g a n ds oo n a l lt h em a n i p u l a t i o n so nd a t a b a s ea r ed e s i g n e di n t ot w oo b j e c t o r i e n t e d c l a s s e s c c e n t d ba n dc c d b r s t t h e s em o d u l e s 。t o g e t h e rw i t ho t h e rm o d u l e s ,p r o v i d eaw i d er a n g eo f f u n c t i o n a lp a c k a g e se n a b l i n gm o r e f l e x i b l ea n ds t a b l ec o m p o s i t i o no f au n i v e r s a ls o f t w a r ep l a t f o r mf o ri n s t r u m e n ta n a l y s i s k e y w o r d s : s o f t w a r e d e v e l o p m e n tk i t ,v i r t u a li n s t r u m e n t ,o p e n d a t a b a s ec o n n e c t i v i t y a d v a n c e da l g o r i t h m ,d a t a b a s e y6 3 3 3 8 5 南开大学学位论文电子版授权使用协议 ( 请将此协议书装订于论文首页) 论文科学仪器通用数据处理软件包的设计与实现系本人 在南开大学工作和学习期间创作完成的作品,并己通过论文答辩。 本人系本作品的唯一作者( 第一作者) ,即著作权人。现本人同意将本作品 收录于“南开大学博硕士学位论文全文数据库”。本人承诺:已提交的学位论文 电子版与印刷版论文的内容一致,如因不同而引起学术声誉上的损失由本人自 负。 本人完全了解直珏太堂图量照差王健在:焦囝堂焦论塞曲蟹翌盘蓬。同 意南开大学图书馆在下述范围内免费使用本人作品的电子版: 本作品呈交当年,在校园网上提供论文目录检索、文摘浏览以及论文全文 部分浏览服务( 博士论文前2 4 页,硕士论文前1 6 页) 。公开级学位论文全文电 子版于提交1 年后,在校园网上允许读者浏览并下载全文。 注:本协议书对于“非公开学位论文”在保密期限过后同样适用。 院系所名称;化学学院 作者签名:划振波 学号:0l 041 1 日期:2 0 0 4 年5 月2 1 日 第1 章前言 当今世界变化万千,在科技方面最大的变化是计算机应用的发展促进信息社会的到 来,给整个人类带来巨大变革,影响深远。仪器,是人们用来测量、观测或在外部作用下 完成特定动作的设备。在2 0 世纪6 0 年代,出现数字式仪器。7 0 年代,随着计算机技术的 发展,出现包含计算机的智能仪器。8 0 年代中后期,随着集成电路、微型计算机及软件技 术的发展,又出现“虚拟仪器”,特别识近年来由于计算机软件技术和多媒体技术的迅猛 发展,虚拟仪器的应用范围正在日益扩大。 1 1 l 。1 现代化学仪器的发胜趋势 随着我国经济建设的发展,分析仪器产业的应用已经不仅仅限于科研开发,同时在经 济建设中也越来越发挥重要的作用。从信息处理的角度来看,科学仪器所分析的信号从单 独测量某个量( 离敞) ,到分析对织的港图( 一维) 到图像信号( 二维) 及多维数据( 动 态分析系统) ,所分析信号的构成同趋复杂,而且随着探测领域的拓展,从越来越严重的 干扰背景下提取有效信号也更加困难。我国科学仪器开发厂商已经意识到,以硬件为基础 的传统仪器已经很难满足科技创新的需要,以测控技术和计算机技术相结合的虚拟仪器系 统己成为当今仪器发展的主流方向。由于它是建立在以软件为关键技术的通用平台上,可 以很方便地改变软件配置来适应不同的需要功能更加灵活、强大,更适合化学研究和创 新的需要。软件技术在整个分析仪器技术构成中所占的比例不断增加,发挥我国计算机技 术的优势为仪器提供先进和专业化的软件技术支持是势在必行”“。 然而很多不同的分析仪器都需要对数据做类似的处理和分析,如平滑去噪、线性月 线性拟合、模式识别、数据管理及常见的运算模式等等。如果各类仪器都独自开发支持软 件必将是大量的低水平重复。 1 2 国内化学仪器的发展现状 我国科学仪器产业从5 0 年代末期到6 0 年代以仿制前苏联产品为主,直到改革开放前 相关产业发展都极为缓慢,基本处于停滞状态,而相关的计算机技术引进才是近二十年的 事,相关的科学仪器软什丌发也足近些年才逐步丌屁起来。然而山于没有贝体的统筹规划 支持软件的开发多数都是针对某一具体仪器的应用情况而针对性的临时开发,随着仪器的 不断更新,原有支持软件只好作废而重新开发,而且软件没有标准通用接1 2 1 ,无法在不同 类型仪器之间共享数据和共享运算和管理软件,低水平重复工作耗费了大量人力物力资 源,我国科学仪器的系统软件和应用软件可开发队伍还有待于形成,应用于科学仪器的软 件技术及软件产品难与国际接轨,也因此无法形成具有竞争力的产业。国外相关的软件开 发平台常见的有l a b v i e w 、t e s t p o i n t 等多种版本,但他们基本上都是属于工业组态软件, 适用于工业过程控制,或者针对小型仪表数据采集的系统。而对专业仪器软件平台中类似 傅立叶红外光谱仪数据系统、有机磁质谱数据系统等大型精密一起没有相应的接口或部件 支持,需要专业人员投入相当大的精力才能开发应用,而且价格昂贵,并且由于技术垄断 和保密,使系统得不到进一步的开发,无法满足技术人员的应用需要 3 4 3 8 。 1 3 研发内容及其意义 从当前世界分析仪器的发展趋势上来看,以测控技术和计算机技术相结合的虚拟仪器 系统己成为当今仪器发展的主流方向。虚拟仪器系统是把计算机能力和仪器功能结合在一 起的合乎逻辑的发展。软件是虚拟仪器的核心,是集成仪器的基础,虚拟仪器软件的一个 关键要求是能开发出可重用的代码模块【2 】。由于它是建立在以软件为关键技术的通用平台 上,可以很方便地改变软件配置来适应不同的需要,功能更加灵活、强大,更适合科学研 究和创新的需要。建立我国自己的科学仪器通用软件平台。带动我国分析仪器水平的提高, 是我国分析仪器产业实现跳跃式发展的一次难得的机会。而在系统内部统一标准的支持 下,开发可以实现高度自由组合应用的通用标准数据处理软件包,可以极大地避免这类低 水平的重复开发工作,为迅速建立标准的软件模块从而构建应用于不同环境下的分析仪器 软件平台打下坚实的基础,必将受到科学仪器厂商和科研开发人员的欢迎。 科学仪器通用数据处理软件包的模块构建设想及其实现是国家“十五”重点攻关 项目科学仪器通用软件平台的开发与技术研究的子课题,由中心实验室实现正是适 应以上需求应运而生。 第2 章通用数据处理软件包概述 通用数据处理软件包的模块构建设想及其实现是国家“t 五攻关”项目科学仪 器通用软件平台系统的子课题,主要由先进算法软件包、数字信号处理软件包、谱图数 据处理软件包、数据管理软件包、人工智能软件包、远程通讯及远程诊断软件包六部分构 成。 2 1 通用数据处理软件包分解: 2 1 1 各子软件包及其功能2 2 - 2 4 表2 1 为通用数据处理软件包的六个子软件包及其功能概述 浚鍪霪攀缫蒸飘隧劁i 粼缓蘸篱豢豢鬻燃麟蒸燃缫溪蒸鬣l 黧瑟l 鬟黧黧搿”“n m * 一黧* _ 一 徽缀鐾嚣熬霪雾霆g 瀚 捌漏b j 翻诹 黧;囊i 麓麟獬麓舔黼嚣蘩i 臻鞲黔鬻$ 瓣秘鹫瓣塞糍鞭罄端& ”蹦= 先进算法软件包的各个先进算法不是针对某个具体应_ | = | j 而实现,而是开发通 先进算法软件包 用的微分、积分、线性方程求解、回归分析、矩阵运算等功能以供其他模 块调用。 数字信号处理软件包为科学仪器通用软件平台提供通用的数字信号处理函数 数字信号处理软件包 库,其中包括模拟信号生成,信号时域处理,信号频域处理,数字滤波器设 计以及数字信号错误报告等功能模块。 谱图数据处理软件包的基本功能是对常见的洲量仪器的谱幽数据作数据处 谱图数据处理软件包 理,并加以分析,主要包括:平滑去噪、滤波、峰分析、峰面积计算等功能。 数据管理软件包主要目的是建立并维护到一个数据源的连接,并实现对数据 数据管理软件包 源的简单操作。该软件包实现的功能主要包括以v j l 个方面:数据源的连接、 断开连接、s q l 语句的执行、数据源属性状态的设置查询,错误处理等。 人j :智能软件包由人:f 神经网络模块羊l i 优化计算模块组成,其中各个模块义 人工智能软件包 包含多种算法。 远程通讯及远程诊断软 远程通讯及远程诊断软件包实现仪器软件平台在i n t e r n e t i n t e r a n t 通讯的功 件包 能,从而实现远程管理、控制、讨算、诊断等功能。 表2 1 2 2 2 各模块的处理过程 图2 1 描述了先进算法软件包、数字信号处理软件包、谱图数据处理软件包、数据管 理软件包、人工智能软件包、远程通讯及远程诊断软件包各个模块处理数据的过程3 叭。 3 2 2 先进算法软件包 图2 1 先进算法软件包由以下几部分组成: 算法包接口:实现和其他软件包的通信和数据输入输出。 线性方程组求解模块:用于大规模的线性方程的求解。主要包括:g a u s s s e i d e l 法、消 去法、非线性方程组。 插值方法模块:离散点的插值计算。主要包括:分段线性插值法、一元全节点插值法 数值积分模块:用于分析仪器积分或面积的求算。主要包括:梯形法、辛普森法、科 茨数、高斯法、蒙特卡洛法。 微分模块:用于斜率的求截或化学过程的模拟。主要包括:欧拉法、龙格一库塔法、 预测校正法、微分方程组、高阶微分方程、蒙特卡洛法。 拟合模块:用于曲线的求解和近似。主要包括:线性回归分析、多项式回归分析、曲 线修匀、非线性回归分析。 矩阵模块:用于求解和矩阵的运算。主要包括:j a c o b i 法、行列式求值法。 2 3 数字信号处理软件包 数字信号处理软件包由以下几部分组成: 分析信号平滑:主要包括:因子分析、信号求导、信号卷积与去卷积、卡尔曼滤波( k f ) 多重性光谱数据变换:主要包括:离散傅立叶变换、快速傅立叶变换、h a d a m a r d 变换 标准格式转换:主要包括:内部通讯格式定义、实验数据格式定义、文件格式定义、 数据库文件格式定义 信号模拟:主要包括:劳伦斯曲线信号模拟、高斯曲线信号模拟、蒙特卡罗模拟 4 2 4 谱图数据处理软件包 谱图数据处理软件包由以下几部分组成: 文件结构编码模块:主要包括:n 峰编码法、抽提特征峰编码、二进制编码、函数编码 数据质量评价模块:主要包括:信噪比评价、渐进因予分析法、主因子分析法、线性 规划法、非线性规划法 谱数据简化及优化模块:主要包括:窗口图解技术优化法、改良单纯形法、超改良单 纯形法、响应曲面法 谱数据检索模块:主要包括:标准数据库接口模块、特征值提取模块、关键值索引模 块、特征峰检索、相似检索 模式识别模块:主要包括:特征值提取模块、特征值压缩模块、偏差权重法、f i s h e r 比 率法、概率比率法、学习机械法、主成分分析法 相似系数模块:主要包括:明考斯基距离、马氏距离、兰氏距离、海明距离、 塔尼莫特距离 分析结果评价系统模块:主要包括:谱响应函数评价、谱优化函数评价、交互信息函 数评价 2 5 数据管理软件包 数据管理软件包由以下及部分组成: 数据库定义:主要包括:d d l 编译程序模块、安全性定义程序模块、完整性定义程序 模块 数据库存取:主要包括:查询处理程序模块、数据更新程序模块、交互式查询程序模 块、嵌入式查询程序模块 数据库并行处理:主要包括;系统初启处理程序模块、安全性控制程序模块、完整性 控制程序模块、事务管理程序模块、发控制程序模块、运行日志管理程序模块 数据组织、存储和管理:主要包括:缓冲区管理程序模块、数据组织、维护程序模块、 存取路径( 索引) 管理程序模块 数据建立、维护和其他:主要包括:批量数据处理装入模块、数据转储转发模块、数 据库恢复模块、数据库重组织模块、数据转换模块、通信模块 2 6 人工智能软件包 人工智能软件包由以下及部分组成 人工神经网络开发工具:辅助用户自行开发人工神经网络。提供可视化的工具,让用 户直观地设定神经网络的结构和初始权值。提供缺省的结构和初始值,用于处 理常见仪器的原始数据,排除噪声和干扰。 非线性优化工具:某些仪器,如液相色谱,其参数的选择较为复杂。本软件包提供工 具,帮助用户构造参数选择模块。考虑到开发平台的通用性,提供的优化工具 应与具体问题无关。 专家系统开发工具:包括推理机和规则库编辑工具。用户使用该工具可以生成自己的 规则库,建立针对特定问题的专家系统。可以用于仪器的自动控制、谱图解析、 故障诊断等。 数据挖掘工具:简化数据挖掘模块的开发。提供数据的比较、归类等功能。 数据建模工具:用于数据处理,如平滑、曲线拟和等,寻找数据间的依赖关系。 2 7 远程通讯及远程诊断软件包 远程通讯及远程诊断软件包由以下及部分组成: 通讯模块:标准通讯接口模块和传输层的接口。 标准通讯接口模块:为数据标准接口和网络操作模块提供网络通讯服务 标准数据接口模块:规范不同模块之间传输的数据 网络管理标准接口模块:定义标准管理操作语言 网络服务端模块:服务端功能提供 网络客户端模块:与客户端各功能提供接口 服务端c g i 模块:让用户通过w v c w 实现部分管理监控功能 远程诊断:让用户通过远程诊断仪器设备 网络安全模块:对本系统的网络服务提供安全保护( 防火墙) 网络用户认证模块:对用户进行验证 网络数据加密模块:对通过网络传输的数据进行加密保护 网络数据解密模块:对通过网络传输的加密数据进行解密 6 仪器远程控制模块:实现仪器软件控制部分的网络化 仪器远程调节模块:远程调节仪器的部分参数 专家通讯模块:提供用户实时通讯( 视频、音频、文字) 功能 我在本项目中主要从事先进算法软件包、数据管理软件包等部分的设计以及实现。 现就这几部分分别进行介绍。 第3 章先进算法软件包设计及其实现 3 1 先进算法软件包概述 3 1 1丌发背景 本软件包的基本任务是在为其他软件包提供数据处理服务,提供多个动态连接库,在 调用这些连接库时实现数据的基本处理和给出返回值及结果。 3 1 2功能分解 本软件包包括六个予模块,一个公共的接口,所有的模块都通过这个接口和其他的软 件包实现通讯和接门连接。水软件包实现了线性方程的求解,积分和微分运算,离敞点的 插值计算和函数拟合运算等的数据处理。 软件包的结构如表3 1 。 先 进 算 法 软 件 包 线性代数方程组求解模块 普通高斯消去法 列主元高斯消去法 全主元高斯消去法 插值方法模块 分段线性插值法 一元全节点插值法 数值积分模块 梯形法 定长s i m p s o n 法 变长s i m p s o n 法 高斯法 微分方程数值解法模块 一步定步长欧拉法 一步变步长欧拉法 预测一校正法 龙格一库他法 拟合模块 一元线性拟合 多元线性拟合 非线性曲线拟合 矩阵模块 j a c o b i 方法求特征值 行列式求值 表3 1 先进算法软件包组成结构 8 3 1 3 先进算法函数 表3 2 为先进算法软件包的函数列表 l 黼戮燃黼囊黼黼蕊麟鬻燃瀚溺鬻鬓删鬻黧鬻戮鬻蘩黧瓣鬟蒸鞫 s o i e o ug a u s sj i j 普通高斯消去法求解线性方程组。 s o l e q u g a u s s 2 _ ! | 列主元高蜥消女法求解线性方程纽。 s o l e q u g a u s s 3 用全主元高斯消去法求解线性方程组。 i n s e r t _ l a g r a n g e 拉格朗日一元全节点插值函数( 由已知离散仃点通过拉格朗日一元全 1 y 点插值求出有关竹点上的函数值) 。 i n s e nl i n e a r分段线性插值,己知n 个测量点,由分段线性插值法求插值点的函数 值。 i n t e g _ g a u s s 高斯积分法( 使用高斯求积公式对函数进行积分) 。 i n t e gm o n t e e a r l o 利用蒙特卡洛法对所给函数进行积分。 i n t e g _ s i m p s o n 定步长辛普生法求积分。 | i n t e g _ s i m p s o n n 变步长辛酱生法求积分。 i n t e g t r a p e z i a 梯形积分法( 使用梯形法对函数进行积分) 。 l i n e f i t 一元线性拟合,已知m 个测量点求其一元线性拟台曲线函数的系数。 m 1 1 1 f i t 多元线性拟台,己知m 组测蟥点求其多元线性拟台曲线函数的系数。 n l f 、u a s s n e w l o n 高斯- 牛顿法非线性拟合,己知p 个测量点、卅线性方栏、及对求知参数 的偏微分,求其1 i 线性拟台曲线函数的未知参数。 s o l d i t e q u _ e u l e zi n s t e p 一步定步跃敞拉法解微分方程。 s o l d i f e q u e u l e r a d v s 预测一校j f 法解一阶微分方程( 改进欧拉法) 。 s o l d i f e q u e u l e r o u t s t e p 变步跃欧拉法解微分方程。 s o l d i l e q u _ r u n g k u t a龙格一库塔法( 根据微分方朽! 求解当自变量变化时的函数值) 。 i e i g e n v a l u e _ j a c 。b ij a c o b i 方法求特征值。 r a n g e e v a i u a l i o “行列式求值,求1 1 1 3 _ 阶行列式的值。 表3 2 先进算法软件包的函数列表 9 3 i 4 先进算法软件包的特点 本软件包具有跨平台,运行速度快,占用物理内存少的特点。可以快速开发出适合自 己的专业系统。大大节省了开发时间、降低开发难度。可快速构架出合适的应用程序。节 约开发成本。 3 2 线性代数方程组求解模块 本模块主要目的是用于大规模的线性方程的求解。它由普通高斯消去法、列主元高斯 消去法、全主元高斯消去法3 个函数组成【引。 3 2 1 普通高斯消去法 3 2 1 1 算法原理【3 】: 用高斯消去法用来求线性代数方程组a x = b 的解。其中a 为r l * n 系数矩阵,x 为解 向量,b 为方程组得右端向量,a 和b 都是n 维列向量。a x = b 代表如下方程组: a l 忧1 4 - a 1 2 x 2 + a i 幽= b l a 2 1 x l - i - a 2 2 x 24 - - 口2 枥= b 2 m l 舶+ a a 2 x 2 + 幽,t h = b n 其矩阵形式是: c 1 1 ic 1 1 2 - 口2 la 2 2 一 口h la n 2 - x i x 2 : 洳 经n 次消元后,得到方程组如下 la 1 2 1 a 1 3 ” 口l 1 la 2 3 日2 n 。 1口“” 第n 行对应的方程为x n = b 。“ 代入n 1 可解出x 。1 如此类推,这一过程称为回代。 其计算公式归纳为: x l x 2 工3 : h b i 6 2 : b 。 b l “ 6 2 “ 6 3 ” b 月“ l o 、, 孙 j 白= b 月” x := 6 r ”一a 口”x ,( i = n - 1 ,一,托) j = i + j 注意:消元的时候,a i j k 1 为第k 次消元过程的主元。计算过程中可能非常小或者为零, 计算公式中处于分母,可能产生溢出,所以实际应用中会在k 列找一个绝对值不过分小 ( 由控制常数控制) 的元素,找到后通过交换调到k 行作为第k 次消元的主元。 这个函数的功能是接受方程组的阶数、增广矩阵的元素数组,利用高斯消去法求线 性代数方程组的解,将解向量存放到增广矩阵的元素数组第n + 1 列。根据控制常数要求, 判断线性方程组足否有斛。返回是否成功的信息。 32 1 2 算法描述: 函数体 接受并验证方程组的阶数、增广矩阵的元素数组、控制常数: f o r ( i n ti ;i 方程组阶数;i + + ) 选主元: i f ( 主元满足精度要求) 消元; 回代求解; e l s e 返回标准出t * 信息: ) ) 返回标准出错信息; ) 3 2 1 3 函数原型 参数 p m i n d o u b l e + 指向n + ( n + i ) 个元索的二维双精度浮点型数组,存放增广矩阵的元素目 数结束时,第n + l 列存放解向量( 用于输出) i n c o n s ti n t 方程组的阶数 i n d o u b l e 精度控制常数,通常较小 r e s u l t o u t d o u b l e + 指向n 个d o u b l e 连续空间,用于返回方程组的解 返回值 枚举变量s u c c e s s 成功:失败结果参考标准错误列表 备注 消元的时候,a i ( k 1 ) 为第k 次消元过程的主元。计算过程中可能非常小或者为零“ 算公式中处于分母,可能产生溢出,所以实际应用中会在k 列找,一个绝对值不过分 ( 由e p 控制) 的元素,找到后通过交换调到k 行作为第k 次消元的主元。 3 2 1 4 调用实例 d o u b l et e s t 4 l 5 】2 o 0 4 8 7 ,0 0 6 4 4 ,o 0 4 1 0 ,o 0 4 3 4 ,0 0 4 8 1 , 0 0 4 0 6 ,0 0 7 5 1 ,0 0 9 5 7 ,0 1 3 0 2 ,0 0 7 8 6 , o 0 0 8 1 ,o 0 1 0 7 ,o 0 13 7 ,o 0 0 0 0 ,0 0 0 8 0 , o 0 1 6 2 ,o 0 0 0 0 ,0 0 1 3 7 ,o 0 2 1 7 ,0 0 1 4 4 ; d o u b l er e s u l t 4 ; i n tn = 4 : i n t i ; i f ( ( i = s o l e q u _ o a u s s ( & t e s t 0 0 ,r t ,r e s u l t ,l e 一1 0 ) ) 3 2 s u c c e s s ) f o r ( i = 0 ;i n ;i h - ) c o u t r e s u l t m e n d l ; ) e l s e t o u t ”e r r o rn u m b e r :” i e n d l : ) 输出结果 测试结果:o 3 9 3 5 5 1 ,o 1 5 0 7 6 8 ,o 2 3 3 5 0 5 ,0 2 2 2 3 7 1 标准结果:o 3 9 3 5 ,o 15 0 7 ,0 2 3 3 5 ,0 2 2 2 3 3 2 2列主元高斯消去法 3 2 2 1 算法原理p j : 用高斯消去法用来求线性代数方程组的解。 本算法与高斯消去法的区别在于主元的选取。高斯消去法是在系数矩阵中第k 列第k 行以下选择一个绝对值不太小的元素作为主元,而本算法是在第k 列第k 行以下选择绝 对值最大的元素作为主元。 这个函数的功能是接受方程组的阶数、增广矩阵的元素数组,利用列主元高斯消去 法求线性代数方程组的解,将解向量存放到增广矩阵的元素数组第n + l 列。根据控制常 数要求,判断线性方程组是否有解。返回是否成功的信息。 3 2 2 2 算法描述: 函数体: 函数体 接受并验证方程组的阶数、增广矩阵的元素数组、控制常数: f o r ( i n ti ;i 方程组阶数;i + + ) 选主元: i f ( 主元满足精度要求) 消元; 回代求解: ) e l s e 返回标准出错信息: ) 返回标准出错信息; ) 3 _ 2 2 3 函数原型 j 薹i 纛露囊囊r i 薯誊跨越。 1 一一 薯鬟誊j i :1 【t s o i e q u 。g a u s s 2 t 基 臻赣r 蠢强蔓;曩誊甜。群曩;蠹善曩爱_ 舞一蠢l ;| 善曩掣i 羞_ 麓董j 鹫 ;1 1 。 垂蘸黉毒i 尊j u 麟酾m i 薯薯。一j 建毒麓董赫| ! - 曩:m 。,_ | ; - 鬻甍蒸i 、; 攀罂! 纂爨黪善i 誊蔓i 爱誊一 ;,;| 。毫誊:i 蠹量d o u b l e jr c s u l t = n u l l _ 善蓦曩_ 舞鬻一 ;i i叠o ;曩。 4 | j ; | :誊| i j 。 i | | i ;i j ;| ; 薹i i | 薹; j _ | 1 蠢d o u b l ee d = l c 一1 旷 蔓_ | j v 囊曩摹。i 乏; ? 。曩j 薯秘誊臻罐群。? 謦 j | :。“ | 曩蔼臻黪搿,* 强_ jo i 薯一 蔓一o 、 + v t 。、o7 t ! n 鹏。 置 , 7 。_ j * ,+一;_ i 嚣疆 : i,曩曩,、rr*ate i 1t t*r 参数 p m 【i n 】d o u b l e + 指向n + ( n + 1 ) 个元素的二维双精度浮点型数组,存放增广矩阵的元素函 数结束时,第n + l 列存放解向最( 用于输出) 【i n 】c o n s ti n t 方程组的阶数 i n d o u b l e 精度控制常数,通常较d , - r e s u l t o u t d o u b l e + 指向n 个d o u b l e 连续空间,用于返回方程组的解 返回值 枚举变量s u c c e s s 成功:失败结果参考标准错误列表 备注 3 2 2 4 调用实例 d o u b l et e s t 4 5 = o 0 4 8 7 ,o 0 0 0 4 ,o 0 4 1 0 ,0 0 4 3 4 ,o 0 4 8 1 , o 0 4 0 6 ,0 0 0 0 0 ,0 0 9 5 7 ,o 1 3 0 2 ,o 0 7 8 6 , 0 0 0 8 i ,0 0 0 0 0 ,o 0 1 3 7 ,o 0 0 0 0 ,0 0 0 8 0 , 0 0 1 6 2 ,o 0 0 0 0 ,0 0 1 3 7 ,o 0 2 1 7 ,o 0 1 4 4 ; d o u b l e r e s u l t 4 ; i n t n = 4 : i n t i ; i f ( ( i 。s o l e q ug a u s s 2 ( & t e s t 0 0 ,n ,r e s u l t ,l e 一1 0 ) ) 一s u c c e s s ) ( f o r ( i = o ;i n ;i + + ) c o u t r e s u l t i e n d l ; ) ) e l s e c o u t ”e r r o rn u m b e r :” e n d l ; ) 输出结果 测试结果:o 2 4 2 8 4 3 ,2 3 3 8 1 8 ,o 4 4 0 3 6 3 ,o 2 0 4 2 8 4 标准结果:o 2 4 3 ,2 3 3 8 ,o 4 4 0 ,o 2 0 4 返回值参见 标准错误列表 3 2 _ 3 全主元高斯消去法 3 2 3 1算法原理【3 1 : 全主元消去法是在第k 次消元矩阵的全部范固内选择绝对值最大的元素作为主元, 不仅要做行的交换还需要做列的交换。列的交换过程中解向量中各元素实际上都跟着交 换了位置。线性代数方程组的解是乱序的,需要专门的整序程序段,这是其区别于列主 元消去法的重要特点。 这个函数的功能是接受方程组的阶数、增广矩阵的元素数组,利用全主元高斯消去 1 6 法求线性代数方程组的解,将解向量存放到增广矩阵的元素数组第n + l 列。根据控制常 数要求,判断线性方程组是否有解。返回是否成功的信息。 3 2 3 2 算法描述: 函数体 接受并验证方程组的阶数、增广矩阵的元素数组、控制常数; f o r ( i n ti ;i 方程组阶数;i 十+ ) 选主元: i f 主元满足精度要求) 消元; 回代求解: ) e l s e 返回标准出错信息; ) ) 返回标准出错信息; 3 2 3 3 函数原型 _ 一鞘i n ts o l e q u g a u s s 3f |誊。_ o ,弧、“一,。一- ;1 ;j 一:_ c _ 蔓点曩i | _ _ o 量墨o :;_ _ _ _ 羔 薯;_ i i 。誊i - - _ _ _ 一蔓置一? 一蠹 一誉羞。d o 豳亩m , i 。 o i 委- 。曩。 。曩i 誊誊;薷。一i _ _ _ _ | ”薯 | j 。掣萎誊_ _ i ;i 鱼_ 洲善警置薯 | _ _ _一 一? 誊* :j t :;_ ; ,j _ ;,一 = ; j : 、 o 曩量戡j o s 董i n t m ,i “一;_ 曩 i * j 。曩_ | | j 曩爱鳓墨誊曩萎蓦曩: 一v 、:_ _ ;曩善誓誊;一。i ”一o j 。i 删誊 0 j i d o u b l e * r e s u l t = n u l l 。 臻 _ ? ” j : z ;鬻i d o u b l e e p = l e 一- 0 kj :| j l 一。一0 鞭曩i m j 。i 、j 一一 _ _ _ 一。i 一曩 _ ;_ _ _ :、_ _ ; = j 一 一* 一 1 7 参数 p m 【i n 】d o u b l e + 指向1 1 ( n + 1 ) 个元素的二维双精度浮点型数组,存放增广矩阵的元素函 数结束时,第n + l 列存放解向量( 用于输出) 【i n 】c o n s ti n t 方程组的阶数 i n 】d o u b l e 精度控制常数,通常较小 r e s u l t o u t 】d o u b l e + 指向n 个d o u b l e 连续空间,用于返回方程组的解 返回值 枚举变量s u c c e s s 成功:失败结果参考标准错误列表 备注 全主元消去法比列主元消去法更有利于提高解的精度,但是计算复杂,耗时多。 全主元消去法是在第k 次消元矩阵的全部范围内选择绝对值最大的元素作为主元,不 仅要做行的交换还需要做列的交换。列的交换过程中解向量中各元素实际上都跟着交 换了位置,线性代数方程组的解是乱序的,需要专门的整序程序段,这是其区别于列 主元消去法的重要特点。 3 2 3 4 调用实例 d o u b l et e s t 4 1 1 5 1 = 0 0 4 8 7 ,o 0 0 0 0 ,0 0 4 10 ,0 0 4 3 4 ,o 0 4 8 1 , o 0 4 0 6 ,o 0 0 0 0 ,0 0 9 5 7 ,0 13 0 2 ,o 0 7 8 6 , o 0 0 8 1 ,0 0 0 0 0 ,0 0 1 3 7 ,o 。0 0 0 0 ,0 0 0 8 0 , 0 0 1 6 2 ,o 0 0 0 0 ,0 0 1 3 7 ,o 0 2 1 7 ,0 0 1 4 4 ; d o u b l er e , 。u l t 4 ; i n t n = 4 : l i l t i ; i f ( ( i = s o l e q u _ g a u s s 3 ( & t e s t 0 0 ,n ,x e s u l t ,l e - 1 0 ) ) 一s u c c e s s ) f o r ( i = 0 ;i n i i + + ) c o m r e s u l t i e n d l ; ) e l s e c o u t e r r o rn u m b e r ” i e n d i : 输出结果 参见 测试结果:返回 n o s o l v e ,方程无解 标准结果:方程无解 标准错误列表 3 3 插值方法模块 本模块主要目的是用于离散点的插值计算。它由一元全节点插值法、分段线性插值法 1 9 2 个函数组成。 3 3 1 拉格钢黾一元全节点插值函数 3 3 1 1 算法原理【2 1 : 知道函数f ( x ) 在平面上的一些离散点的值( ( x i ,“x i ) ) ,i = o 1 n 假设忽略离散点的 实验误差,可以把实验散点作为插值节点,通过拉格朗日一元全节点插值求出有关点上 y 3 吾n y ,皿n 、锚】 的函数值。其计算公式为: 这个函数的功能是接受离散点个数、横坐标、纵坐标、要插值点的横坐标,计算 输出插值点的纵坐标。同时返回是否成功的信息。 3 3 1 2 算法描述 函数体: 接受离散点个数、横坐标、纵坐标、要插值点的横坐标 利用双重循环计算插值点的纵坐标: 返回标准出错信息; ) 3 3 1 3 函数原型 e r r o r s i n s e r t _ l a g r a n g e ( 一曩= 蠹; | ;i 。 ;_ i n tn , _ i一州叠曩一; 一 t i j 量d o u b l e p x o , 。誓 。 i :| _ ,i 0 囊d o u b l e 枣p y o , 。 _ i ;: i 一 j 警薹量d o u b l e x ,薯一t s 。j 譬董蔓焉,舞一墨 一i - _ | :j d o u b l e 。p y 参数 以 i n i n t 节点个数 i n d o u b l e + 指向存放这r 1 个节点横坐标值的数组首地址 i n d o u b l e + 指向存放这n 个节点纵坐标值的数组首地址 i n d o u b l e 一个插值点的横坐标值 o u t d o u b l e + 指向存放插值点纵坐标值的地址 返回值 i n t0 成功其他失败 备注 3 3 1 4 调用实例 # i n c l u d e # i n c l u d e # d e f i n e m a x n6 六个x 值 # i n c l u d e ”i n s e r t _ l a g r a n g e h ” v o i d m a i n ( ) ( d o u b l e p x 0 m a x n = - 1 ,2 ,3 ,4 ,5 ,6 ) d o u b l e p y 0 m a x n ; f o r ( i n t i 2o ;i m a x n ;i + + ) 计算y 的值 p y o i 】_ f ( p x o 【i ) ; c o u t “”y 2x + x ; e n d l ;输出y 的值 f o r ( i 2o ;i m a x n ;i + 十】 c o u t p y 0 i ”,” p x 0 i e n d l ) c o u t “e n d l “”l a g rx = 2 5 ”“e n d l ;以x _ 2 5 作为试验 d o u b l e x = 2 5 ,y ; d o u b l e + p y ;p y = & y ; i f ( i n s e r t _ l a g r a n g e ( m a x n ,p x 0 ,p y 0 ,x ,p y ) i _ o ) 判断是否运算成功( r e t u r n0 ) r e t u r n ; c o u t + p y ” x e n d l ; d o u b l ef ( d o u b l ex ) y 2 f ( x ) “2 r e t u m ( x + x ) ; 输出结果 6 2 5 参见 基本算法拉格朗日一元全节点插值函数i n s e r t _ l a g r a n g e 3 3 2 分段线性插值法 3 3 2 1 算法原理【8 】【9 : 实际问题中,知道函数f ( x ) 在平面上的一些离散点的值 ( x i ,f ( x i ) ) i = o ,1 ,n 而不能 给出f ( x ) 的具体解析表达式,或者f ( x ) 的表达式过于复杂而难以运算。这时候我们需要 用近似函数f ( x ) 来逼近函数f ( x ) ,其中可以采用的方法有插值。 y 当x o 不等于x l 时,若用两点式表示这条直
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权职工培训心得课件
- 钻井设备安全知识培训课件
- 2025年党政干部选拔面试题难度分析
- 笋芽儿课文教学课件
- 知识产权年度培训计划课件
- 2025年安全员伦理与道德测试题及答案
- 2025年文物保护师初级笔试题集
- 2025年高级增材制造设备操作员(三级)技能认定理论考试题(附答案)
- 知识产权培训课堂内容课件
- 知识产权培训结业课件
- T/CAQI 27-2017中小学教室空气质量规范
- 病原微生物实验室安全课件
- 私人光伏安装合同协议
- 电化学微针的应用进展
- 餐饮油烟防治管理制度
- 小学语文教科书三年级上册第五单元(习作单元)教材解读和教学目标
- 湘教版五年级科学上册全册教案
- 2025年生猪屠宰兽医卫生检疫人员考试题(附答案)
- 《班主任如何说话学生才喜欢听》
- 实验室危险化学品管理与职责
- 2025秋季美术教学方法与计划
评论
0/150
提交评论