计算机在化工中的应用实验报告

时间:2024.3.31

《计算机在化学化工中的应用》

实验报告

学院: 化学与化工学院

       班级:12级硕勋励志班

            姓名:      徐凯杰

            学号:    120702028

实验一   传热实验中多变量的曲线的拟合

一、实验目的

1)熟悉VB编程平台

2)掌握多变量曲线拟合的算法

3)编拟合所给的传热实验模型的VB程序

4)通过实验数据求出模型数据、并掌握解线性方程组的克拉默法则

二、运行环境

1)Microsoft Windows XP

2)VB6.0

三、实验原理

四、vb代码

Private Sub Command1_Click()

Dim m As Integer

'm=inputbox(“实验次数”)

m = 7

Dim x10, x20, y0

Dim i, j, k As Integer

Dim a(1 To 10, 1 To 10), y(1 To 10), y1(1 To 10), a0, a1, a2

Dim s, S1, S2, S3, b(1 To 10, 1 To 10), xx

Dim x1(1 To 10), x2(1 To 10), YY, sd

'open"dem.dat"for input as#1

'for i=1 to m

'   input#1,xx,YY

'   x1(i)=xx

'   x2(i0=xx^2

'   y(i)=YY

'next i

'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)

For i = 1 To m

    x1(i) = Log(x10(i))

    x2(i) = Log(x20(i))

    y(i) = Log(y0(i))

Next i

'求解法方程系数矩阵

a(1, 1) = m

a(1, 2) = 0

For i = 1 To m

  a(1, 2) = a(1, 2) + x1(i)

Next i

a(2, 1) = a(1, 2)

a(1, 3) = 0

For i = 1 To m

  a(1, 3) = a(1, 3) + x2(i)

Next i

a(3, 1) = a(1, 3)

a(2, 2) = 0

For i = 1 To m

  a(2, 2) = a(2, 2) + x1(i) * x1(i)

Next i

a(3, 3) = 0

For i = 1 To m

  a(3, 3) = a(3, 3) + x2(i) * x2(i)

Next i

a(2, 3) = 0

For i = 1 To m

  a(2, 3) = a(2, 3) + x1(i) * x2(i)

Next i

a(3, 2) = a(2, 3)

'求解法方程常数向量

y1(1) = 0

  For i = 1 To m

     y1(1) = y1(1) + y(i)

  Next i

y1(2) = 0

  For i = 1 To m

    y1(2) = y1(2) + x1(i) * y(i)

  Next i

y1(3) = 0

  For i = 1 To m

    y1(3) = y1(3) + x2(i) * y(i)

  Next 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)

For j = 1 To 3

      b(j, 1) = a(j, 1)

      a(j, 1) = y1(j)

Next j

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)

For j = 1 To 3

      a(j, 1) = b(j, 1)

Next j

For j = 1 To 3

      b(j, 2) = a(j, 2)

      a(j, 2) = y1(j)

      Next j

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)

For j = 1 To 3

      a(j, 2) = b(j, 2)

      Next j

For j = 1 To 3

      b(j, 3) = a(j, 3)

      a(j, 3) = y1(j)

Next 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

For i = 1 To m

   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

Print Tab(50); "序号", "模型计算值", "实验值"

For i = 1 To m

Print

Print Tab(45); i; (Text1.Text) * (x10(i) ^ (Text2.Text)) * (x20(i) ^ (Text3.Text)); 0.023 * (x10(i) ^ 0.8) * (x20(i) ^ 0.3)

Next

End Sub

五、实验结果截图

六、实验后思考。

    VB编程是一种简单,并且效率高的可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言。。通过对本实验的实际操作,我掌握了多变量曲线拟合的基本算法,了解了解线性方程组的克拉默法则。并且,同时在以后的工作中,可以通过这个实验来解决大部分实验数据及模型参数的拟合问题。

实验二  梯度法拟合蒸汽压与温度关系模型

一 、实验目的

1)掌握梯度法拟合的基本算法以及理解其普适性

2)编写梯度法拟合蒸汽压与温度的关系的VB程序

3)通过实对程序进行验证,并注意比较初值对运行速度和结果的影响

二 、运行环境

1)Microsoft  Windows XP

2)VB6.0

三 、实验原理

四、 实验VB程序代码

Private Sub Command1_Click(Index As Integer)

Dim m, n As Integer

m = 6

Dim i, j, k As Integer

Dim A, B, C, F, ee, P(1 To 10), T(1 To 10)

