📄 form3.frm
字号:
End If
Next
n = 1: DL(0) = 0: Ua1(0) = 10: Ub1(0) = 0 '准备
For i = 0 To 68
a(i, 0) = i
b(i, 0) = i
Next
Do
p = 1
For i = DL(0) To 68
If table(DL(0), i) = 1 Then
a(DL(0), p) = i
p = p + 1
DL(n) = i
n = n + 1
End If
Next
For j = 0 To 68
DL(j) = DL(j + 1)
Next
n = n - 1
Loop While (n <> 0)
For i = 1 To 68
For j = 0 To 68
For p = 1 To 3
If a(j, p) = i Then
b(i, 1) = j
End If
Next
Next
Next
p = 0
For i = 0 To 68
If a(i, 1) = 0 Then
DL(p) = i
p = p + 1
End If
Next
nnn = 0 '前推回代
Do
For i = 0 To 68
Ia(i) = 0
Ib(i) = 0
Ila(i) = 0
Ilb(i) = 0
cc(i) = 0
Next
For i = 0 To p - 1
dq = b(DL(i), 1) '找到一个叶子节点的前继作为当前点计算支路电流
Ia(DL(i)) = (pp(DL(i)) * Ua(DL(i)) + qq(DL(i)) * Ub(DL(i))) / (Ua(DL(i)) * Ua(DL(i)) + Ub(DL(i)) * Ub(DL(i)))
Ib(DL(i)) = (pp(DL(i)) * Ub(DL(i)) - qq(DL(i)) * Ua(DL(i))) / (Ua(DL(i)) * Ua(DL(i)) + Ub(DL(i)) * Ub(DL(i)))
Ila(DL(i)) = Ia(DL(i))
Ilb(DL(i)) = Ib(DL(i))
cc(DL(i)) = 1 '数组cc存放已经算完的支路的序号
Do
n1 = 0
For j = 1 To 3 '判断当前点是否有后续(一定有)
If a(dq, j) <> 0 Then
s(n1) = a(dq, j) '数组s存放当前点的后续
n1 = n1 + 1 'n1记录后续的个数
End If
Next
n0 = n1
For j = 0 To n0 - 1
If cc(s(j)) = 1 Then '判断当前点的后续是否全部算完
n0 = n0 - 1 'n0=0即全部算完
End If
Next
If n1 <> 0 Then
If n0 = 0 Then
For j = 1 To n1
Ila(dq) = Ila(a(dq, j)) + Ila(dq)
Ilb(dq) = Ilb(a(dq, j)) + Ilb(dq)
Next
Ila(dq) = Ila(dq) + (pp(dq) * Ua(dq) + qq(dq) * Ub(dq)) / (Ua(dq) * Ua(dq) + Ub(dq) * Ub(dq))
Ilb(dq) = Ilb(dq) + (pp(dq) * Ub(dq) - qq(dq) * Ua(dq)) / (Ua(dq) * Ua(dq) + Ub(dq) * Ub(dq))
cc(dq) = 1
dq = b(dq, 1) '得到当前点的前继作为新的当前点
End If
End If
Loop While n0 = 0 And dq <> 0 '当前点的后续全部算完,则进行do循环,计算前继点(即新的当前点)
Next '后续没有全部算完,则进行for循环,找到下一个叶子节点进行计算
n = 0
Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\结果.mdb;" '数据库名
Adodc1.RecordSource = "select * from 电流" '查询语句
Adodc1.Refresh
Adodc1.Recordset.AddNew '添加
For i = 1 To 68
Adodc1.Recordset.Fields(n) = Sqr(Ila(i) ^ 2 + Ilb(i) ^ 2)
n = n + 1
Next
Adodc1.Recordset.Update
Adodc1.Refresh
For i = 0 To 68
Ua2(i) = Ua(i)
Ub2(i) = Ub(i)
Next
For i = 0 To 68 '由已知当前电压推算它的后继电压
For j = 1 To 3
If a(i, j) <> 0 Then
Ua1(a(i, j)) = Ua(i) - Ila(a(i, j)) * rr(a(i, j)) / 1000 + Ilb(a(i, j)) * xx(a(i, j)) / 1000
Ub1(a(i, j)) = Ub(i) - Ilb(a(i, j)) * rr(a(i, j)) / 1000 - Ila(a(i, j)) * xx(a(i, j)) / 1000
Ua(a(i, j)) = Ua1(a(i, j))
Ub(a(i, j)) = Ub1(a(i, j))
End If
Next
Next
n2 = 69
For i = 0 To 68
If Abs(Ua2(i) - Ua(i)) < 0.000001 And Abs(Ub2(i) - Ub(i)) < 0.000001 Then
n2 = n2 - 1
End If
Next
If n2 = 0 Then
For i = 0 To 67
Sa(i) = Ua(i) * Ila(i + 1) + Ub(i) * Ilb(i + 1)
Sb(i) = Ua(i) * Ilb(i + 1) - Ub(i) * Ila(i + 1)
Next
For i = 1 To 68
Ploss = Ploss + Sqr(Ila(i) ^ 2 + Ilb(i) ^ 2) * rr(i)
Next
Text1.Text = Ploss
Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\结果.mdb;" '数据库名
Adodc1.RecordSource = "select * from 潮流计算" '查询语句
Adodc1.Refresh
For i = 1 To 68
Adodc1.Recordset.AddNew '添加
Adodc1.Recordset.Fields(0) = i
Adodc1.Recordset.Fields(1) = Ua(i)
Adodc1.Recordset.Fields(2) = Ub(i)
Adodc1.Recordset.Fields(3) = Sqr(Ua(i) ^ 2 + Ub(i) ^ 2)
Adodc1.Recordset.Fields(4) = Sqr(Sa(i) ^ 2 + Sb(i) ^ 2)
Next
Adodc1.Recordset.Update
Adodc1.Refresh
End If
Loop While n2 <> 0 '不收敛,继续循环前推回代
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\db2.mdb;" '数据库名
Adodc1.RecordSource = "select * from data" '查询语句
Adodc1.Refresh
For i = 0 To 68
For j = 0 To 68
table(i, j) = 0
Next
Next
table(0, 1) = 1
table(1, 0) = 1: table(1, 2) = 1
table(2, 1) = 1: table(2, 3) = 1: table(2, 27) = 1: table(2, 58) = 1
table(3, 2) = 1: table(3, 4) = 1: table(3, 35) = 1
table(4, 3) = 1: table(4, 5) = 1
table(5, 4) = 1: table(5, 6) = 1
table(6, 5) = 1: table(6, 7) = 1
table(7, 6) = 1: table(7, 8) = 1: table(7, 39) = 1
table(8, 7) = 1: table(8, 9) = 1: table(8, 41) = 1
table(9, 8) = 1: table(9, 10) = 1
table(10, 9) = 1: table(10, 11) = 1: table(10, 54) = 1
table(11, 10) = 1: table(11, 12) = 1: table(11, 56) = 1
table(12, 11) = 1: table(12, 13) = 1
table(13, 12) = 1: table(13, 14) = 1
table(14, 13) = 1: table(14, 15) = 1
table(15, 14) = 1: table(15, 16) = 1
table(16, 15) = 1: table(16, 17) = 1
table(17, 16) = 1: table(17, 18) = 1
table(18, 17) = 1: table(18, 19) = 1
table(19, 18) = 1: table(19, 20) = 1
table(20, 19) = 1: table(20, 21) = 1
table(21, 20) = 1: table(21, 22) = 1
table(22, 21) = 1: table(22, 23) = 1
table(23, 22) = 1: table(23, 24) = 1
table(24, 23) = 1: table(24, 25) = 1
table(25, 24) = 1: table(25, 26) = 1
table(26, 25) = 1
table(27, 2) = 1: table(27, 28) = 1
table(28, 27) = 1: table(28, 29) = 1
table(29, 28) = 1: table(29, 30) = 1
table(30, 29) = 1: table(30, 31) = 1
table(31, 30) = 1: table(31, 32) = 1
table(32, 31) = 1: table(32, 33) = 1
table(33, 32) = 1: table(33, 34) = 1
table(34, 33) = 1
table(35, 3) = 1: table(35, 36) = 1
table(36, 35) = 1: table(36, 37) = 1
table(37, 36) = 1: table(37, 38) = 1
table(38, 37) = 1
table(39, 7) = 1: table(39, 40) = 1
table(40, 39) = 1
table(41, 8) = 1: table(41, 42) = 1
table(42, 41) = 1: table(42, 43) = 1
table(43, 42) = 1: table(43, 44) = 1
table(44, 43) = 1: table(44, 45) = 1
table(45, 44) = 1: table(45, 46) = 1
table(46, 45) = 1: table(46, 47) = 1
table(47, 46) = 1: table(47, 48) = 1
table(48, 47) = 1: table(48, 49) = 1
table(49, 48) = 1: table(49, 50) = 1
table(50, 49) = 1: table(50, 51) = 1
table(51, 50) = 1: table(51, 52) = 1
table(52, 51) = 1: table(52, 53) = 1
table(53, 52) = 1
table(54, 10) = 1: table(54, 55) = 1
table(55, 54) = 1
table(56, 11) = 1: table(56, 57) = 1
table(57, 56) = 1
table(58, 2) = 1: table(58, 59) = 1
table(59, 58) = 1: table(59, 60) = 1
table(60, 59) = 1: table(60, 61) = 1
table(61, 60) = 1: table(61, 62) = 1
table(62, 61) = 1: table(62, 63) = 1
table(63, 62) = 1: table(63, 64) = 1
table(64, 63) = 1: table(64, 65) = 1
table(65, 64) = 1: table(65, 66) = 1
table(66, 65) = 1: table(66, 67) = 1
table(67, 66) = 1: table(67, 68) = 1
table(68, 67) = 1
For i = 0 To 68
Ia(i) = 0
Ib(i) = 0
Ila(i) = 0
Ilb(i) = 0
Ua(i) = 10
Ub(i) = 0
Next
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -