穆乃刚。中油辽河工程****,辽宁盘锦124010)
摘要:本文以热油管道运行优化软件的开发为例,详细介绍了如何在vc++中通过调用matlab数学函数库实现回归分析,为建立**粘度-温度数学模型提供一条可靠、高效的途径。
关键词:matlab vc++回归分析。
一、前言。由实验数据建立数学模型,我们通常采用回归分析,在热油管道运行优化软件的开发中,需要根据不同油品的粘温数据,回归出粘温关系数学模型,以计算出不同温度下的油品粘度。
二、热油管道运行优化软件简介。
1.功能需求。
本软件的功能为已知输油管道系统的运行参数,寻求在特定输油任务的前提下,输油费用最小值时的工况组态,并可选择输出各工况组态的运行参数和相应费用。
2.编程语言及开发环境。
本软件的功能侧重于数值计算,在寻优过程中需要进行大量的数据处理,为了能够快速得到寻优结果,需要软件具有较高的执行效率,因此本软件编程语言选择c++语言。c++语言程序生成**质量高,一般只比汇编程序生成的目标**效率低10~20%,且具有指针操作功能,能够象汇编语言一样对位、字节和地址进行操作,使程序的算法更加灵活。
本软件采用visualc++6.0作为软件开发环境,这是一种可视化编程工具,界面友好,逻辑清晰,调试方便,界面编制能力很强,开发的软件可以在windows系列操作系统上良好运行。
3、软件界面。
本软件运行后,主界面如下图所示。
三、在vc++中通过调用matlab实现回归分析。
1.在vc++中调用matlab方法简介。
matlab是一种功能非常强大的数学分析软件,它广泛应用于线性代数、自动控制理论、数理统计、动态系统**等领域,具有扩展性好、易学易用、方便快捷等优点,但matlab语言是一种解释性语言,它实时效率差、不可以脱离其环境独立运行,而在vc++中调用matlab,既能保留matlab的优良算法,又能保持vc++的高效率性,能大大缩短本功能模块的开发周期,在vc++中调用matlab主要有以下两种方法:
1)利用matlab引擎matlab引擎采用客户机和服务器的计算方式,在运行中,vc++开发的程序为前端客户机,它向matlab引擎传递命令和数据信息,并从matlab引擎中接收数据信息,这种方法调用matlab采用较少的**即可实现,但不能脱离matlab运行环境,且运行速度缓慢。
2)调用matlab的c/c++数学函数库matlab中提供了大量可以供c/c++语言调用的c/c++数学函数库,其中包含了各种矩阵操作函数,在vc++中直接调用matlab的c/c++数学函数库,生成的软件运算速度快,且可以完全脱离matlab的运行环境。
由于第2种方法具有第1种方法不可比拟的优越性,本软件采用第2种方法实现对matlab的调用。
2.已知**粘度-温度实验数据,建立粘度-温度的数学模型本软件粘温关系数学模型采用1元4次多项式,即y=a4x+ a3x+ a2x+ a1x+ a0,在matlab中,多项式回归函数为a=polyfit(x,y,n),其中x为自变量数据向量,在此为温度向量,y为应变量数据向量,在此为粘度向量,n为所回归的多项式的最高次幂,在此为4,a为所回归的多项式的系数向量,下面是热油管道运行优化软件实现此功能的主要**,mwarray cc;
cc=polyfit(aa,bb,4);
mxarray * pcmxdata = pcdata = mxgetpr(pcmxdata);for(i=0;i<
cnian[i]=pcdata[i];}
对以上**分析如下,4
mwarray cc;
本行程序是创建mwarray类型的数据对象cc,mwarray是matlabc++函数库中的基本数据类型,对应于matlab中的阵列数据类型,可以用它来创建mwarray类对象,即阵列对象,成功调用matlabc++库函数,从而方便的实现复杂的数学矩阵运算。matlabc++函数库通过mwarray类,支持五种类型的matlab阵列,分别为数值阵列、稀疏矩阵、字符矩阵、单元阵列和结构体阵列,本例程序中使用的就是数值阵列。
cc=polyfit(aa,bb,4);
本行程序是调用matlab中的多项式回归函数a=polyfit(x,y,n),得到所回归的多项式的系数阵列;
mxarray * pcmxdata = pcdata = mxgetpr(pcmxdata);for(i=0;i<
cnian[i]=pcdata[i];}
mxarray是matlab c函数库的结构体,被封装于matlab c++函数库mwarray类中,通过调用其成员函数getdata(),得到mxarray的指针,本例程序中为pcmxdata,然后通过调用mxgetpr()函数,并采用for循环结构,取得所回归的多项式的各项系数。
至此,油品粘温关系的数学模型已成功建立完毕。3.实例分析。
由实验获得**粘度-温度数据如下表所示,序号12345
油品温度(℃)
油品粘度(mm/s)
运用上述方法建立的数学模型为:
y=0.00112x-0.2968x+29.892x-1367.6x+24250,其中x为温度,y为粘度,获取的**粘度-温度回归曲线如下图所示,4
由图可知,此数学模型精确地描述了**粘度、温度之间的函数关系。
四、结束语。
**粘度-温度数学模型的建立可以归结于1元n次多项式的回归问题,在工艺计算中,经常遇到的泵特性曲线回归均属于此类问题,如泵的扬程-流量曲线,此类问题均可以通过调用matlab数学函数库方便、高效的解决。
MATLAB在数学建模方面的应用
计算机 技术与 基于matlab的控制系统。第二版 课程结业 课题 matlab在数学建模方面的应用。专业班级 08自动化。学生 学号 设计时间 2010 12 20 目录。一 matlab简介。二 matlab在现在科技及生产上的应用。三 利用matlab实现数学建模的一般步骤。四 matlab在...
matlab数学建模应用
matlab对于数学建模用处是非常大的,编程可以不用matlab,但是matlab自带的那些数学分析程序非常厉害,下面是几点必学的数学建模中的matlab知识,主要都是数值分析中的东西 几个重要算法。线性规划与非线性规划。matlab作图 二维,三维都要,图画的漂亮对于数学建模很重要的哦。分为 1 ...
数学建模案例分析 线性代数在数学建模中的应用举例
在abo血型的人们中,对各种群体的基因的频率进行了研究。如果我们把四种等位基因a1,a2,b,o区别开,有人报道了如下的相对频率,见表1.1。表1.1基因的相对频率。问题一个群体与另一群体的接近程度如何?换句话说,就是要一个表示基因的 距离 的合宜的量度。解有人提出一种利用向量代数的方法。首先,我们...