Dim A1, B1, C1, TA, TB, TC, TT, f1, f2, f3

Dim sd, 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 "直接读数据文件后计算"

For i = 1 To m

    T(i) = XX(i)

    T(i) = 273.15 + T(i)

    P(i) = YY(i) * 7600

    Print T(i), P(i)

Next i

Close i

  A = Val(InputBox("A")) '指定初值

  B = Val(InputBox("B")) '指定初值

  C = Val(InputBox("C")) '指定初值

1000       F = 0

For i = 1 To m

         ee = FNP(A, B, C, T(i), P(i))

         ee = ee ^ 2

         F = F + ee

Next i

f1 = 0

A1 = A + 0.000001 * A

'print"A,A1=";A,A1

For i = 1 To m

         ee = FNP(A1, B, C, T(i), P(i))

         ee = ee ^ 2

         f1 = f1 + ee

Next i

TA = (f1 - F) / (0.000001 * A)

'print f1,F,TA

'A=val(inputbox("A"))

f2 = 0

B1 = B + 0.00001 * B

For i = 1 To m

        ee = FNP(A, B1, C, T(i), P(i))

        ee = ee ^ 2

        f2 = f2 + ee

Next i

TB = (f2 - F) / (0.00001 * B)

f3 = 0

C1 = C + 0.00001 * C

For i = 1 To m

        ee = FNP(A, B, C1, T(i), P(i))

        ee = ee ^ 2

        f3 = f3 + ee

Next i

TC = (f3 - F) / (0.00001 * C)

TT = TA ^ 2 + TB ^ 2 + TC ^ 2

TT = Sqr(TT)

If TT > 0.001 Then

A = A - 0.005 * TA

B = B - 1.5 * TB

C = C - 0.001 * TC

GoTo 1000

Else

End If

Print

sd = 0

For i = 1 To m '//计算绝对平均相对误差

sd = sd + Abs(FNSD(A, B, C, T(i), P(i))) / P(i)

Print FNSD(A, B, C, T(i), P(i))

Next i

sd = sd / m

Print

Print "A,B,C="; A, B, C

Print "sd="; sd '//打印绝对平均相对误差

End Sub

Public Function FNP(A, B, C, T, P)

FNP = (A - B / (T + C)) - Log(P)

End Function

Public Function FNSD(A, B, C, T, P)

FNSD = Exp(A - B / (T + C)) - P

End Function

五 、实验结果截图

六 、实验后思考。

本实验是基于最小二乘原理,函数拟合的目标是使拟合函数和实际测量值之间的差的平方和最小。对于最小值的问题,梯度法是用负梯度方向作为优化搜索方向。而梯度法是一个简单的迭代优化计算方法。注意的是,负梯度的最速下降性是一个局部的性质。在计算的前期使用此法,当接近极小点时,在改用其他的算法,如共轭梯度法。

实验三  二分法求解化工中的非线性方程

一、实验目的

1)掌握二分法解非线性方程组的基本算法

2)编写二分法邱珏非线性方程组的VB程序

3)通过实例的程序进行调试,并学习输出数据格式化

二、 运行环境

1)Microsoft WindowsXP

2)VB6.0

三 、实验原理

四 、实验VB代码

Private Sub Command1_Click()

Dim ax As Single

Dim bx As Single

Dim cx As Single

Dim ay As Single

Dim by As Single

Dim cy As Single

Dim e As Single

Dim num As Integer '累计次数变量

Dim st As String

Dim ch As String

Dim sp As String

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

Do While Abs(ax - bx) > e

   cx = (ax + bx) / 2

   cy = F(cx)

   If cy = 0 Then Exit Do '如果已得解,则退出循环

   If cy * ay > 0 Then

           ax = cx

           ay = cy

   Else

           bx = cx

           by = cy

   End If

   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

End Sub

'二分法求2,3-二甲基苯胺沸点所用函数

Private Function F(ByVal u As Single)

F = Log(101325) - 59.7622 + 8013.69 / u + 5.081 * Log(u) '注意对数运算

End Function

五、实验结果截图

六 、实验后思考。

    通过应用微积分中的介值定理,是是用二分法的前提条件。如果我们所要求解的方程从物理意义上来讲确实存在实根,但又不满足f(a)f(b)<0,这时候,我们必须通过改变a和b的值来满足二分法的应用条件。

实验四  主元最大高斯消元法解化工中的线性方程组

一、实验目的

1)掌握主元最大高斯消元法

2)编写最大高斯消元法求解线性方程组的VB程序

