(应用化学专业论文)标准数据处理软件包—算法、通讯与数据管理.pdf_第1页
(应用化学专业论文)标准数据处理软件包—算法、通讯与数据管理.pdf_第2页
(应用化学专业论文)标准数据处理软件包—算法、通讯与数据管理.pdf_第3页
(应用化学专业论文)标准数据处理软件包—算法、通讯与数据管理.pdf_第4页
(应用化学专业论文)标准数据处理软件包—算法、通讯与数据管理.pdf_第5页
已阅读5页,还剩114页未读 继续免费阅读

(应用化学专业论文)标准数据处理软件包—算法、通讯与数据管理.pdf.pdf 免费下载

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

文档简介

摘要 从当前世界分析仪器的发展趋势上来看 以测控技术和计算机技术相结合的 虚拟仪器系统已成为当今仪器发展的主流方向 由于它是建立在以软件为关键技 术的通用平台上 可以很方便地改变软件配置来适应不同的需要 功能更加灵活 强大 更适合科学研究和创新的需要 开发研制通用标准数据处理软件包 建立 我国自己的科学仪器通用软件平台 将是建立上述软件平台的基石 通用标准数 据处理软件包分为先进算法软件包 数字信号处理软件包 谱图数据处理软件包 数据管理应用软件包 远程通讯软件包 人工智能软件包等六个模块 本论文着重介绍本人负责设计与开发的先进算法 数据管理与应用 远程通 讯等三个模块 以及整个通用标准数据处理软件包的二进制封装与发布 先进算法模块包括线性方程组求解 积分与微分 插值 线性及非线性拟合 等子模块 数据管理与应用模块包括数据库操作和数据记录集两个子模块 分别实现了 数据库的打开 关闭 查询 数据源属性 状态的设置 查询 以数据记录集的打开 关闭 数据的增删 游标的定位等操作 远程通讯模块包括套接字子模块 套接字地址子模块和异常处理子模块 分 别实现了套接字的创建与销毁 套接字的连接与监听 数据的传输与接收 套接 字地址的构造与转换 以及异常处理等功能 全部模块均使用c c 语言丌发 并封装为动态链接库形式 每个模块均可 独立发布并提供相关功能 关锾 字 仪器分析 数据处理软件包 先进算法 数据管理 远程通讯 a b s t r a c t w i t ht h e d e v e l o p m e n t o fi n f o r m a t i o n t e c h n o l o g y a n d c o m p u t e r s c i e n c e i n s t r u m e n ta n a l y s i si s e n t e r i n gan e we r a w i t hc o m p u t e r s t h ea r c h i t e c t u r e o ft h e a n a l y t i c a l i n s t r u m e n t sh a v eb e e n g r e a t l ys i m p l i f i e d a n d t h e i r p e r f o r m a n c e s f u n c t i o n a l i t i e s r e l i a b i l i t i e sh a v eb e e ng r e a t l yi m p r o v e d u s u a l l yt h ev i r t u a lm a c h i n ei s b u i l to nt h eu n i v e r s a ls o f t w a r ep l a t f o r m i tc a nb e e a s i l ya d a p t e d t od i f f e r e n tn e e d sb y s i m p l ym o d i f y i n g t h ec o n f i g u r a t i o n sw h i c hm a k e t h ef u n c t i o n sm u c hs t r o n g e ra n dm o r ef l e x i b l e i tw o u l db em o r es u i t a b l et ot h e s c i e n t i f i cr e s e a r c ha n d d e v e l o p m e n t t h ed e v e l o p m e n to ft h eu n i v e r s a l s t a n d a r d p a c k a g e f o rd a t a p r o c e s s i n gi st h eb a s eo f t h e p l a t f o r m t h i sp a p e ri sm a i n l ya b o u tt h ed e s i g na n d d e v e l o p m e n t o ft h eu u i v e r s a ls t a n d a r d p a c k a g e f o rd a t a p r o c e s s i n g e s p e c i a l l y o nt h et h r e em o d u l e st h a t t h ea u t h o r p a r t i c i p a t e d a s a g r o u p l e a d e ra n dac h i e fd e v e l o p e r a d v a n c e d a l g o r i t h m d a t a m a n a g e m e n t a n dd i s c t a n c ec o m m u n i c a t i o n t h ee n c a p s u l a t i o na n dp u b l i c a t i o no ft h e m o d u l e sa r ea l s oi n v o l v e d t h ea d v a n c e d a l g o r i t h mm o d u l ep r o v i d e st h e f u n c t i o n so nl i n e a r e q u a t i o n s i n t e g r a t i o na n dd i f f e r e n t i a l i n t e r p o l a t i o n l i n e a ra n dn o n l i n e a rr e g r e s s i o na n df i t t i n g s e t c d a t am a n a g e m e n tm o d u l ep r o v i d e st h ef u n c t i o n so nd a t a b a s ea n dr e c o r ds e t d e s i g n s q le x e c u t i n gp r o p e r t i e ss e t t i n ga n dq u e r y e t c d i s c t a n c ec o m m u n i c a t i o nm o d u l e p r o v i d e s t h ef u n c t i o n so ns o c k e t c r e a t i n g c l o s i n gb i n d i n g c o n n e c t i n g l i s t e n i n ga c c e p t a n c ea n dd a t at r a n s f e r e t c a l lt h em o d u l e sa r ed e v e l o p e d u s i n gc c l a n g u a g ea n de n c a p s u l a t e di n t od l l s d y n a m i cl i n kl i b r a r y e a c hm o d u l ep r o v i d e st h e i rf u n c t i o n si n d e p e n d e n t l y k e y w o r d s i n s t r u m e n t a n a l y s i s d a t ap r o c e s s i n g a d v a n c e d a l g o r i t t u n d a t a m a n a g e m e n t d i s t a n c ec o m m u n i c a t i o n 6 3 3 3 8 4 j 南开大掌学位论文电子版授权使用协议 请将此协议书装订于论文首页 论文 标准数据处理软件包一算法 通讯与数据管理 系本人 在南开大学工作和学习期间创作完成的作品 并已通过论文答辩 本人系本作品的唯一作者 第一作者 即著作权人 现本人同意将本作品 收录于 南开大学博硕士学位论文全文数据库 本人承诺 已提交的学位论文 电子版与印刷版论文的内容一致 如因不同而引起学术声誉上的损失由本人自 负 本人完全了解 直珏盔堂国盅堕差王握叠 焦旦堂僮论塞鲍筐堡办遗 同 意南开大学图二l 馆在下述范围内免费使用本人作品的电子版 本作品呈交当年 在校园网上提供论文目录检索 文摘浏览以及论文全文 部分浏览服务 博士论文前2 4 页 硕士论文前1 6 页 公开级学位论文全文电 子版于提交1 年后 在校园网上允许读者浏览并下载全文 注 本协议书对于 非公开学位论文 在保密期限过后同样适用 院系所名称 化学学院中心实验室 作者签名 彩碰 学号 010409 日期 2 0 0 4 年5 月1 8 日 第一章 项目背景 1 1 国内外相关技术的现状 我国科学仪器 2 3 f 4 1 产业从5 0 年代末期到6 0 年代以仿制前苏联产品为主 直到 改革开放前相关产业发展都极为缓慢 基本处于停滞状态 而相关的计算机技术引进 才是近二十年的事 相关的科学仪器软件开发也是近些年才逐步开展起来 然而由于 没有具体的统筹规划 支持软件的开发多数都是针对某一具体仪器的应用情况而针对 性的临时开发 随着仪器的不断更新 原有支持软件只好作废而重新开发 而且软件 没有标准通用接口 无法在不同类型仪器之间共享数据 共享运算和管理软件 低水 平重复工作耗费了大量人力物力资源 我国科学仪器的系统软件和应用软件开发队伍 还有待于形成 应用于科学仪器的软件技术及软件产品难与国际接轨 也因此无法形 成具有竞争力的产业 国外相关的软件开发平台 5 1 6 1 4 2 1 常见的有l a b v i e w t e s t p o i n t 等多种版本 但它 们基本上都是属于工业组态软件 适用于工业过程控制 或者针对小型仪表数据采集 的系统 而专业仪器软件平台中类似傅立叶红外光谱仪数据系统 有机磁质谱数据系 统等大多没有相应的接口或部件支持 需要专业人员投入相当大的精力才能开发应 用 导致价格昂贵 并且由于技术垄断和保密 使系统得不到进一步的开发 无法满 足技术人员的应用需要 6 7 8 1 2 市场需求 随着我国经济建设的发展 分析仪器产业的应用已经不仅仅限于科研丌发 在经 济建设中也越来越发挥重要的作用 从信息处理的角度来看 科学仪器所分析的信号 从单独测量某一个量 离散 到分析对象的谱图 一维 到图像信号 二维 及多 维数据 动态分析系统 所分析信号的构成日趋复杂 而且随着探测领域的拓展 从越来越严重的干扰背景下提取有效信号也更加困难 我国科学仪器开发厂商已经意 识到 以硬件为基础的传统仪器已经很难满足科技创新的需要 软件技术在整个分析 仪器技术构成中所占地比例不断增加 发挥我国计算机技术的优势为仪器提供先进和 专业化的软件技术支持势在必行 然而很多不同的分析仪器都需要对数据做类似的处 理和分析 如平滑去噪 线性 非线性拟合 模式识别 数据管理及常见的运算模式 等等 9 l 如果各类仪器都独自开发支持软件必将是大量的低水平重复 开发可以实 现高度自由组合应用的通用标准数据处理软件包 可以极大地避免这类低水平的重复 开发工作 为迅速建立标准的软件模块从而构建应用于不同环境下的分析仪器软件平 台打下坚实的基础 必将受到科学仪器厂商和科研开发人员的欢迎 l 2 第二章 通用标准数据处理软件包的系统设计 2 1 系统的总体设计方案 通用标准数据处理软件包的设计遵循了通用 复用的原则 采用自顶向下 u pt o d o w n 的设计方法 进行设计 整个系统分为六个子软件包 先进算 法软件包 数字信号处理软件包 谱图数据处理软件包 数据管理应用软件包 远程通讯软件包 1 6 1 7 人工智能软件包 2 2 系统的模块设计概要 系统的模块结构如下图所示 其中 先进算法软件包为支撑软件包 提供了一系列底层的算法 供其它软件包 明用 数字信号处理和卅图数据处理软件包为核心算法包 提供了与信号 谱图处理 密切相关的一系列算法 数据管理应用与远程通讯软件包为辅助软件包 主要用于与 先进算法 数字信号处理以及谱图数据处理软件包快速组合 灵活搭建分析仪器数据 处理软件 人工智能软件包为可选软件包 主要为用户白行 发人工智能模块提供支 持 2 3 模块开发小组的分工与协作 整个开发团队共包括两个小组 各负贵三个软件包的开发 组内成员间进行交叉 测试 本人负责了先进算法 数据管理与应用以及远程通讯等三个软件包的整体设计 及部分代码工作 并与组内其他成员进行了协调以及交叉测试 1 4 1 3 最后对整个软 件包进行了二进制封装 9 1 1 1 0 1 本文的后续内容将重点介绍先进算法 数据管理与应用以及远程通讯等三个软件 包的设计与实现 2 4 先进算法 数据管理与应用以及程通讯软件包的设计 遵照通用标准数据处理软件包的总体设计 先进算法 数据管理与应用以及远程 通讯等三个软件包也都按照通用 复用的原则 采用自顶向下 u p t od o w n 的方法进 行了设计 在结构上细分为若干子模块 其模块划分以及各自预期实现功能如下 先进算法软件包的基本目标是在为其他软件包提供数据处理服务 提供多个动态 连接库p l 在调用这些连接库时实现数据的基本处理并给出返回值及结果 该软件 包包括 线性代数方程组求解 插值方法 数值积分 微分方程数值解 线性及非线 性拟合等子模块 数据管理与应用软件包的基本目标是为用户提供一套统一的 易于编程的通用数 据库接口 从而实现对各种不同数据库的访问 管理 该软件包包括 数据库操作 子模块和数据记录集子模块 远程通讯软件包的基本目标是为用户提供一套易于编程的远程通讯接口 3 7 3 8 3 9 4 l 以简化用户在实现远程仪器控制以及程序间的远程通讯时的工作 该 软件包包括 套接字子模块 套接字地址子模块 异常处理子模块等三个模块 第三章先进算法软件包的设计与实现 3 1 先进算法软件包的设计 3 1 1 先进算法软件包的基本目标与体系结构 先进算法软件包的基本目标是在为其他软件包提供数据处理服务 2 3 1 2 9 3 0 3 l 3 2 3 3 f 3 4 提供多个动态连接库 在调用这些连接库时实现数据的基本处理并给出返 回值及结果 3 5 1 1 36 1 软件包一共由五个部分 共1 7 个单元组成 包括线性代数方程组 求解 插值方法 数值积分 微分方程和拟合五个子模块 分别实现线性方程的求解 积分和微分运算 离散点的插值计算以及函数拟合运算 在每个子模块内 提供了若 干具体的方法来实现预期功能 此外我们还提供了一套统一的错误处理机制 来实现 对程序运行时错误的监控与处理 先进算法软件包的体系结构图如下所示 3 1 2 各子模块预期实现的功能 3 1 2 1 线性代数方程组求解模块功能描述 普通高斯消去法 高斯消去法用来求线性代数方程组a x b 的解 列主元高斯消去法 函数与高斯消去法函数的区别在于主元的选取 也是用来求解线性方程组的解 全主元高斯消去法 全主元消去法是在第k 次消元矩阵的全部范围内选择绝对值最大的元素作为 主元 不仅要做行的交换还需要做列的交换 同样用来求解线性方程组 3 1 2 2 插值方法模块功能描述 分段线性插值法 通过离散点的值 进行分段线性插值来求其他点的近似值 拉格朗日一元全节点插值函数 由已知离散节点 通过拉格朗日一元全节点插值求出有关节点上的函数值 3 1 2 3 数值积分模块功能描述 梯形积分法 使用梯形法对函数进行积分 变步长辛普生法 已知函数 在给定区间上求积分 高斯积分法 使用高斯求积公式对函数进行积分 定长s i m p s o n 积分法 使用s i m p s o n 法 辛普森法 对函数进行积分 变步长辛普生法 使用变步长s i m p s o n 法 辛普森法 对函数进行积分 蒙特卡罗法积分 使用蒙特卡罗法对函数进行积分 3 1 2 4 微分方程数值解法模块功能描述 一步变步长欧柁法 求y f x y 当y a y o 在欧拉法的基础上 经步长折半前后两次计算在区问 a b 上的数值解 一步定步长欧拉法 采用欧拉法 求y f x y 当y a y o 在区间 a b 上的数值解 预n 校正法 改进欧拉法 结合欧拉公式的向前公式 梯形公式计算微分方程 在提高计算精度求解函数 在一定区间的值 龙格一库塔法 根据微分方程求解当自变量变化时函数值 3 i 2 5 拟合模块功能描述 o 一元线性拟合 根据给出的一组数据 x y 分析其线性关系 多元线性拟合 根据给出的 组数据 x l x 2 y 分析其线性关系 非线性拟合函数 对非线性函数进行曲线拟合 3 1 2 6 错误处理 定义一组统一的返回值 误状态 错误状态 s u c c e s s e r r o r f u n c t i o n c a i l f a i l l e d n o c o n v e r g e n c e i n p u t i l l e g a l i n p u t n o t e n o u g h n o s o l v e m e m o r y r u n o u t d i v i d e d b y z e r o 函数在运行出错时返回特定的值 返回值应包括以下错 错误描述 函数运行成功 函数运行失败 函数调用失败 不收敛 输入值不合要求 数据量不足无法求解 在给定精度下无解 内存不足 除0 错误 3 1 3 各子模块函数列表 3 1 3 1 线性代数方程组求解模块函数列表 子模块函数名前缀 s o l e q u 函数描述函数名 普通高斯消去法 s o l e q u g a u s s 列主元高斯消去法 s o l e q u g a u s s 2 全主元高斯消去法 s o l e q 也g a u s s 3 3 1 3 2 插值方法模块函数列表 子模块函数名前缀 i n s e r t 函数描述函数名 分段线性插值法 i n s e r t l i n e a r 一元全节点插值法 i n s e r t l a g r a n g e 3 1 3 3 数值积分模块函数列表 子模块函数名前缀 i n t e g 函数描述函数名 梯形积分法 i n t e gt r a p e z i a 高斯积分法 i n t e g g a u s s 定长s i m p s o n 积分法 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 m o n t e c a r l o 3 1 3 4 微分方程数值解法模块函数列表 予模块函数名前缀 s o l d i t e q u 函数描述函数名 一步变步长欧拉法 s o l d i f e q u e u l e r l n s t e p 一步定步长欧拉法 s o l d i f e q u u l e r o u t s t e p 预测一校正法 改进欧拉法 s o l d i f e q u e u l e r a d v 龙格一库塔法 s o l d i f e q u r u n g k u t a 3 1 3 5 拟合模块函数列表 子模块函数名前缀 无 函数描述函数名 一元线性拟合 l i n e f i t 多元线性拟合m u l f i t 高斯 牛顿法非线性拟合 n l f t g u a s s n e w t o n 3 2 先进算法软件包的实现 本人在该模块中负责了模块的总体设计以及部分编码工作 并对本组其他成员的 代码进行了交叉检查 其中编码工作包括 线形代数方程组求解模块全部方法 以及 数值积分模块的默特卡洛法私 分 3 2 1 线性代数方程组求解模块 3 2 1 1 普通高斯消去法 旌丛 指向存放增广矩阵的元素数组d o u b l e 类型 函数结束时 数组第n l 列存放解向量 方程组的阶数整数型变量 精度控制常数d o u b l e 类型 筮笪 方程组的解 d o u b l e 类型 返叵僮 标准出错信息 参考标准出错信息说明 冀鲎厘堡 用高斯消去法用来求线性代数方程组a x b 的解 其中a 为n n 系数矩阵 为解向量 b 为方程组得右端向量 a 和b 都是n 维列向量 a x b 代表如下方程 组 玎1 x l a 1 2 x 2 日i 幽 b l a 2 l x i q 2 2 x 2 n 2 m b 2 a n l x l 口n z x 2 血幽 b 月 其矩阵形式是 a l i口1 2 日2 1a 2 2 0 n la n 2 经n 次消元后 得到方程组如下 a 1 3 a 2 3 l x l x 2 x 3 x n 刳 b 一 6 2 1 6 b 1 1 第n 行对应的方程为x n b 代入n 一1 可解出x 1 如此类推 这一过程称为回代 其计算公式归纳为 勘 b 月 蔚 一 1 一 i n 1 门j j i l 注意 消元的时候 a k 1 为第k 次消元过程的主元 计算过程中可能非常小或 者为零 计算公式中处于分母 可能产生溢出 所以实际应用中会在k 列找一个 绝对值不过分小 由控制常数控制 的元素 找到后通过交换调到k 行作为第k 次消 元的主元 这个函数的功能是接受方程组的阶数 增广矩阵的元素数组 利用高斯消去法 求线性代数方程组的斛 将解向量存放到增广矩阵的元索数纽第n l 列 根据控 制常数要求 判断线性方程组是否有解 返回是否成功的信息 i l c 薹 嘶 胁 翰 鑫蕉蕴鲨 函数体 接受并验证方程组的阶数 增广矩阵的元素数组 控制常数 f o r i n ti o i 方程组阶数 i 选主元 i f 主元满足精度要求 消元 回代求解 e l s e 返回标准出错信息 返回标准出错信息 3 2 1 2 列主元高斯消去法 趁丛j 指向存放增广矩阵的元素数组d o u b l e 类型 函数结束时 数组第n 1 列存放解向量 方程组的阶数 整数型变量 精度控制常数d o u b l e 类型 筮笪 方程组的解 d o u b l e 类型 堑包筮 标准出错信息 参考标准出错信息说明 差氆塑 用高斯消去法用来求线性代数方程组的解 本算法与高斯消去法的区别在于主元的选取 高斯消去法是在系数矩阵中第k 列第k 行以下选择一个绝对值不太小的元素作为主元 而本算法是在第k 列第k 行以下选择绝对值最大的元素作为主元 这个函数的功能是接受方程组的阶数 增广矩阵的元素数组 利用列主元高斯 消去法求线性代数方程组的解 将解向量存放到增广矩阵的元素数组第n l 列 根据控制常数要求 判断线性方程组是否有解 返回是否成功的信息 墓些垫亟 函数体 函数体 接受并验证方程组的阶数 增广矩阵的元素数组 控制常数 f o r i n ti i 方程组阶数 i 选主元 i f 主元满足精度要求 消元 回代求解 e l s e 返回标准出错信息 返回标准出错信息 3 2 1 3 全主元高斯消去法 笾丛 指向存放增广矩阵的元素数组d o u b l e 类型 函数结束时 数组第n l 列存放解向量 方程组的阶数整数型变量 精度控制常数d o u b l e 类型 趁笪 方程组的解 d o u b l e 类型 篮隧 标准出错信息 参考标准出错信息说明 墓鲎氲璺 全主元消去法是在第k 次消元矩阵的全部范围内选择绝对值最大的元素作为主 元 不仅要做行的交换还需要做列的交换 列的交换过程中解向量中各元素实际 上都跟着交换了位置 线性代数方程组的解是乱序的 需要专门的整序程序段 这是其区别于列主元消去法的重要特点 这个函数的功能是接受方程组的阶数 增广矩阵的元素数组 利用全主元高斯 消去法求线性代数方程组的解 将解向量存放到增广矩阵的元素数组第n l 列 根据控制常数要求 判断线性方程组是否有解 返回是否成功的信息 墓鲎越塑 函数体 接受并验证方程组的阶数 增广矩阵的元素数组 控制常数 f o r i n ti i 方程组阶数 i 选主元 i f 主元满足精度要求 消元 回代求解 e l s e 返回标准出错信息 返回标准出错信息 3 2 2 插值方法模块 3 2 2 1 拉格朗日一元全节点插值函数 趁丛 节点个数 节点横坐标数组首地址 节点纵坐标数组首地址 插值点横坐标值 筮丝i 存放插值点纵坐标值 堑醴 i n t 类型 d o u b l e 类型 d o u b l e 类型 d o u b l e 类型 d o u b l e 类型 标准出错信息 参考标准出错信息说明 筮些丛璺 知道函数f x 在平面上的 些离散点的值 x f x i o 1 n 假设忽略离 散点的实验误差 可以把实验散点作为插值节点 通过拉格朗同 元全节点插值 求出有关点上的函数值 其计算公式为 y 2 z d 兀x 工i 叫 x j i 1 罄f 这个函数的功能是接受离散点个数 横坐标 纵坐标 要插值点的横坐标 计算输出插值点的纵坐标 同时返回是否成功的信息 堡鲎蕉亟 函数体 接受离散点个数 横坐标 纵坐标 要插值点的横坐标 利用双重循环计算插值点的纵坐标 返回标准出错信息 3 2 2 2 分段线性插值法 越 节点个数i n t 类型 节点横坐标值数组首地址d o u b l e 类型 节点纵坐标值数组首地址d o u b l e 类型 需要计算数据的数目i n t 类型 指向插值点横坐标数组首地址d o u b l e 类型 筮笪 存放插值点纵坐标数组的地址d o u b l e 类型 丝醴 标准出错信息 参考标准出错信息说明 丝暨厦堡 实际问题中 知道函数f x 在平面上的一些离散点的值 x f x i o l n 9 而不能给出 x 的具体解析表达式 或者f x 的表达式过于复杂而难以运算a 这时 候需要用近似函数f x 来逼近函数f x 其中可以采用的方法有插值 y 当x o 不等于x i 时 若用两点式表示这条直线 则有 x x lx x o l i x y o y 1 x 0 一x lx i 一 c o 这种形式称为拉格朗日插值多项式 计算曲线上 x o y o x l y 1 两点之间其他点x n 的函数值时 可以近似的使用l l x 来计算 这就是线性插值 对于给定区间 a b 作分割a x o x 1 x b 在每个小区i e xl x l 1 上作f x 以 x i x i i 为节点的线性插值 只要区间充分小 就能保证误差要求 而且算法简单 修改某节点的值 也只有相临两个区间受到影响 缺点是插值节点处不光滑 这个函数的功能是接受离散点个数 横坐标 纵坐标 要插值点的横坐标 计算输出插值点的纵坐标 同时返回是否成功的信息 箍巡 函数体 接受离散点个数 横坐标 纵坐标 要插值点的横坐标 利用分段线性插值法 设计循环计算插值点的纵坐标 返回标准出错信息 3 2 3 数值积分模块 3 2 3 1 梯形积分法 j 蚣 被积函数指针 积分区间划分的段数 积分上限 积分下限 逖 积分结果 垄醴 指向d o u b l ef d o u b l e 型函数的指针 整型变量 双精度实型变量 双精度实型变量 双精度实型变量 标准出错信息 参考标准出错信息说明 簋鲎蕉鲨 函数体 积分步长 积分上限一积分下限 区间划分段数 i f 溢出 r e t u r n 出错信息 f o r i o i 区间划分段数 i 求算第1 个区间上的梯形面积 累加 返回累加结果 r e t u r n 成功信息 3 2 3 2 变步长辛普生法 筮丛 指向被积函数的指针 积分下限 积分上限 积分精度 判断收敛与否的标志 逖 存放积分结果的地址 被积函数求值次数以及 求积是否成功的标志 踅凰鲍 函数指针类型 d o u b l e 类型 d o u b l e 类型 d o u b l e 类型 i n t 类型 d o u b l e 类型 i n t 类型 标准出错信息 参考标准出错信息说明 堡鲎盈璺 求f i x 在区间 a b 上的定积分 m a x 辛普生求积公式如下 1 由梯形公式 t 1 鱼孚 厂 a 厂 6 2 利用把区间逐次分半的方法 将r 叉n e a b 分半 令i 爻 i n 长度 办 簪 k 1 2 3 计算 t2 l t 2 1 h f a h 2 i k 一1 2 1一i i 一 1 7 则辛普生求积公式为 5 r 2 4 t 2 一丁2 扣1 3 这个函数的功能是接受函数 积分上限 下限 利用辛普生求积公式计算 根据积分精度要求 调整步长 进一步求积计算 直到达到积分精度要求 输 出积分结果 同时返回是否成功的信息 鑫蕉越签 函数体 判断输入参数的合理性 计算初始值t l d o 步长减半 计算t 2 计算s w h i i e 不满足精度 返回值 3 2 3 3 定长s i m p s o n 积分法 堂丛l 被积函数指针 积分区间划分的段数 积分下限 积分上限 筮逝 积分结果 垄丝 指向d o u b l ef d o u b l e 型函数的指针 整型变量 双精度实型变量 双精度实型变量 双精度实型指针 标准出错信息 参考标准出错信息说明 筮些蕴些 函数体 积分步长 积分上限一积分下限 区间划分段数 i f 溢出 r e t u r n 出错信息 f o r i o i n 间划分段数 i 求算第1 个区间上的抛物线与积分边界未成的曲边梯形面积 累加 返回累加结果 r e t u r n 成功信息 3 2 3 4 高斯积分法 筮丛 被积函数指针 积分上限 积分下限 积分精度 求积公式的节点数目 存放高斯节点的数组 存放高斯系数的数组 筮出 积分结果 堑丝 指向d o u b l ef d o u b l e 型函数的指针 双精度实型变量 双精度实型变量 双精度实型变量 整型变量 双精度实型指针 双精度实型指针 双精度实型指针 标准出错信息 参考标准出错信息说明 霪蕉越述i 函数体 把区间划分为若干段 d o f o r i o i n 间划分段数 i 1 利用高斯法求算第1 个区间上的积分结果 累加 减小步长 w h i l e 积分结果未满足精度要求 积分步长不是太小 返回累加结果 i f 积分步长太小 r e t u r n 出错信息 r e t u r n 成功信息 3 2 3 5 蒙特卡洛法积分 筮丛 被积函数指针 积分上限 积分下限 随机函数指针 指向d o u b l ef d o u b l e 型函数的指针 双精度实型变量 双精度实型变量 指向d o u b l er a n d o m 型函数的指针 生成随机数的个数整型变量 被积函数在此区间上的最大值 或稍大于 被积函数在此区间上的最小值 或稍小于 被积函数最大值双精度实型变量 被积函数最小值双精度实型变量 挫 积分结果双精度实型指针 堑醴 标准出错信息 参考标准出错信息说明 筮兰匝璺 蒙特卡洛法也叫做随机模拟方法 蒙特卡洛法积分的原理如下 如下图所示 欲求算 if x 为了达到这个目的 啦 设计了一个随机模型 在 a b f m i n f m a x 所围成的矩形 中我们生成一系列均匀的随机 点 共n 总个点 然后统计这 些点落在各个区域中 s l s 2 s 3 s 4 s 5 的数目 分别记做 n 1 n 2 n 3 n 4 n 5 由 于这些点是均匀的等概率的 所 以每个区域中点的个数与这个 区域的面积成正比 即 s l s 2 s 3 s 4 s 5 n 1 n 2 n 3 n 4 n 5 所以有s i s 总 n i n 总 f 似 s s 3 s 5 sz s 2 s 3 一 s 2 s 5 所以 只需统计在整个矩形区域内落在曲线y f x 下方的点的个数 n 下 和所有随机点的总个数即可 综上 有下述公式 r 厂 x s 总 n t n b l m i n b 咀 窿鲎趟塑 函数体 接受并验证各项输入参数 i f 未给出函数最大值最小值 求算函数最大值最小值 在矩形区域内生成随机值 并统计落在曲线下方点的个数 f 厂 x s 总 n 下 n 总 h m i b 3 2 4 微分方程数值解法模块 3 2 4 1 一步变步长欧拉法 毖丛 指向微分方程右函数的指针函数指针类型 区间下限d o u b l e 类型 区间上限d o u b l e 类型 区间下限对应的函数值d o u b l e 类型 区间的初始分段数i n t 类型 精度d o u b l e 类型 挫 存放对应各分点处的函数值 的数组的首地址d o u b l e 类型 运行完毕后用于储存结果 盛醴 标准出错信息 参考标准出错信息说明 堑簦迹 在欧拉法的基础上 经步长折半前后两次计算 做计算结果之差 e 刊y 一对i 与预先给定的精度要求e p s 比较 当e e p s 说明步长应改小 这时反复 将步长折半进行计算 直至e e p s 为止 取最后一次计算结果为y l 反之 当e e p s 说明步长应放大 这时反复将步长加倍 直至e 恰大于e p s 为止 此时再将步长折半一次计算 所得结果为y 这个函数的功能是接受微分方程右函数 区间下限 区间上限 区间下限对应的函数值 区间的分段数 根据精度要求 利用变步长欧拉法计 算对应各分点处的函数值 同时返回是否成功的信息 望鲎丝丛i 函数体 接受微分方程右函数 区间下限 上限 下限对应的函数值 区间分段数 精度 利用欧拉法 设计循环计算对应各分点处的函数值 并根据精度要求 调整 步长 返回标准出错信息 3 2 4 2 龙格一库塔法 积分下限 积分上限 区间的分段数 微分方程个数 微分方程组对应的函数 由用户编写 地 y 函数的最终结果 开始时存放初值 堑丝 标准出错信息 裳莲盈璺 双精度实型变量 双精度实型变量 整型变量 整型变量 v o i d f d o u b l e d o u b l e d o u b l e 型 双精度实型数组 整形变量 对于解微分方程组 已知 y j x o 咒 f 1 2 一 z x y i 儿 n f 1 2 月 按照尤格 库塔法 对于一阶微分方程其采用四阶公式 f 代表微分函数 令k i i l x o m o y 2 0 虬o k a 胁 圭 1 0 l h k n y 2 0 l h k 2 砒 l h k t 工 丢h y l o l h k l 2 y 2 0 圭一膏 y 圭向七 t 4 f x o 厅 儿o h k l 3 y k 虬o 吒3 则具体的计算 利用初值调用微分函数 得近似积分方程 第一次调用得到 y i y f o 4 置i 第二次调用得到 y m 吉 t 七j oj 第三次调用得到 y i y 吉 毛 置 0jj 第四次调用得到 y y j 0 i 2 k 2 2 k 3 k l d 那么如果已经知道x 和y 的初始值 并且知道y 的各个初始微分值 就可以近 似得到x 变化后y 的结果 筮鲎越亟 函数体 读入初值 读入积分步长 f o r i o i 允许误差 迭代次数 最大迭代次数 返回非线性参数的结果 r e t u r n 出错信息 3 2 5 2 多元线性回归 趁丛 原始数据点的个数 自变量个数 实验数据点的自变量 实验数据点的应变量 逖 整型变量 整型变量 双精度实型指针 双精度实型指针 拟合曲线的系数双精度实型数组 拟合曲线的复相关系数双精度实型数组 回归值双精度实型数组 垄醴 标准出错信息 参考标准出错信息说明 望鲎厦塾 设物理量x y 之间存在着线性关系y b o bz x l b 2 x 2 b x 当 x l x 2 x 分别取值x i l x 2 x i 时 i 0 1 2 m 测得的相应的y 值分别为 y l y 2 y 但测得的这m 组数据点 由于试验误差的存在 一般不会正好分布 在一条直线上 为了确定a 和b 需要找到一条与原始数据点最为接近的直线 其 q m b o x 6 l x i l b 2 x i 2 巩x 2其中 兰1 f l 判断标准是 残差平方和最小 参差平方和可表示为 欲使残差平方和最小 则需求解方程组k o 1 2 m 整理上式 得以下矩阵方程 方程一 o 9 q o o b k z x h x j z x x x j l z h x y h y x m y 调用高斯法可解得b o b l b 2 b n 筮兰蕴签 函数体 i f 数据点数目小于自变量个数 r e t u r n 出错信息 构造矩阵方程 方程一 调用高斯法解方程 i f 调用失败 r e t u r n 出错信息 求得b o b l b 2 b 计算复相关系数 通过指针返回b o b l b 2 b 及复相关系数 r e t u r n 成功信息 3 2 5 3 一元线性回归 笾丛 原始数据点的个数 实验数据点的自变量 实验数据点的应变量 短丝 回归线的截距 回归线的斜率 回归线的相关系数 堑凰垒 整型变量 双精度实型指针 双精度实型指针 双精度实型变量 双精度实型变量 双精度实型变量 标准出错信息 参考标准出错信息说明 岛 k vl一 靠 h 冀蕉塑 设物理量x y 之间存在着线性关系y a b x 当x 取值x i x 2 x 时 测得的相应的y 值分别为 y 1 y 2 y 但测得的这m 组数据点 由于试验误差 的存在 一般不会正好分布在一条直线上 为了确定a b 需要找到一条与原始数据 点最为接近的直线 其判断标准是 残差平方和最小 参差平方和可表示为 q 6 m a b x 2 根据微分中求极值的原理可解得 b k 扎 a 2y b z 一 万 差逖 函数体 i f 数据点数目小于2 r e t u m 出错信息 循环累加求算 x y 叫 工2 y 2 l x y x y x l y l m l x x x 2 一x l x l m l y y 2y 2 一y l y l m b l x y l x x a 2 y l 一 x 1 m r2 l x y s q r t l x x l y y r e t u r n 成功信息 第四章数据管理应用软件包的设计与实现 遵照通用 复用的原则 以及用户友好的考虑 数据管理应用软件包采用了面向对 象的设计思想 1 划分为数据库操作模块和数据记录集模块 在实现上浚软件包 把针对数据库的相关操作以及针对数掘纪录集的相关操作分别封装为两个类 4 1 数据管理应用软件包的设计 4 1 1 数据管理应用软件包的基本目标 数据管理与应用软件包 2 1 2 2 2 3 2 4 1 的基本目标是为用户提供一套统一的 易于编程 的通用数据库接1 3 从而实现对各种不同数据库的访问 管理 在设计上 该软件包 把o d b c o p e n d a t a b a s ec o n n e c t i v i t y 1 9 1 提供的a p l 分别封装为数据库操作子模块和 数据记录集子模块 数据管理与应用软件包的处理流程如下图所示 用户 么邋 数蜊已录集模块 l l 数 j i 库操作模块 1 1l 土 a p z 调用 上 o d b c 数据库操作子模块和数据记录集子模块相当于在用户与o d b c 之间添加了一个抽 象层 用户通过对这两个子模块的访问即可实现对o d b ca p i 的访问 进而通过相应 数据源提供的驱动程序实现对数据库的访问 4 1 2 数据管理应用软件包的体系结构 数据管理应用软件包包括数据库操作模块与数据记录集模块两个子模块 共十二 类操作 其体系结构如下图所示 4 1 3 各子模块预期实现的功能 4 1 3 1 数据库操作模块功能描述 本模块主要目的是建立并维护到一个数据源的连接 并实现对数据源的简单操 作 其需要实现的功能主要包括以下几个方面 数据源的连接 断开连接 s q l 语 句的执行 数据源属性 状态的设置 查询 错误处理等 1 数据源的连接与断开 以指定的用户名 密码连接到数据源 断开到数据源的连接 2 s q l 语句的执行 直接执行一个s q l 语句 准备一个s q l 语句 绑定参数 执行准备好的s q l 语句 3 事务支持 开始一个事务 提交事务 撤回事务 4 属性的设置 查询 设置 设置连接超时 设置查询超时 设置事务支持模式 查询 获得当前的o d b c 环境句柄 获得当前的o d b c 连接句柄 获得当前连接的数据源名称 获得当前连接的用户名 获得当前连接的用户密码 判断当前是否处于连接状态 判断当前连接是否支持事务 判断当前连接是否支持对数据源的更新 5 其他 取消异步进行的操作 6 错误处理 生成一个o d b c 产生的错误信息 仅供内部调用 生成一个白定义的错误信息 仅供内部调用 获取产生错误的o d b c 调用的返回值 获取错误状态描述字串 获取错误诊断信息 获取当前错误编号 获取下一个错误 判断当前错误是否是一个o d b c 调用错误 4 1 3 2 数据记录集模块功能描述 本模块主要目的是维护并操作从数据库中检索得到的数据记录集 其需要实现的 功能主要包括 数据记录集的打开 关闭 记录集中数据的增 删 编辑 更新 记 录集中游标的移动 定位 记录集属性的查询 以及一些辅助操作 1 记录集的打开 关闭 刷新以及列的绑定 打开记录集 关闭当前记录集 刷新当前记录集 重新查询 将列和相应的缓冲区或成员变量进行绑定 2 属性的设置 查询 设置当前语句句柄属性 获得当前记录集中列的数量 获得当前语句句柄 获取记录集中列的信息 获取当前行对应列的值 缓冲区长度 生成当前行对应列的值 3 1 游标操作 得到当前游标所在行的序号 判断游标是否到达记录集的结尾 判断游标是否到达记录集的开始 移动游标到第一条数据位置 移动游标到最后一条数据位置 移动游标到下一条数据位置 移动游标到前一条数据位置 移动游标到指定位置 移动游标到书签位置 4 数据更新 删除 添加操作 数据更新 数据删除 数据添加 5 错误处理 生成一个o d b c 产生的错误信息 仅供内部调用 生成一个自定义的错误信息 仅供内部调用 获取产生错误的o d b c 调用的返回值 获取错误状态描述字串 获取错误诊断信息 获取当前错误编号 获取下一个错误 判断当前错误是否是一个o d b c 调用错误 6 内部使用函数 生成当前记录集中列的信息 清除当前列信息 初始化函数 获得列缓冲区长度 4 1 4 个子模块提供的方法 属性列表 4 1 4 1 数据库模块提供的方法与属性 1 1 类的构造及析构函数 以及数据源的连接与断开 函数描述函数名 构造一个c c e n t d b 对象c c e n t d b 析构一个c c e n t d b 对象 一c c e t i

温馨提示

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

评论

0/150

提交评论