计算机在化工中的应用实验报告文档格式.docx
《计算机在化工中的应用实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《计算机在化工中的应用实验报告文档格式.docx(34页珍藏版)》请在冰点文库上搜索。
![计算机在化工中的应用实验报告文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/656cb4ea-f4bc-4aa7-afd4-560cd2a78fba/656cb4ea-f4bc-4aa7-afd4-560cd2a78fba1.gif)
7组努塞尔准数、雷诺数及普兰德准数,数据最大时应采用直接从文件读取方法
x10=Array(0,100,200,300,500,100,700,800)'
注意下标的起点处理(加0)
x20=Array(0,2,4,1,0.3,5,3,4)'
y0=Array(0,1.127,2.416,2.205,2.312,1.484,6.038,7.325)'
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
a(1,2)=a(1,2)+x1(i)
a(2,1)=a(1,2)
a(1,3)=0
a(1,3)=a(1,3)+x2(i)
a(3,1)=a(1,3)
a(2,2)=0
a(2,2)=a(2,2)+x1(i)*x1(i)
a(3,3)=0
a(3,3)=a(3,3)+x2(i)*x2(i)
a(2,3)=0
a(2,3)=a(2,3)+x1(i)*x2(i)
a(3,2)=a(2,3)
求解法方程常数向量
y1
(1)=0
Fori=1Tom
y1
(1)=y1
(1)+y(i)
Nexti
y1
(2)=0
y1
(2)=y1
(2)+x1(i)*y(i)
y1(3)=0
y1(3)=y1(3)+x2(i)*y(i)
(利用克拉默法则解法方程/线性非常组)
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)
a(j,1)=b(j,1)
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)
a(j,2)=b(j,2)
b(j,3)=a(j,3)
a(j,3)=y1(j)
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
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);
"
序号"
"
模型计算值"
实验值"
Print
PrintTab(45);
i;
(Text1.Text)*(x10(i)^(Text2.Text))*(x20(i)^(Text3.Text));
0.023*(x10(i)^0.8)*(x20(i)^0.3)
EndSub
五、实验结果截图
六、实验后思考。
VB编程是一种简单,并且效率高的可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言。
。
通过对本实验的实际操作,我掌握了多变量曲线拟合的基本算法,了解了解线性方程组的克拉默法则。
并且,同时在以后的工作中,可以通过这个实验来解决大部分实验数据及模型参数的拟合问题。
实验二梯度法拟合蒸汽压与温度关系模型
一、实验目的
1)掌握梯度法拟合的基本算法以及理解其普适性
2)编写梯度法拟合蒸汽压与温度的关系的VB程序
3)通过实对程序进行验证,并注意比较初值对运行速度和结果的影响
二、运行环境
三、实验原理
四、实验VB程序代码
PrivateSubCommand1_Click(IndexAsInteger)
Dimm,nAsInteger
m=6
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)'
YY=Array(0.101,0.174,0.254,0.359,0.495,0.662,0.88)'
Print"
直接读数据文件后计算"
T(i)=XX(i)
T(i)=273.15+T(i)
P(i)=YY(i)*7600
PrintT(i),P(i)
Closei
A=Val(InputBox("
A"
))'
指定初值
B=Val(InputBox("
B"
C=Val(InputBox("
C"
1000F=0
ee=FNP(A,B,C,T(i),P(i))
ee=ee^2
F=F+ee
f1=0
A1=A+0.000001*A
print"
A,A1="
;
A,A1
ee=FNP(A1,B,C,T(i),P(i))
f1=f1+ee
TA=(f1-F)/(0.000001*A)
printf1,F,TA
A=val(inputbox("
))
f2=0
B1=B+0.00001*B
ee=FNP(A,B1,C,T(i),P(i))
f2=f2+ee
TB=(f2-F)/(0.00001*B)
f3=0
C1=C+0.00001*C
ee=FNP(A,B,C1,T(i),P(i))
f3=f3+ee
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
Fori=1Tom'
//计算绝对平均相对误差
sd=sd+Abs(FNSD(A,B,C,T(i),P(i)))/P(i)
PrintFNSD(A,B,C,T(i),P(i))
A,B,C="
A,B,C
sd="
sd'
//打印绝对平均相对误差
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
五、实验结果截图
六、实验后思考。
本实验是基于最小二乘原理,函数拟合的目标是使拟合函数和实际测量值之间的差的平方和最小。
对于最小值的问题,梯度法是用负梯度方向作为优化搜索方向。
而梯度法是一个简单的迭代优化计算方法。
注意的是,负梯度的最速下降性是一个局部的性质。
在计算的前期使用此法,当接近极小点时,在改用其他的算法,如共轭梯度法。
实验三二分法求解化工中的非线性方程
1)掌握二分法解非线性方程组的基本算法
2)编写二分法邱珏非线性方程组的VB程序
3)通过实例的程序进行调试,并学习输出数据格式化
二、运行环境
1)MicrosoftWindowsXP
四、实验VB代码
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)"
ax=200
bx=500
e=0.01
区间左端点初始值ax="
+Str(ax)+ch
区间右端点初始值bx="
+Str(bx)+ch
精度控制限e="
+Str(e)+ch
num"
+sp+"
ax"
+Space(14)+"
bx"
|ax-bx|"
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,"
)+sp+Format(Abs(ax-bx),"
0.0000"
)+ch
num=num+1
Loop
st=st+ch+"
2,3-二甲基苯胺沸点:
"
+Format(cx,"
#00.00"
)+"
K"
+ch+ch
***时间:
+Str(Time)+Space(3)+"
日期:
"
+Str(Date)+ch
Text1.Text="
Text1.Text=st
二分法求2,3-二甲基苯胺沸点所用函数
PrivateFunctionF(ByValuAsSingle)
F=Log(101325)-59.7622+8013.69/u+5.081*Log(u)'
注意对数运算
通过应用微积分中的介值定理,是是用二分法的前提条件。
如果我们所要求解的方程从物理意义上来讲确实存在实根,但又不满足f(a)f(b)<
0,这时候,我们必须通过改变a和b的值来满足二分法的应用条件。
实验四主元最大高斯消元法解化工中的线性方程组
1)掌握主元最大高斯消元法
2)编写最大高斯消元法求解线性方程组的VB程序
3)通过实例对程序进行调试,并比较一般的高斯消去法比较
1)MicrosoftWIndowsXP_
四、实验程序代码
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
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
主元最大高斯消去法解线性方程组"
设有一混合物由硝基苯、苯胺、氨基丙酮、乙醇组成;
对该混合物进行元素分析结果以百分数表示如下"
C%=57.78%;
H%=7.92%;
N%=11.23%;
O%=23.09%"
原子量:
A(C)=12.01;
A(H)=1.008;
A(N)=14.01;
A(O)=16.00"
分子量:
硝基苯123.1;
苯胺93.13;
氨基丙酮73.10;
乙醇43.07"
硝基苯分子C-6;
H-5;
N-1;
O-2"
苯胺分子C-6;
H-7;
O-0"
氨基丙酮分子C-3;
O-1"
乙醇分子C-2;
H-6;
N-0;
确定上面四种化合物在混合物中所占的百分比"
寻找主元
Fori=1Ton
Ifi=nThenGoTo200
Fort=i+1Ton
IfAbs(a(i,i))<
Abs(a(t,i))Then
Fors=iTon+1
aa(t,s)=a(i,s)
a(i,s)=a(t,s)
a(t,s)=aa(t,s)
Nexts
Nextt
200
消去
w=a(i,i)
Forj=1Ton+1
a(i,j)=a(i,j)/w
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
100
回代
x(n+1)=0
Fork=nTo1Step-1
s=0
Forj=k+1Ton
s=s+a(k,j)*x(j)
x(k)=a(k,n+1)-s
'
st=st+"
x("
+str(i)+"
)="
+format(x(i),"
00.00"
)+"
%"
+ch
k;
x(k)
Fori=1Ton'
输出结果
st=st+"
+Str(i)+"
+Format(x(i),"
st=st+ch
六、实验后思考
高斯消去法不需要方程组的初值,也不需要重复迭代计算。
只通过“消去”和“回代”2个过程就可以直接求出方程组的解。
然后若是在消去的过程中,若碰到主元为0,则无法计算。
所以,发展了“主元最大高斯消去法”。
就是在主元所在的列中,寻找到最大的元素,进行行与行之间的调换,并将该最大的元素作为主元,保证主元不为0。
实验五松弛迭代法求解化工中的线性方程组
1)掌握松弛迭代法的基本算法及和紧凑迭代的细微区别
2)编写松弛迭代法求救线性方程组的VB代码,注意学习从文件读取数据
3)通过实例的程序进行验证,并观察松弛迭代因子对结果的影响
1)MicrosoftWIndowseXP
四、实验程序代码
DimnAsInteger
Dimi,j,ff,t,k,l,h
Dima()AsSingle
Dimy()AsSingle
Dimb()AsSingle
Dimg()AsSingle
Dimx1()AsSingle
Dimx2()AsSingle
Dimjk()AsInteger