3)通过实例对程序进行调试,并比较一般的高斯消去法比较

二 、运行环境

1)Microsoft WIndowsXP_

2)VB6.0

三 、实验原理

四 、实验程序代码

Private Sub Command1_Click()

Dim m, n As Integer

Dim a(), z(), x(), w, aa(), s, t, k, l

n = 4

ReDim a(n + 2, 2 + n), z(n + 2, 2 + n), x(n + 1), aa(n + 2, 2 + n)

Dim i, j, k1, k2, st

Dim ch As String

Dim sp As String

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

'寻找主元

For i = 1 To n

   If i = n Then GoTo 200

   For t = i + 1 To n

      If Abs(a(i, i)) < Abs(a(t, i)) Then

         For s = i To n + 1

            aa(t, s) = a(i, s)

            a(i, s) = a(t, s)

            a(t, s) = aa(t, s)

         Next s

         Else

         End If

   Next t

200

'消去

w = a(i, i)

   For j = 1 To n + 1

       a(i, j) = a(i, j) / w

   Next j

If i = n Then GoTo 100

For j = i + 1 To n

    For k = i + 1 To n + 1

        z(i, k) = a(i, k) * a(j, i)

        a(j, k) = a(j, k) - z(i, k)

    Next k

Next j

Next i

100

'回代

x(n + 1) = 0

    For k = n To 1 Step -1

        s = 0

        For j = k + 1 To n

            s = s + a(k, j) * x(j)

        Next j

        x(k) = a(k, n + 1) - s

        'st=st+"x("+str(i)+")="+format(x(i),"00.00")+"%"+ch

        'print"x(";k;")=";x(k)

    Next k

For i = 1 To n '输出结果

    st = st + "x(" + Str(i) + ")=" + Format(x(i), "00.00") + "%" + ch

Next i

st = st + ch

st = st + "***时间:" + Str(Time) + Space(3) + "日期:" + Str(Date) + ch

Text1.Text = ""

Text1.Text = st

End Sub

五 、实验结果截图

六、 实验后思考

高斯消去法不需要方程组的初值,也不需要重复迭代计算。只通过“消去”和“回代”2个过程就可以直接求出方程组的解。然后若是在消去的过程中,若碰到主元为0,则无法计算。所以,发展了“主元最大高斯消去法”。就是在主元所在的列中,寻找到最大的元素,进行行与行之间的调换,并将该最大的元素作为主元,保证主元不为0。

实验五  松弛迭代法求解化工中的线性方程组

一、实验目的

1)掌握松弛迭代法的基本算法及和紧凑迭代的细微区别

2)编写松弛迭代法求救线性方程组的VB代码,注意学习从文件读取数据

3)通过实例的程序进行验证,并观察松弛迭代因子对结果的影响

二、运行环境

1)Microsoft WIndowse XP

2)VB6.0

三、实验原理

四、实验程序代码

Private Sub Command1_Click()

Dim n As Integer

Dim i, j, ff, t, k, l, h

Dim st As String

Dim a() As Single

Dim y() As Single

Dim b() As Single

Dim g() As Single

Dim x1() As Single

Dim x2() As Single

Dim jk() As Integer

Dim ch As String

Dim sp As String

ch = Chr(13) + Chr(10)

sp = Space(5)

CommonDialog1.CancelError = True

'on error goto errhandler

CommonDialog1.Filter = "数据文件(*.txt)|*.txt|拉图文件(*.bmp)|*.bmp|AllFiles(*.*)|*.*" '文件过滤

CommonDialog1.FilterIndex = 0

CommonDialog1.DialogTitle = "加载增广矩阵数据文件"

CommonDialog1.ShowOpen

'*****数据文件的行数就是方程的个数

Open CommonDialog1.FileName For Input As #1

Do While Not EOF(1)

  Line Input #1, st

  n = n + 1

Loop

Close #1

'*****数据文件的行数就是方程的个数

ReDim a(1 To n, 1 To n) As Single

ReDim b(1 To n, 1 To n) As Single

ReDim x1(1 To n) As Single

ReDim x2(1 To n) As Single

ReDim g(1 To n) As Single

ReDim y(1 To n) As Single

'*****读数据

Open CommonDialog1.FileName For Input As #1

For i = 1 To n

     For j = 1 To n

         Input #1, a(i, j)   '方程等号左端数据

     Next j

     Input #1, y(i)         '方程等号右端数据

Next i

Close #q

'*****读数据

st = "松弛迭代法解线性方程" + ch

