计算机在化工中的应用实验报告.docx
- 文档编号:12815721
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:34
- 大小:244.84KB
计算机在化工中的应用实验报告.docx
《计算机在化工中的应用实验报告.docx》由会员分享,可在线阅读,更多相关《计算机在化工中的应用实验报告.docx(34页珍藏版)》请在冰点文库上搜索。
计算机在化工中的应用实验报告
《计算机在化学化工中的应用》
实验报告
学院:
化学与化工学院
班级:
12级硕勋励志班
姓名:
徐凯杰
学号:
120702028
实验一传热实验中多变量的曲线的拟合
一、实验目的
1)熟悉VB编程平台
2)掌握多变量曲线拟合的算法
3)编拟合所给的传热实验模型的VB程序
4)通过实验数据求出模型数据、并掌握解线性方程组的克拉默法则
二、运行环境
1)MicrosoftWindowsXP
2)VB6.0
三、实验原理
略
四、vb代码
PrivateSubCommand1_Click()
DimmAsInteger
'm=inputbox(“实验次数”)
m=7
Dimx10,x20,y0
Dimi,j,kAsInteger
Dima(1To10,1To10),y(1To10),y1(1To10),a0,a1,a2
Dims,S1,S2,S3,b(1To10,1To10),xx
Dimx1(1To10),x2(1To10),YY,sd
'open"dem.dat"forinputas#1
'fori=1tom
'input#1,xx,YY
'x1(i)=xx
'x2(i0=xx^2
'y(i)=YY
'nexti
'close#1
'7组努塞尔准数、雷诺数及普兰德准数,数据最大时应采用直接从文件读取方法
x10=Array(0,100,200,300,500,100,700,800)'注意下标的起点处理(加0)
x20=Array(0,2,4,1,0.3,5,3,4)'注意下标的起点处理(加0)
y0=Array(0,1.127,2.416,2.205,2.312,1.484,6.038,7.325)'注意下标的起点处理(加0)
Fori=1Tom
x1(i)=Log(x10(i))
x2(i)=Log(x20(i))
y(i)=Log(y0(i))
Nexti
'求解法方程系数矩阵
a(1,1)=m
a(1,2)=0
Fori=1Tom
a(1,2)=a(1,2)+x1(i)
Nexti
a(2,1)=a(1,2)
a(1,3)=0
Fori=1Tom
a(1,3)=a(1,3)+x2(i)
Nexti
a(3,1)=a(1,3)
a(2,2)=0
Fori=1Tom
a(2,2)=a(2,2)+x1(i)*x1(i)
Nexti
a(3,3)=0
Fori=1Tom
a(3,3)=a(3,3)+x2(i)*x2(i)
Nexti
a(2,3)=0
Fori=1Tom
a(2,3)=a(2,3)+x1(i)*x2(i)
Nexti
a(3,2)=a(2,3)
'求解法方程常数向量
y1
(1)=0
Fori=1Tom
y1
(1)=y1
(1)+y(i)
Nexti
y1
(2)=0
Fori=1Tom
y1
(2)=y1
(2)+x1(i)*y(i)
Nexti
y1(3)=0
Fori=1Tom
y1(3)=y1(3)+x2(i)*y(i)
Nexti
'(利用克拉默法则解法方程/线性非常组)
s=a(1,1)*a(2,2)*a(3,3)+a(1,2)*a(2,3)*a(3,1)+a(1,3)*a(2,1)*a(3,2)
s=s-a(1,1)*a(2,3)*a(3,2)-a(1,2)*a(2,1)*a(3,3)-a(1,3)*a(2,2)*a(3,1)
Forj=1To3
b(j,1)=a(j,1)
a(j,1)=y1(j)
Nextj
S1=a(1,1)*a(2,2)*a(3,3)+a(1,2)*a(2,3)*a(3,1)+a(1,3)*a(2,1)*a(3,2)
S1=S1-a(1,1)*a(2,3)*a(3,2)-a(1,2)*a(2,1)*a(3,3)-a(1,3)*a(2,2)*a(3,1)
Forj=1To3
a(j,1)=b(j,1)
Nextj
Forj=1To3
b(j,2)=a(j,2)
a(j,2)=y1(j)
Nextj
S2=a(1,1)*a(2,2)*a(3,3)+a(1,2)*a(2,3)*a(3,1)+a(1,3)*a(2,1)*a(3,2)
S2=S2-a(1,1)*a(2,3)*a(3,2)-a(1,2)*a(2,1)*a(3,3)-a(1,3)*a(2,2)*a(3,1)
Forj=1To3
a(j,2)=b(j,2)
Nextj
Forj=1To3
b(j,3)=a(j,3)
a(j,3)=y1(j)
Nextj
S3=a(1,1)*a(2,2)*a(3,3)+a(1,2)*a(2,3)*a(3,1)+a(1,3)*a(2,1)*a(3,2)
S3=S3-a(1,1)*a(2,3)*a(3,2)-a(1,2)*a(2,1)*a(3,3)-a(1,3)*a(2,2)*a(3,1)
a0=S1/s
a1=S2/s
a2=S3/s
Text1.Text=Int(1000*Exp(a0)+0.5)/1000'四舍五入保留三位
Text2.Text=Int(1000*a1+0.5)/1000
Text3.Text=Int(1000*a2+0.5)/1000
sd=0
Fori=1Tom
sd=sd+Abs(a0+a1*x1(i)+a2*x2(i)-y(i))'求
Next
sd=sd/m
Text4.Text=sd'Int(1000*sd+0.5)/1000
PrintTab(50);"序号","模型计算值","实验值"
Fori=1Tom
PrintTab(45);i;(Text1.Text)*(x10(i)^(Text2.Text))*(x20(i)^(Text3.Text));0.023*(x10(i)^0.8)*(x20(i)^0.3)
Next
EndSub
五、实验结果截图
六、实验后思考。
VB编程是一种简单,并且效率高的可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言。
。
通过对本实验的实际操作,我掌握了多变量曲线拟合的基本算法,了解了解线性方程组的克拉默法则。
并且,同时在以后的工作中,可以通过这个实验来解决大部分实验数据及模型参数的拟合问题。
实验二梯度法拟合蒸汽压与温度关系模型
一、实验目的
1)掌握梯度法拟合的基本算法以及理解其普适性
2)编写梯度法拟合蒸汽压与温度的关系的VB程序
3)通过实对程序进行验证,并注意比较初值对运行速度和结果的影响
二、运行环境
1)MicrosoftWindowsXP
2)VB6.0
三、实验原理
略
四、实验VB程序代码
PrivateSubCommand1_Click(IndexAsInteger)
Dimm,nAsInteger
m=6
Dimi,j,kAsInteger
DimA,B,C,F,ee,P(1To10),T(1To10)
DimA1,B1,C1,TA,TB,TC,TT,f1,f2,f3
Dimsd,W,S,EY,XX,YY
'(由dem.dat输入实验数据
XX=Array(-23.7,-10,0,10,20,30,40)'注意下标的起点处理(加0)
YY=Array(0.101,0.174,0.254,0.359,0.495,0.662,0.88)'注意下标的起点处理(加0)
Print"直接读数据文件后计算"
Fori=1Tom
T(i)=XX(i)
T(i)=273.15+T(i)
P(i)=YY(i)*7600
PrintT(i),P(i)
Nexti
Closei
A=Val(InputBox("A"))'指定初值
B=Val(InputBox("B"))'指定初值
C=Val(InputBox("C"))'指定初值
1000F=0
Fori=1Tom
ee=FNP(A,B,C,T(i),P(i))
ee=ee^2
F=F+ee
Nexti
f1=0
A1=A+0.000001*A
'print"A,A1=";A,A1
Fori=1Tom
ee=FNP(A1,B,C,T(i),P(i))
ee=ee^2
f1=f1+ee
Nexti
TA=(f1-F)/(0.000001*A)
'printf1,F,TA
'A=val(inputbox("A"))
f2=0
B1=B+0.00001*B
Fori=1Tom
ee=FNP(A,B1,C,T(i),P(i))
ee=ee^2
f2=f2+ee
Nexti
TB=(f2-F)/(0.00001*B)
f3=0
C1=C+0.00001*C
Fori=1Tom
ee=FNP(A,B,C1,T(i),P(i))
ee=ee^2
f3=f3+ee
Nexti
TC=(f3-F)/(0.00001*C)
TT=TA^2+TB^2+TC^2
TT=Sqr(TT)
IfTT>0.001Then
A=A-0.005*TA
B=B-1.5*TB
C=C-0.001*TC
GoTo1000
Else
EndIf
sd=0
Fori=1Tom'//计算绝对平均相对误差
sd=sd+Abs(FNSD(A,B,C,T(i),P(i)))/P(i)
PrintFNSD(A,B,C,T(i),P(i))
Nexti
sd=sd/m
Print"A,B,C=";A,B,C
Print"sd=";sd'//打印绝对平均相对误差
EndSub
PublicFunctionFNP(A,B,C,T,P)
FNP=(A-B/(T+C))-Log(P)
EndFunction
PublicFunctionFNSD(A,B,C,T,P)
FNSD=Exp(A-B/(T+C))-P
EndFunction
五、实验结果截图
六、实验后思考。
本实验是基于最小二乘原理,函数拟合的目标是使拟合函数和实际测量值之间的差的平方和最小。
对于最小值的问题,梯度法是用负梯度方向作为优化搜索方向。
而梯度法是一个简单的迭代优化计算方法。
注意的是,负梯度的最速下降性是一个局部的性质。
在计算的前期使用此法,当接近极小点时,在改用其他的算法,如共轭梯度法。
实验三二分法求解化工中的非线性方程
一、实验目的
1)掌握二分法解非线性方程组的基本算法
2)编写二分法邱珏非线性方程组的VB程序
3)通过实例的程序进行调试,并学习输出数据格式化
二、运行环境
1)MicrosoftWindowsXP
2)VB6.0
三、实验原理
略
四、实验VB代码
PrivateSubCommand1_Click()
DimaxAsSingle
DimbxAsSingle
DimcxAsSingle
DimayAsSingle
DimbyAsSingle
DimcyAsSingle
DimeAsSingle
DimnumAsInteger'累计次数变量
DimstAsString
DimchAsString
DimspAsString
ch=Chr(13)+Chr(10)
sp=Space(10)
st="二分法解方程"+ch
st=st+"求2,3-二甲基苯胺沸点(当P=101325时解lnP=59.7622-8013.69/T-5.081lnT)"+ch
ax=200
bx=500
e=0.01
st=st+"区间左端点初始值ax="+Str(ax)+ch
st=st+"区间右端点初始值bx="+Str(bx)+ch
st=st+"精度控制限e="+Str(e)+ch
st=st+"num"+sp+"ax"+Space(14)+"bx"+Space(14)+"|ax-bx|"+ch
ay=F(ax)
by=F(bx)
num=1
DoWhileAbs(ax-bx)>e
cx=(ax+bx)/2
cy=F(cx)
Ifcy=0ThenExitDo'如果已得解,则退出循环
Ifcy*ay>0Then
ax=cx
ay=cy
Else
bx=cx
by=cy
EndIf
st=st+Format(num,"000")+sp+Format(ax,"000.00")+sp+Format(bx,"000.00")+sp+Format(Abs(ax-bx),"0.0000")+ch
num=num+1
Loop
st=st+ch+"2,3-二甲基苯胺沸点:
"+Format(cx,"#00.00")+"K"+ch+ch
st=st+"***时间:
"+Str(Time)+Space(3)+"日期:
"+Str(Date)+ch
Text1.Text=""
Text1.Text=st
EndSub
'二分法求2,3-二甲基苯胺沸点所用函数
PrivateFunctionF(ByValuAsSingle)
F=Log(101325)-59.7622+8013.69/u+5.081*Log(u)'注意对数运算
EndFunction
五、实验结果截图
六、实验后思考。
通过应用微积分中的介值定理,是是用二分法的前提条件。
如果我们所要求解的方程从物理意义上来讲确实存在实根,但又不满足f(a)f(b)<0,这时候,我们必须通过改变a和b的值来满足二分法的应用条件。
实验四主元最大高斯消元法解化工中的线性方程组
一、实验目的
1)掌握主元最大高斯消元法
2)编写最大高斯消元法求解线性方程组的VB程序
3)通过实例对程序进行调试,并比较一般的高斯消去法比较
二、运行环境
1)MicrosoftWIndowsXP_
2)VB6.0
三、实验原理
略
四、实验程序代码
PrivateSubCommand1_Click()
Dimm,nAsInteger
Dima(),z(),x(),w,aa(),s,t,k,l
n=4
ReDima(n+2,2+n),z(n+2,2+n),x(n+1),aa(n+2,2+n)
Dimi,j,k1,k2,st
DimchAsString
DimspAsString
ch=Chr(13)+Chr(10)
sp=Space(5)
a(1,1)=6#/123.1
a(1,2)=6#/93.13
a(1,3)=3#/73.1
a(1,4)=2#/43.07
a(2,1)=5#/123.1
a(2,2)=7#/93.13
a(2,3)=7#/73.1
a(2,4)=6#/43.07
a(3,1)=1#/123.1
a(3,2)=1#/93.13
a(3,3)=1#/73.1
a(3,4)=0#/43.07
a(4,1)=2#/123.1
a(4,2)=0#/93.13
a(4,3)=1#/73.1
a(4,4)=1#/43.07
a(1,5)=57.78/12.01
a(2,5)=7.92/1.008
a(3,5)=11.23/14.01
a(4,5)=23.09/16
st=st+"主元最大高斯消去法解线性方程组"+ch
st=st+"设有一混合物由硝基苯、苯胺、氨基丙酮、乙醇组成;"+ch
st=st+"对该混合物进行元素分析结果以百分数表示如下"+ch
st=st+"C%=57.78%;H%=7.92%;N%=11.23%;O%=23.09%"+ch
st=st+"原子量:
A(C)=12.01;A(H)=1.008;A(N)=14.01;A(O)=16.00"+ch
st=st+"分子量:
硝基苯123.1;苯胺93.13;氨基丙酮73.10;乙醇43.07"+ch
st=st+"硝基苯分子C-6;H-5;N-1;O-2"+ch
st=st+"苯胺分子C-6;H-7;N-1;O-0"+ch
st=st+"氨基丙酮分子C-3;H-7;N-1;O-1"+ch
st=st+"乙醇分子C-2;H-6;N-0;O-1"+ch
st=st+"确定上面四种化合物在混合物中所占的百分比"+ch+ch
'寻找主元
Fori=1Ton
Ifi=nThenGoTo200
Fort=i+1Ton
IfAbs(a(i,i)) Fors=iTon+1 aa(t,s)=a(i,s) a(i,s)=a(t,s) a(t,s)=aa(t,s) Nexts Else EndIf Nextt 200 '消去 w=a(i,i) Forj=1Ton+1 a(i,j)=a(i,j)/w Nextj Ifi=nThenGoTo100 Forj=i+1Ton Fork=i+1Ton+1 z(i,k)=a(i,k)*a(j,i) a(j,k)=a(j,k)-z(i,k) Nextk Nextj Nexti 100 '回代 x(n+1)=0 Fork=nTo1Step-1 s=0 Forj=k+1Ton s=s+a(k,j)*x(j) Nextj x(k)=a(k,n+1)-s 'st=st+"x("+str(i)+")="+format(x(i),"00.00")+"%"+ch 'print"x(";k;")=";x(k) Nextk Fori=1Ton'输出结果 st=st+"x("+Str(i)+")="+Format(x(i),"00.00")+"%"+ch Nexti st=st+ch st=st+"***时间: "+Str(Time)+Space(3)+"日期: "+Str(Date)+ch Text1.Text="" Text1.Text=st EndSub 五、实验结果截图 六、实验后思考 高斯消去法不需要方程组的初值,也不需要重复迭代计算。 只通过“消去”和“回代”2个过程就可以直接求出方程组的解。 然后若是在消去的过程中,若碰到主元为0,则无法计算。 所以,发展了“主元最大高斯消去法”。 就是在主元所在的列中,寻找到最大的元素,进行行与行之间的调换,并将该最大的元素作为主元,保证主元不为0。 实验五松弛迭代法求解化工中的线性方程组 一、实验目的 1)掌握松弛迭代法的基本算法及和紧凑迭代的细微区别 2)编写松弛迭代法求救线性方程组的VB代码,注意学习从文件读取数据 3)通过实例的程序进行验证,并观察松弛迭代因子对结果的影响 二、运行环境 1)MicrosoftWIndowseXP 2)VB6.0 三、实验原理 略 四、实验程序代码 PrivateSubCommand1_Click() DimnAsInteger Dimi,j,ff,t,k,l,h DimstAsString Dima()AsSingle Dimy()AsSingle Dimb()AsSingle Dimg()AsSingle Dimx1()AsSingle Dimx2()AsSingle Dimjk()AsInteger DimchAsString DimspAsString ch=Chr(13)+Chr(10) sp=Space(5)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 化工 中的 应用 实验 报告