st = st + Space(5) + "数据来源于" + CommonDialog1.FileName + ch + ch

st = st + "增广矩阵如下(对二甲苯-间二甲苯-邻二甲苯-乙苯---(混合物):" + ch + ch

st = st + Space(5) + "第一行为12.5nm波长处摩尔吸收系数-混合物吸收" + ch

st = st + Space(5) + "第一行为13.0nm波长处摩尔吸收系数-混合物吸收" + ch

st = st + Space(5) + "第一行为13.4nm波长处摩尔吸收系数-混合物吸收" + ch

st = st + Space(5) + "第一行为14.3nm波长处摩尔吸收系数-混合物吸收" + ch + ch

'*****输出原始数据

 For i = 1 To n

     For j = 1 To n

       If a(i, j) >= 0 Then

           st = st + Space(5) + Format(a(i, j), "0.00000")

       Else

           st = st + Space(4) + Format(a(i, j), "0.00000")

       End If

     Next j

     If y(i) >= 0 Then

        st = st + Space(5) + Format(y(i), "0.00000") + ch

     Else

        st = st + Space(4) + Format(y(i), "0.00000") + ch

     End If

   Next i

'*****输出原始数据

'---------------------------------------

For i = 1 To n

    x1(i) = 0

    x2(i) = 0

Next i

'for i = 1 to n

'  for j = 1 to n

'    a(i,j) = InputBox("a("&i&","&j&")")

'    Print a(i,j),

' next j

'y(i) = InputBox("y("&i&")")

'print"              ",y(i)

'Next i

'产生迭代矩阵

For i = 1 To n

    g(i) = y(i) / a(i, i)

    For j = 1 To n

       If j = i Then

          b(i, j) = 0

       Else

          b(i, j) = -a(i, j) / a(i, i)

       End If

    Next j

    Next i

    e = InputBox("输入松弛因子")

    '开始松弛迭代

Do

  If k >= 1 Then

     For i = 1 To n

        x1(i) = x2(i)

     Next i

 End If

 For i = 1 To n

     s = g(i)

     For j = 1 To n

         s = s + b(i, j) * x2(j)

     Next j

         x2(i) = (1 - e) * x1(i) + e * s '注意

    Next i

     eer = 0

     For i = 1 To n

           eer = cer + Abs(x1(i) - x2(i)) '计算误差

     Next i

     k = k + 1 '累计次数

Loop While (k < 100 And eer >= 0.001)

    Print k

st = st + ch + "方程组的解为:" + ch + ch

For i = 1 To n

     st = st + "x(" + Str(i) + ")=" + Format(x2(i), "0.00000") + ch

     Next i

st = st + ch + "迭代次数为:" + Str(k) + ch 'format(k,"000")

st = st + ch + "松弛因子为:" + Format(e, "0.0000") + ch

st = st + ch + "误差为:" + Format(eer, "0.000000") + ch

st = st + ch

st = st + "***时间:" + Str(Time) + Space(3) + "日期:" + Str(Date) + ch

Text1.Text = ""

Text1.Text = st

   

End Sub

五、实验结果截图

六、 实验后思考。

松弛迭代法是数值计算中解线性代数方程组的一类迭代法。逐次超松弛迭代过程中,已知迭代方程及其系数矩阵,对任意的初始值,确定超松弛因子,用迭代矩阵来进行计算确定谱半径,然后其绝对值小于一解出来超松弛因子。

而紧凑迭代是当松弛因子为1的时候,叫做紧凑迭代。两者的区别在于松弛因子的不同。

实验六  龙格库塔法求解化工过程中的常微分方程

一、实验目的

1) 掌握龙格库塔法的基本原理

2) 编写龙格库塔法解决常微分方程的VB程序

3) 通过实例的程序进行调试和验证,并观察初值对计算过程及结果的影响

4) 掌握VB绘制二维曲线图的方法和绘图参数的设置

二、 运行环境

1)Microsoft WindowsXP

2)VB6.0

三 、实验原理

四、 实验程序截图

Private Sub Command1_Click()

Const eps = 0.00001

Dim t() As Single

Dim x() As Single

Dim y() As Single

Dim z() As Single

Dim J1, J2 As Single

Dim K1, K2, K3, K4 As Single

Dim Q1, Q2, Q3, Q4 As Single

Dim S1, S2, S3, S4 As Single

Dim h As Single

Dim i As Integer

Dim n As Integer

h = 0.01

J1 = 1

J2 = 1.1

n = Int(10 / h)

ReDim t(n + 1), x(n + 1), y(n + 1), z(n + 1) As Single

t(0) = 0

x(0) = 0

y(0) = 0

'z(0) = 0

For i = 0 To n - 1

K1 = -J1 * x(i)

Q1 = J1 * x(i) - J2 * y(i)

S1 = h * (J2 * y(i))

K2 = -J1 * (x(i) + h * K1 / 2)

Q2 = J1 * (x(i) + h * K1 / 2) - J2 * (y(i) + h * Q1 / 2)

S2 = h * (J2 * (y(i) + Q1 / 2))

K3 = -J1 * (x(i) + h * K2 / 2)

Q3 = J1 * (x(i) + h * K2 / 2) - J2 * (y(i) + h * Q2 / 2)

S3 = h * (J2 * (y(i) + Q2 / 2))

K4 = -J1 * (x(i) + h * K3)

Q4 = J1 * (x(i) + h * K3) - J2 * (y(i) + h * Q3)

S4 = h * (J2 * (y(i) + Q3))

x(i + 1) = x(i) + h * (K1 + 2 * K2 + 2 * K3 + K4) / 6 '计算A物质的浓度

y(i + 1) = y(i) + h * (Q1 + 2 * Q2 + 2 * Q3 + Q4) / 6

z(i + 1) = z(i) + (S1 + 2 * Q2 + 2 * Q3 + Q4) / 6

z(i) = x(0) - x(i) - y(i)

t(i + 1) = t(i) + h   '计算反应时间t

Next i

Dim axisname1 As String, axisname2 As String

axisname1 = "t"

axisname2 = ""

xy_axis picture1, t(), x(), axisname1, axisname2

For i = 0 To n - 1

         picture1.PSet (t(i), x(i))

Next i

'xy_axis picture1,t(),y(),axisname1,axisname2

For i = 0 To n - 1

          Picture.PSet (t(i), y(i))

 Next i

 'xy_axis picture1,t(),z(),axisname1,axisname2

 For i = 0 To n - 1

           Picture.PSet (t(i), z(i))

Next i

End Sub

模块代码

Sub xy_axis(pic As PictureBox, x1() As Single, y1() As Single, axisname1 As String, axisname2 As String)

On Error GoTo problemx:

Dim maxnumber As Single, minnumber As Single

Dim leftx As Single, topy As Single

Dim rightx As Single, bottomy As Single

Dim n As Integer

n = UBound(x1)

pic.Font.Size = 12

pic.Font.Name = "宋体"

pic.DrawWidth = 2

maxmin x1(), maxnumber, minnumber

leftx = minnumber

rightx = maxnumber

maxmin y1(), maxnumber, minnumber

topy = maxnumber

bottomy = minnumber

Dim linelen1 As Single, linelen2 As Single

linelen1 = Abs(rightx - leftx) / 4

linelen2 = Abs(topy - bottomy) / 3

pic.Scale (leftx - linelen1, topy + linelen2)-(righrx + linelen1, bottomy - linelen2)

pic.DrawStyle = 0

pic.Line (leftx, bottomy)-(rightx, bottomy)

pic.Line (leftx, bottomy)-(leftx, topy)

Dim jj As Single

For jj = leftx To rightx + 0.0001 * linelen1 Step linelen1

         pic.Line (jj, bottomy)-(jj, bottomy + 0.08 * linelen2)

         pic.CurrentX = jj - 0.2 * linelen1

         pic.CurrentY = bottomy - 0.1 * linelen2

         If jj > 100 Then

            pic.Print Format(Trim(Str(jj)), "#000")

        ElseIf Abs(jj) < 0.01 Then

            pic.Print Format(Trim(Str(jj) * 10000), "#0.00")

        Else

           pic.Print Format(Trim(Str(jj)), "#0.00")

        End If

  Next jj

  pic.CurrentX = leftx

  pic.CurrentY = topy + 0.5 * linelen2

  pic.Print Trim(axisname2)

  Exit Sub

problemx:

  MsgBox "数据异常,请退出"

End Sub

Sub maxmin(x1() As Single, ByRef maxnumber As Single, ByRef minnumber As Single)

Dim n1 As Integer, n2 As Integer

Dim i As Integer

n1 = UBound(x1)

n2 = LBound(x1)

maxnumber = x1(n2)

minnumber = x1(n2)

For i = n2 + 1 To n1

    If x1(i) > maxnumber Then

       maxnumber = x1(i)

    ElseIf x1(i) < minnumber Then

       minnumber = x1(i)

  End If

  Next

End Sub

五 、实验结果截图

六 、实验后思考

龙格库塔法时求解常微分方程的常用的一种方法,他通过巧妙的线性组合,在显示格式的情况下活动理想的计算精度,大大提高了计算速度。它的主要优点是计算精度较高,能满足通常的计算要求,且容易编制程序。是一个求解常微分的一个好方法。

七   自己编写的VB

 

VB编写圆面积的计算。

代码为:Private Sub Command1_Click()

r = Val(Text1.Text)

Text2.Text = Str(3.1416 * r * r)

End Sub

Origin  图片

更多相关推荐:
化工原理实验精馏实验报告

北京化工大学学生实验报告学院:化学工程学院姓名:学号:专业:化学工程与工艺班级:化工1012班同组人员:课程名称:化工原理实验实验名称:精馏实验实验日期20XX.5.15北京化工大学实验五精馏实验摘要:本实验通…

化工原理实验总结报告

化工原理实验总结报告时光匆匆流逝,转眼间,化工原理实验要结课了,两个学期共做了六个实验,每个实验都让我收益颇多,不仅加深了对化工原理课程理论知识的理解,还熟悉了实验流程、步骤,了解了一些实际操作中的问题。在学习…

化工原理实验报告

实验报告课程名称学院专业班姓名学号同组人员实验时间指导教师化工原理生物与化学工程学院制药专升本101邵丽菁310044003张敏玲吴宁宇20xx年4月25日诸爱士一实验课程名称化工原理二实验项目名称空气蒸汽对流...

化工原理实验报告

实践创新基础报告姓名班级学号指导教师日期成绩南京工业大学化学工程与工艺专业实验名称流体流动阻力测定实验一实验目的1测定流体在圆直等径管内流动时的摩擦系数与雷诺数Re的关系将测得的Re曲线与由经验公式描出的曲线比...

化工原理实验报告_吸收

填料塔流体力学特性与吸收系数的测定一实验目的1观察填料塔内气液两相流动情况和液泛现象2测定干湿填料层压降在双对数坐标纸上标绘出空塔气速与湿填料层压降的关系曲线3了解填料吸收塔的流程及构造4测定在一定条件下用水吸...

化工原理流体综合实验报告

流体综合实验实验目的1能进行光滑管粗糙管闸阀局部阻力测定实验测出湍流区阻力系数与雷诺数关系曲线图2能进行离心泵特性曲线测定实验测出扬程与流量功率与流量以及离心泵效率与流量的关系曲线图3学习工业上流量功率转速压力...

化工原理实验报告

化工原理实验指导书1填料吸收塔实验11常压填料吸收塔实验111实验目的1了解加压常压填料塔吸收装置的基本结构及流程2掌握总体积传质系数的测定方法3测定填料塔的流体力学性能4了解气体空塔速度和液体喷淋密度对总体积...

化工实验报告-流量计的流量校正

实验报告ExperimentationReportofTaiyuanteachersCollege系部化学系年级大四课程化工实验姓名学号日期20xx0919项目流量计的流量校正一实验目的1学会流量计的校正方法2...

《化工仪表及自动化》实验指导书

实验一实验项目名称温度传感器热电偶测温实验及热电偶标定实验项目性质综合实验所属课程名称化工仪表及自动化实验计划学时2学时一实验目的1了解热电偶的结构及测温工作原理2掌握热电偶校验的基本方法3学习如何定期检验热电...

化工原理实验 流量计校核实验报告

流量计校核一实验操作1熟悉实验装置了解各阀门的位置及作用2对装置中有关管道导压管压差计进行排气使倒U形压差计处于工作状态3对应每一个阀门开度用容积法测量流量同时记下压差计的读数按由小到大的顺序在小流量时测量89...

《化工仪表及自动化》实验报告书

学院专业班组学号姓名协作者教师评定实验题目温度传感器热电偶测温实验及热电偶标定一实验目的1了解热电偶的结构及测温工作原理2掌握热电偶校验的基本方法3学习如何定期检验热电偶误差判断是否及格二实验内容和要求观察热电...

化工原理实验报告

化工原理实验离心泵特性曲线测定学院专业班级学号姓名xxx化工原理实验一实验目的1了解离心泵结构与特性熟悉离心泵的使用2掌握离心泵特性曲线测定方法3了解电动调节阀的工作原理和使用方法二基本原理1扬程H的测定与计算...

化工实验报告(33篇)