流体网络拓扑(3)——网络分流

5网络分流

5.1网络分流预处理

流体网络的源点与汇点之间保持流量平衡,从源点流入网络的总流量等于从汇点流出网络的总流量,只是源点与汇点的压能不同。在多源多汇的情况下,源点之间以及汇点之间的压能有时也是不一样的。为了使求解模型具有通用性,本书通过增加虚拟节点和虚拟分支的办法将有源汇的流体网络变成无源汇的流体网络。
视具体情况,对单一源汇网络可以用一虚拟分支直接将源汇节点连接起来,也可以把源点和汇点直接连接起来。对多源多汇网络也可以直接将源汇节点合并。
在这里插入图片描述

5.2流体网络的基本定律

5.2.1质量守恒定律

在这里插入图片描述

5.2.2能量守恒定律

在这里插入图片描述

5.2.3阻力定律

在这里插入图片描述

例1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3网络分流算法

5.3.1网络分流算法综述

当流体网络中所有的流阻为已知,并已知网络的总流量、或已知回路的附加阻力,求所有分支流量的过程叫做网络分流,也称网络解算。
如果将分支流量视为未知数,那么通过基本关联矩阵可以构造m-1个线性独立的关于分支流量的方程组;如果把分支的流阻作为已知数,那么利用基本回路矩阵也可以构造n-m+1个关于分支流量的二次非线性方程组。将流量平衡方程和阻力平衡方程联立,n个分支,(m-1)+(n-m+1)= n 个方程,一般来说理论上是有唯一解的。
流体网络分流算法研究最早可以追溯到1854年,J.J.Atkinson在北英格兰采矿工程师学会上发表的一篇论文奠定了一般流体网络分流理论的基础。1928年波兰学者H.Czecaott提出了通风网络解算问题,1925年发表了关于通风网络中的角联分支理论,1931年提出了用几何学的方法解含有角联分支的θ型通风网络。1935年波兰学者S.Barczyk根据非线性方程组的Newton解法,提出了一种通风网络的近似解算方法。1936年美国学者H.Cross提出一种解算流体管道网络的逐次计算法。1951年英国学者D.Scott、F.Hinsley在英国的《煤炭工程》上发表了“通风网络理论”一文,文中系统提出了通风网络的解算方法,该法在本质上与Cross法相同,也属于逐次迭代计算方法。此外,1938年英国学者S.Weeks尝试了用图解法来解算简单的通风网络,1950年美国学者M.Mellrog、荷兰学者W.Mass采用钨丝灯泡来模拟通风网络,日本学者在这段时间相继提出了京大一法和京大二法求解通风网络。
综上,网络解法可分为:解析法、图解法、物理相似模拟法、数值方法。数值法属于近似法,是目前研究分流的主要手段。从计算数学的角度看,数值方法可分为3类:斜量法、迭代法和直接代入法。本节主要介绍Barczyk法和Cross法,它们分别属于斜量法和迭代法。
在这里插入图片描述
在这里插入图片描述

5.3.2 Barczyk法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

无回路附加阻力的Barczyk法迭代过程程序

#Barczyk
from sympy import *

q1,r1 = 20,0.375
q2,r2 = 11.5,1.5
q3,r3 = 8.5,2
q4,r4 = 10.5,4.6875
q5,r5 = 1,12.5
q6,r6 = 9.5,1.7361
q7,r7 = 20,0.5
q8 = 20

C_T = Matrix([[0,-1,-1,0,0],[0,0,-1,-1,0],[1,1,1,1,1]])
i = 0
while True:
    i += 1
    print(f'第{i}次迭代:')
    f1 = r3 * q3 * abs(q3) - r2 * q2 * abs(q2) - r5 * q5 * abs(q5)
    f2 = r4 * q4 * abs(q4) - r5 * q5 * abs(q5) - r6 * q6 * abs(q6)

    df13 = 2*r3*abs(q3)+2*r2*abs(q2)+2*r5*abs(q5)
    df14 = 0
    df23 = 0
    df24 = 2*r4*abs(q4)+2*r5*abs(q5)+2*r6*abs(q6)
    print('f1=',f1,'f2=',f2)
    print('df13=',df13,'df24=',df24)
    J = Matrix([[df13,df14],[df23,df24]])
    print('J:',J)
    J_inv = J**(-1)
    print('J的逆矩阵:',J_inv)
    F = Matrix([[f1],[f2]])
    print('F:',F)
    var_Q = -1*J_inv*F
    print('Q的变量',var_Q)
    max_vq = max(abs(var_Q[0]),abs(var_Q[1]))
    max_f = max(abs(f1),abs(f2))
    if max_vq <= 10**-3 and max_f <= 10**-3:
        print(q1,q2,q3,q4,q5,q6)
        print(f'max△q = {max_vq} , max△f = {max_f}')
        break
    else:
        q3 = q3 + var_Q[0]
        q4 = q4 + var_Q[1]
        Q = Matrix([[q3,q4,q8]]) * C_T
        q1,q2,q5,q6,q7 = Q[0],Q[1],Q[2],Q[3],Q[4]
        print(q1, q2, q3, q4, q5, q6)
        print(f'max△q = {max_vq} , max△f = {max_f}')

结果:

1次迭代:
f1= -66.375 f2= 347.61384999999996
df13= 93.5 df24= 156.42340000000002
J: Matrix([[93.5000000000000, 0], [0, 156.423400000000]])
J的逆矩阵: Matrix([[0.0106951871657754, 0], [0, 0.00639290540929298]])
F: Matrix([[-66.3750000000000], [347.613850000000]])
Q的变量 Matrix([[0.709893048128342], [-2.22226246201016]])
20 10.7901069518717 9.20989304812834 8.27773753798984 2.51236941388182 11.7222624620102
max△q = 2.22226246201016 , max△f = 347.613849999999962次迭代:
f1= -83.8953530309290 f2= 3.73190331094872
df13= 132.019128395174 df24= 181.115064486292
J: Matrix([[132.019128395174, 0], [0, 181.115064486292]])
J的逆矩阵: Matrix([[0.00757465991599864, 0], [0, 0.00552135187007422]])
F: Matrix([[-83.8953530309290], [3.73190331094872]])
Q的变量 Matrix([[0.635478767741932], [-0.0206051513248429]])
20 10.1546281841297 9.84537181587027 8.25713238666500 1.89749579746473 11.7428676133350
max△q = 0.635478767741932 , max△f = 83.89535303092903次迭代:
f1= -5.81814671887107 f2= 35.1893190116522
df13= 117.282766752488 df24= 165.621595988624
J: Matrix([[117.282766752488, 0], [0, 165.621595988624]])
J的逆矩阵: Matrix([[0.00852640185501748, 0], [0, 0.00603785994230296]])
F: Matrix([[-5.81814671887107], [35.1893190116522]])
Q的变量 Matrix([[0.0496078569765461], [-0.212468179657375]])
20 10.1050203271532 9.89497967284682 8.04466420700762 2.06035612014556 11.9553357929924
max△q = 0.212468179657375 , max△f = 35.18931901165224次迭代:
f1= -10.4092500389306 f2= 2.15495819011008
df13= 121.403882676486 df24= 168.438946884764
J: Matrix([[121.403882676486, 0], [0, 168.438946884764]])
J的逆矩阵: Matrix([[0.00823696885102742, 0], [0, 0.00593686922469388]])
F: Matrix([[-10.4092500389306], [2.15495819011008]])
Q的变量 Matrix([[0.0857406683332272], [-0.0127937049593666]])
20 10.0192796588200 9.98072034118005 8.03187050204826 1.98740915677170 11.9681294979517
max△q = 0.0857406683332272 , max△f = 10.40925003893065次迭代:
f1= -0.721829720024552 f2= 4.35037510719090
df13= 119.665949260472 df24= 166.539754118783
J: Matrix([[119.665949260472, 0], [0, 166.539754118783]])
J的逆矩阵: Matrix([[0.00835659605911233, 0], [0, 0.00600457233344274]])
F: Matrix([[-0.721829720024552], [4.35037510719090]])
Q的变量 Matrix([[0.00603203939370732], [-0.0261221420087365]])
20 10.0132476194262 9.98675238057375 8.00574836003952 2.00749925938673 11.9942516399605
max△q = 0.0261221420087365 , max△f = 4.350375107190906次迭代:
f1= -1.30291156560526 f2= 0.296672041245159
df13= 120.174233865242 df24= 166.887812904309
J: Matrix([[120.174233865242, 0], [0, 166.887812904309]])
J的逆矩阵: Matrix([[0.00832125130185024, 0], [0, 0.00599204928506902]])
F: Matrix([[-1.30291156560526], [0.296672041245159]])
Q的变量 Matrix([[0.0108418545614885], [-0.00177767349264302]])
20 10.0024057648648 9.99759423513524 8.00397068654688 1.99843507831788 11.9960293134531
max△q = 0.0108418545614885 , max△f = 1.302911565605267次迭代:
f1= -0.0901851748231124 f2= 0.543107709620699
df13= 119.958471193082 df24= 166.650715126496
J: Matrix([[119.958471193082, 0], [0, 166.650715126496]])
J的逆矩阵: Matrix([[0.00833621827666030, 0], [0, 0.00600057431041296]])
F: Matrix([[-0.0901851748231124], [0.543107709620699]])
Q的变量 Matrix([[0.000751803302644234], [-0.00325895817013719]])
20 10.0016539615621 9.99834603843789 8.00071172837674 2.00094223318537 11.9992882716233
max△q = 0.00325895817013719 , max△f = 0.5431077096206998次迭代:
f1= -0.162898698364152 f2= 0.0375135257347381
df13= 120.021901868072 df24= 166.694157019896
J: Matrix([[120.021901868072, 0], [0, 166.694157019896]])
J的逆矩阵: Matrix([[0.00833181264782155, 0], [0, 0.00599901051049222]])
F: Matrix([[-0.162898698364152], [0.0375135257347381]])
Q的变量 Matrix([[0.00135724143534411], [-0.000225044035168314]])
20 10.0002967201268 9.99970327987323 8.00048668434157 1.99981003578520 11.9995133156584
max△q = 0.00135724143534411 , max△f = 0.1628986983641529次迭代:
f1= -0.0112726051922394 f2= 0.0678781688012862
df13= 119.994954174503 df24= 166.664523694961
J: Matrix([[119.994954174503, 0], [0, 166.664523694961]])
J的逆矩阵: Matrix([[0.00833368375261635, 0], [0, 0.00600007714797335]])
F: Matrix([[-0.0112726051922394], [0.0678781688012862]])
Q的变量 Matrix([[9.39423267402240e-5], [-0.000407274249470875]])
20 10.0002027778000 9.99979722219997 8.00007941009210 2.00012336770793 11.9999205899079
max△q = 0.000407274249470875 , max△f = 0.067878168801286210次迭代:
f1= -0.0203630010839220 f2= 0.00469593253927769
df13= 120.002881414898 df24= 166.669952934590
J: Matrix([[120.002881414898, 0], [0, 166.669952934590]])
J的逆矩阵: Matrix([[0.00833313323988112, 0], [0, 0.00599988169668742]])
F: Matrix([[-0.0203630010839220], [0.00469593253927769]])
Q的变量 Matrix([[0.000169687601196165], [-2.81750396912911e-5]])
20 10.0000330901988 9.99996690980117 8.00005123505241 1.99998185514642 11.9999487649476
max△q = 0.000169687601196165 , max△f = 0.020363001083922011次迭代:
f1= -0.00140907480732722 f2= 0.00848465542944155
df13= 119.999513288462 df24= 166.666248808928
J: Matrix([[119.999513288462, 0], [0, 166.666248808928]])
J的逆矩阵: Matrix([[0.00833336713288280, 0], [0, 0.00600001504291631]])
F: Matrix([[-0.00140907480732722], [0.00848465542944155]])
Q的变量 Matrix([[1.17423376871538e-5], [-5.09080602106108e-5]])
20 10.0000213478611 9.99997865213886 8.00000032699220 2.00002102086894 11.9999996730078
max△q = 0.0000509080602106108 , max△f = 0.0084846554294415512次迭代:
f1= -0.00254539902284989 f2= 0.000587100032618082
df13= 120.000504173862 df24= 166.666927451893
J: Matrix([[120.000504173862, 0], [0, 166.666927451893]])
J的逆矩阵: Matrix([[0.00833329832140666, 0], [0, 0.00599999061174654]])
F: Matrix([[-0.00254539902284989], [0.000587100032618082]])
Q的变量 Matrix([[2.12115694044252e-5], [-3.52259468386458e-6]])
20 10.0000001362917 9.99999986370826 7.99999680439752 2.00000333189422 12.0000031956025
max△q = 0.0000212115694044252 , max△f = 0.0025453990228498913次迭代:
f1= -0.000176135271786393 f2= 0.00106058574266399
df13= 120.000083161064 df24= 166.666464434353
J: Matrix([[120.000083161064, 0], [0, 166.666464434353]])
J的逆矩阵: Matrix([[0.00833332755826346, 0], [0, 0.00600000728037212]])
F: Matrix([[-0.000176135271786393], [0.00106058574266399]])
Q的变量 Matrix([[1.46779291435977e-6], [-6.36352217744280e-6]])
20 9.99999866849883 10.0000013315012 7.99999044087534 2.00000822762349 12.0000095591247
max△q = 0.00000636352217744280 , max△f = 0.0010605857426639914次迭代:
f1= -0.000318176937362580 f2= 7.33895880102864e-5
df13= 120.000207022088 df24= 166.666549264986
J: Matrix([[120.000207022088, 0], [0, 166.666549264986]])
J的逆矩阵: Matrix([[0.00833331895682423, 0], [0, 0.00600000422646348]])
F: Matrix([[-0.000318176937362580], [7.33895880102864e-5]])
Q的变量 Matrix([[2.65146990374786e-6], [-4.40337838240132e-7]])
20 9.99999866849883 10.0000013315012 7.99999044087534 2.00000822762349 12.0000095591247
max△q = 0.00000265146990374786 , max△f = 0.000318176937362580

例3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有回路附加阻力的Barczyk法迭代过程程序

#Barczyk,有回路附加阻力
from sympy import *

q1,r1 = 20,0.375
q2,r2 = 11.5,1.5
q3,r3 = 8.5,2
q4,r4 = 10.5,4.6875
q5,r5 = 1,12.5
q6,r6 = 9.5,1.7361
q7,r7 = 20,0.5
q8 = 20

C_T = Matrix([[0,-1,-1,0,0],[0,0,-1,-1,0],[1,1,1,1,1]])
i = 0
while True:
    i += 1
    print(f'第{i}次迭代:')
    f1 = r3 * q3 * abs(q3) - r2 * q2 * abs(q2) - r5 * q5 * abs(q5)
    f2 = r4 * q4 * abs(q4) - r5 * q5 * abs(q5) - r6 * q6 * abs(q6)
    f3 = r1 * q1 * abs(q1) + r2 * q2 * abs(q2) + r5 * q5 * abs(q5) + r6 * q6 * abs(q6) + r7 * q7 * abs(q7) - (1046.3+5*q8-0.85*q8**2)
    df13 = 2*r3*abs(q3)+2*r2*abs(q2)+2*r5*abs(q5)
    df14 = 0
    df18 = 0
    df23 = 0
    df24 = 2*r4*abs(q4)+2*r5*abs(q5)+2*r6*abs(q6)
    df28 = 0
    df33 = 0
    df34 = 0
    df38 = 2*r1*abs(q1)+2*r2*abs(q2)+2*r5*abs(q5)+2*r6*abs(q6)+2*r7*abs(q7)-5+1.7*abs(q8)
    print('f1=',f1,'f2=',f2,'f3=',f3)
    print('df13=',df13,'df24=',df24,'df38=',df38)
    J = Matrix([[df13,df14,df18],[df23,df24,df28],[df33,df34,df38]])
    print('J:',J)
    J_inv = J**(-1)
    print('J的逆矩阵:',J_inv)
    F = Matrix([[f1],[f2],[f3]])
    print('F:',F)
    var_Q = -1*J_inv*F
    print('Q的变量',var_Q)
    max_vq = max(abs(var_Q[0]),abs(var_Q[1]),abs(var_Q[2]))
    max_f = max(abs(f1),abs(f2),abs(f3))
    if max_vq <= 10**-4 and max_f <= 10**-4:
        print(q1,q2,q3,q4,q5,q6,q7,q8)
        print(f'max△q = {max_vq} , max△f = {max_f}')
        break
    else:
        q3 = q3 + var_Q[0]
        q4 = q4 + var_Q[1]
        q8 = q8 + var_Q[2]
        Q = Matrix([[q3,q4,q8]]) * C_T
        q1,q2,q5,q6,q7 = Q[0],Q[1],Q[2],Q[3],Q[4]
        print(q1, q2, q3, q4, q5, q6, q7, q8)
        print(f'max△q = {max_vq} , max△f = {max_f}')

结果:

1次迭代:
f1= -66.375 f2= 347.61384999999996 f3= -88.74197499999991
df13= 93.5 df24= 156.42340000000002 df38= 156.48590000000002
J: Matrix([[93.5000000000000, 0, 0], [0, 156.423400000000, 0], [0, 0, 156.485900000000]])
J的逆矩阵: Matrix([[0.0106951871657754, 0, 0], [0, 0.00639290540929298, 0], [0, 0, 0.00639035210201047]])
F: Matrix([[-66.3750000000000], [347.613850000000], [-88.7419749999999]])
Q的变量 Matrix([[0.709893048128342], [-2.22226246201016], [0.567092466477810]])
20.5670924664778 11.3571994183495 9.20989304812834 8.27773753798984 3.07946188035963 12.2893549284880 20.5670924664778 20.5670924664778
max△q = 2.22226246201016 , max△f = 347.613849999999962次迭代:
f1= -142.373276433661 f2= -59.5468034045761 f3= 154.766338999970
df13= 147.897717456552 df24= 197.261434610341 df38= 219.685712456083
J: Matrix([[147.897717456552, 0, 0], [0, 197.261434610341, 0], [0, 0, 219.685712456083]])
J的逆矩阵: Matrix([[0.00676142956901122, 0, 0], [0, 0.00506941461708084, 0], [0, 0, 0.00455195737956744]])
F: Matrix([[-142.373276433661], [-59.5468034045761], [154.766338999970]])
Q的变量 Matrix([[0.962646881115566], [0.301867435579597], [-0.704489778919550]])
19.8626026875583 9.69006275831435 10.1725399292439 8.57960497356944 1.11045778474491 11.2829977139888 19.8626026875583 19.8626026875583
max△q = 0.962646881115566 , max△f = 154.7663389999703次迭代:
f1= 50.7012066877599 f2= 108.615133092468 f3= -87.7849213186472
df13= 97.5217926105415 df24= 147.372065908348 df38= 159.534436828154
J: Matrix([[97.5217926105415, 0, 0], [0, 147.372065908348, 0], [0, 0, 159.534436828154]])
J的逆矩阵: Matrix([[0.0102541183178775, 0, 0], [0, 0.00678554645913634, 0], [0, 0, 0.00626823913307929]])
F: Matrix([[50.7012066877599], [108.615133092468], [-87.7849213186472]])
Q的变量 Matrix([[-0.519896172235450], [-0.737013031764217], [0.550256879103831]])
20.4128595666621 10.7602158096536 9.65264375700846 7.84259194180522 2.91762386784841 12.5702676248569 20.4128595666621 20.4128595666621
max△q = 0.737013031764217 , max△f = 108.6151330924684次迭代:
f1= -93.7329163340351 f2= -92.4200613634012 f3= 124.821010711903
df13= 143.831819153205 df24= 190.111379397662 df38= 214.292092877183
J: Matrix([[143.831819153205, 0, 0], [0, 190.111379397662, 0], [0, 0, 214.292092877183]])
J的逆矩阵: Matrix([[0.00695256450128627, 0, 0], [0, 0.00526007440042959, 0], [0, 0, 0.00466652775925394]])
F: Matrix([[-93.7329163340351], [-92.4200613634012], [124.821010711903]])
Q的变量 Matrix([[0.651684146706049], [0.486136398863758], [-0.582480711425227]])
19.8303788552369 9.52605095152236 10.3043279037145 8.32872834066898 1.19732261085338 11.5016505145679 19.8303788552369 19.8303788552369
max△q = 0.651684146706049 , max△f = 124.8210107119035次迭代:
f1= 58.3201090672795 f2= 77.5762644822662 f3= -83.4027494172558
df13= 99.7285297407595 df24= 147.950924381789 df38= 161.862056093151
J: Matrix([[99.7285297407595, 0, 0], [0, 147.950924381789, 0], [0, 0, 161.862056093151]])
J的逆矩阵: Matrix([[0.0100272209226333, 0, 0], [0, 0.00675899798651809, 0], [0, 0, 0.00617810019307121]])
F: Matrix([[58.3201090672795], [77.5762644822662], [-83.4027494172558]])
Q的变量 Matrix([[-0.584788617849681], [-0.524337815437232], [0.515270542277417]])
20.3456493975143 10.6261101116495 9.71953928586483 7.80439052523175 2.82171958641771 12.5412588722825 20.3456493975143 20.3456493975143
max△q = 0.584788617849681 , max△f = 83.40274941725586次迭代:
f1= -79.9587041030751 f2= -87.0769388453053 f3= 107.984563758579
df13= 141.299477138850 df24= 187.254909890830 df38= 211.159569473155
J: Matrix([[141.299477138850, 0, 0], [0, 187.254909890830, 0], [0, 0, 211.159569473155]])
J的逆矩阵: Matrix([[0.00707716702318249, 0, 0], [0, 0.00534031390996906, 0], [0, 0, 0.00473575506189471]])
F: Matrix([[-79.9587041030751], [-87.0769388453053], [107.984563758579]])
Q的变量 Matrix([[0.565881103894690], [0.465018187753109], [-0.511388444426183]])
19.8342609530881 9.54884056332858 10.2854203897595 8.26940871298486 1.27943185034373 11.5648522401032 19.8342609530881 19.8342609530881
max△q = 0.565881103894690 , max△f = 107.9845637585797次迭代:
f1= 54.3473877864330 f2= 67.8879578065036 f3= -77.4314607159758
df13= 101.773999507617 df24= 149.666982890913 df38= 164.215998184819
J: Matrix([[101.773999507617, 0, 0], [0, 149.666982890913, 0], [0, 0, 164.215998184819]])
J的逆矩阵: Matrix([[0.00982569226755364, 0, 0], [0, 0.00668150035956071, 0], [0, 0, 0.00608954067236820]])
F: Matrix([[54.3473877864330], [67.8879578065036], [-77.4314607159758]])
Q的变量 Matrix([[-0.534000707934893], [-0.453593414493996], [0.471522029350815]])
20.3057829824389 10.5543633006143 9.75141968182462 7.81581529849086 2.73854800212343 12.4899676839481 20.3057829824389 20.3057829824389
max△q = 0.534000707934893 , max△f = 77.43146071597588次迭代:
f1= -70.6570698990554 f2= -78.2307704787939 f3= 95.0992176095478
df13= 139.132468682227 df24= 185.104634268642 df38= 208.549407036547
J: Matrix([[139.132468682227, 0, 0], [0, 185.104634268642, 0], [0, 0, 208.549407036547]])
J的逆矩阵: Matrix([[0.00718739492996390, 0, 0], [0, 0.00540234988686832, 0], [0, 0, 0.00479502681983054]])
F: Matrix([[-70.6570698990554], [-78.2307704787939], [95.0992176095478]])
Q的变量 Matrix([[0.507840265958575], [0.422629994045734], [-0.456003298982683]])
19.8497796834562 9.59051973567303 10.2592599477832 8.23844529253659 1.35207444313644 11.6113343909196 19.8497796834562 19.8497796834562
max△q = 0.507840265958575 , max△f = 95.09921760954789次迭代:
f1= 49.6864099045923 f2= 61.2322337404229 f3= -70.9903940225016
df13= 103.610460076563 df24= 151.354160968093 df38= 166.372035465505
J: Matrix([[103.610460076563, 0, 0], [0, 151.354160968093, 0], [0, 0, 166.372035465505]])
J的逆矩阵: Matrix([[0.00965153517570573, 0, 0], [0, 0.00660702020746435, 0], [0, 0, 0.00601062550687694]])
F: Matrix([[49.6864099045923], [61.2322337404229], [-70.9903940225016]])
Q的变量 Matrix([[-0.479550132948706], [-0.404562605671154], [0.426696673054892]])
20.2764763565111 10.4967665416766 9.77970981483449 7.83388268686544 2.66288385481119 12.4425936696457 20.2764763565111 20.2764763565111
max△q = 0.479550132948706 , max△f = 70.990394022501610次迭代:
f1= -62.6245939236289 f2= -69.7460954460603 f3= 84.2161544845492
df13= 137.181235254648 df24= 183.217920299387 df38= 206.219413165017
J: Matrix([[137.181235254648, 0, 0], [0, 183.217920299387, 0], [0, 0, 206.219413165017]])
J的逆矩阵: Matrix([[0.00728962673461654, 0, 0], [0, 0.00545798139377388, 0], [0, 0, 0.00484920398449490]])
F: Matrix([[-62.6245939236289], [-69.7460954460603], [84.2161544845492]])
Q的变量 Matrix([[0.456509914110190], [0.380672891232975], [-0.408381311885314]])
19.8680950446258 9.63187531568113 10.2362197289447 8.21455557809841 1.41731973758271 11.6535394665274 19.8680950446258 19.8680950446258
max△q = 0.456509914110190 , max△f = 84.216154484549211次迭代:
f1= 45.2909150514624 f2= 55.4264832808644 f3= -64.6714009644937
df13= 105.273498302390 df24= 152.907871719917 df38= 168.336967026247
J: Matrix([[105.273498302390, 0, 0], [0, 152.907871719917, 0], [0, 0, 168.336967026247]])
J的逆矩阵: Matrix([[0.00949906686987430, 0, 0], [0, 0.00653988567594291, 0], [0, 0, 0.00594046582676093]])
F: Matrix([[45.2909150514624], [55.4264832808644], [-64.6714009644937]])
Q的变量 Matrix([[-0.430221430671638], [-0.362482864076414], [0.384178247398329]])
20.2522732920241 10.4462749937511 9.80599829827304 7.85207271402200 2.59420227972909 12.4002005780021 20.2522732920241 20.2522732920241
max△q = 0.430221430671638 , max△f = 64.671400964493712次迭代:
f1= -55.4953549680317 f2= -62.0669126780561 f3= 74.7172050498572
df13= 135.417875167573 df24= 181.524215134123 df38= 204.120201278903
J: Matrix([[135.417875167573, 0, 0], [0, 181.524215134123, 0], [0, 0, 204.120201278903]])
J的逆矩阵: Matrix([[0.00738454948257422, 0, 0], [0, 0.00550890689300671, 0], [0, 0, 0.00489907414226794]])
F: Matrix([[-55.4953549680317], [-62.0669126780561], [74.7172050498572]])
Q的变量 Matrix([[0.409808194814452], [0.341920843079789], [-0.366045127242287]])
19.8862281647818 9.67042167169435 10.2158064930875 8.19399355710179 1.47642811459257 11.6922346076801 19.8862281647818 19.8862281647818
max△q = 0.409808194814452 , max△f = 74.717205049857213次迭代:
f1= 41.2018219263615 f2= 50.1385574501934 f3= -58.6961196741904
df13= 106.785193852247 df24= 154.327169467430 df38= 170.127232053181
J: Matrix([[106.785193852247, 0, 0], [0, 154.327169467430, 0], [0, 0, 170.127232053181]])
J的逆矩阵: Matrix([[0.00936459413449813, 0, 0], [0, 0.00647974043359257, 0], [0, 0, 0.00587795374045352]])
F: Matrix([[41.2018219263615], [50.1385574501934], [-58.6961196741904]])
Q的变量 Matrix([[-0.385838339942241], [-0.324884837992022], [0.345013076189015]])
20.2312412409709 10.4012730878256 9.82996815314525 7.86910871910977 2.53216436871584 12.3621325218611 20.2312412409709 20.2312412409709
max△q = 0.385838339942241 , max△f = 58.696119674190414次迭代:
f1= -49.1713798650146 f2= -55.1995728212585 f3= 66.3344377525453
df13= 133.827801093954 df24= 180.000800001956 df38= 202.229507305128
J: Matrix([[133.827801093954, 0, 0], [0, 180.000800001956, 0], [0, 0, 202.229507305128]])
J的逆矩阵: Matrix([[0.00747228895510245, 0, 0], [0, 0.00555553086424689, 0], [0, 0, 0.00494487680519924]])
F: Matrix([[-49.1713798650146], [-55.1995728212585], [66.3344377525453]])
Q的变量 Matrix([[0.367422758672496], [0.306662930501746], [-0.328015622628494]])
19.9032256183424 9.70583470652462 10.1973909118177 8.17577164961151 1.53006305691311 11.7274539687309 19.9032256183424 19.9032256183424
max△q = 0.367422758672496 , max△f = 66.334437752545315次迭代:
f1= 37.4050598146510 f2= 45.2926873348744 f3= -53.1375544386186
df13= 108.158644189673 df24= 155.619501308163 df38= 171.755274595910
J: Matrix([[108.158644189673, 0, 0], [0, 155.619501308163, 0], [0, 0, 171.755274595910]])
J的逆矩阵: Matrix([[0.00924567802686532, 0, 0], [0, 0.00642592985836503, 0], [0, 0, 0.00582223749665161]])
F: Matrix([[37.4050598146510], [45.2926873348744], [-53.1375544386186]])
Q的变量 Matrix([[-0.345835139621902], [-0.291047631910761], [0.309379461932891]])
20.2126050802753 10.3610493080794 9.85155577219584 7.88472401770075 2.47632529037866 12.3278810625745 20.2126050802753 20.2126050802753
max△q = 0.345835139621902 , max△f = 53.137554438618616次迭代:
f1= -43.5730486784211 f2= -49.0824100385784 f3= 58.9107123256505
df13= 132.397503272488 df24= 178.632288550882 df38= 200.529636336126
J: Matrix([[132.397503272488, 0, 0], [0, 178.632288550882, 0], [0, 0, 200.529636336126]])
J的逆矩阵: Matrix([[0.00755301252125497, 0, 0], [0, 0.00559809208129333, 0], [0, 0, 0.00498679406331646]])
F: Matrix([[-43.5730486784211], [-49.0824100385784], [58.9107123256505]])
Q的变量 Matrix([[0.329107782257367], [0.274767850967758], [-0.293775590491297]])
19.9188294897840 9.73816593533075 10.1806635544532 8.15949186866851 1.57867406666224 11.7593376211155 19.9188294897840 19.9188294897840
max△q = 0.329107782257367 , max△f = 58.910712325650517次迭代:
f1= 33.8913595324907 f2= 40.8570643970203 f3= -48.0116687871187
df13= 109.404003690361 df24= 156.792860023360 df38= 173.232083300340
J: Matrix([[109.404003690361, 0, 0], [0, 156.792860023360, 0], [0, 0, 173.232083300340]])
J的逆矩阵: Matrix([[0.00914043331385050, 0, 0], [0, 0.00637784143902351, 0], [0, 0, 0.00577260274741519]])
F: Matrix([[33.8913595324907], [40.8570643970203], [-48.0116687871187]])
Q的变量 Matrix([[-0.309781711722462], [-0.260579878388168], [0.277152291148509]])
20.1959817809325 10.3250999382017 9.87088184273075 7.89891199028034 2.42618794792138 12.2970697906521 20.1959817809325 20.1959817809325
max△q = 0.309781711722462 , max△f = 48.011668787118718次迭代:
f1= -38.6227658774638 f2= -43.6429900036834 f3= 52.3299121940180
df13= 131.113525883563 df24= 177.404884334015 df38= 199.004021383959
J: Matrix([[131.113525883563, 0, 0], [0, 177.404884334015, 0], [0, 0, 199.004021383959]])
J的逆矩阵: Matrix([[0.00762697817224490, 0, 0], [0, 0.00563682338146460, 0], [0, 0, 0.00502502408265709]])
F: Matrix([[-38.6227658774638], [-43.6429900036834], [52.3299121940180]])
Q的变量 Matrix([[0.294574992299142], [0.246007826489789], [-0.262959069018271]])
19.9330227119142 9.76756587688431 10.1654568350299 8.14491981677013 1.62264606011418 11.7881028951441 19.9330227119142 19.9330227119142
max△q = 0.294574992299142 , max△f = 52.329912194018019次迭代:
f1= 30.6527576357486 f2= 36.8078169960309 f3= -43.3111784422593
df13= 110.530676473627 df24= 157.855425657594 df38= 174.568428362131
J: Matrix([[110.530676473627, 0, 0], [0, 157.855425657594, 0], [0, 0, 174.568428362131]])
J的逆矩阵: Matrix([[0.00904726209866818, 0, 0], [0, 0.00633491054130197, 0], [0, 0, 0.00572841268826437]])
F: Matrix([[30.6527576357486], [36.8078169960309], [-43.3111784422593]])
Q的变量 Matrix([[-0.277323532377570], [-0.233174227890470], [0.248104304132321]])
20.1811270160465 10.2929937133942 9.88813330265232 7.91174558887966 2.38124812451454 12.2693814271669 20.1811270160465 20.1811270160465
max△q = 0.277323532377570 , max△f = 43.311178442259320次迭代:
f1= -34.2475018352155 f2= -38.8103902656264 f3= 46.4951200951102
df13= 129.962717463655 df24= 176.305564200019 df38= 197.636818649815
J: Matrix([[129.962717463655, 0, 0], [0, 176.305564200019, 0], [0, 0, 197.636818649815]])
J的逆矩阵: Matrix([[0.00769451439240376, 0, 0], [0, 0.00567197073182272, 0], [0, 0, 0.00505978595907202]])
F: Matrix([[-34.2475018352155], [-38.8103902656264], [46.4951200951102]])
Q的变量 Matrix([[0.263517895774940], [0.220131397677250], [-0.235255355822606]])
19.9458716602239 9.79422046179666 10.1516511984273 8.13187698655691 1.66234347523975 11.8139946736670 19.9458716602239 19.9458716602239
max△q = 0.263517895774940 , max△f = 46.4951200951102
......
......240次迭代:
f1= -0.000121507825717515 f2= -0.000141376074964228 f3= 0.000168027880818045
df13= 120.346520847468 df24= 167.147528512299 df38= 186.216890435347
J: Matrix([[120.346520847468, 0, 0], [0, 167.147528512299, 0], [0, 0, 186.216890435347]])
J的逆矩阵: Matrix([[0.00830933867433889, 0, 0], [0, 0.00598273877514390, 0], [0, 0, 0.00537008215346176]])
F: Matrix([[-0.000121507825717515], [-0.000141376074964228], [0.000168027880818045]])
Q的变量 Matrix([[1.00964967546938e-6], [8.45816125566137e-7], [-9.02323524064982e-7]])
20.0577194746910 10.0288544430153 10.0288650316757 8.02307737302866 2.00577706998663 12.0346421016623 20.0577194746910 20.0577194746910
max△q = 0.00000100964967546938 , max△f = 0.000168027880818045241次迭代:
f1= 0.000114807301685005 f2= 0.000133579948510487 f3= -0.000158762040996407
df13= 120.346450205414 df24= 167.147461427201 df38= 186.216806571787
J: Matrix([[120.346450205414, 0, 0], [0, 167.147461427201, 0], [0, 0, 186.216806571787]])
J的逆矩阵: Matrix([[0.00830934355183009, 0, 0], [0, 0.00598274117633271, 0], [0, 0, 0.00537008457190193]])
F: Matrix([[0.000114807301685005], [0.000133579948510487], [-0.000158762040996407]])
Q的变量 Matrix([[-9.53973311959307e-7], [-7.99174258286095e-7], [8.52565586958469e-7]])
20.0577203272566 10.0288562495542 10.0288640777024 8.02307657385440 2.00577967569979 12.0346437534022 20.0577203272566 20.0577203272566
max△q = 9.53973311959307E-7 , max△f = 0.000158762040996407242次迭代:
f1= -0.000108476404342639 f2= -0.000126213833169686 f3= 0.000150007296952026
df13= 120.346516951967 df24= 167.147524812943 df38= 186.216885810755
J: Matrix([[120.346516951967, 0, 0], [0, 167.147524812943, 0], [0, 0, 186.216885810755]])
J的逆矩阵: Matrix([[0.00830933894330423, 0, 0], [0, 0.00598273890755556, 0], [0, 0, 0.00537008228682473]])
F: Matrix([[-0.000108476404342639], [-0.000126213833169686], [0.000150007296952026]])
Q的变量 Matrix([[9.01367211033906e-7], [7.55104410376007e-7], [-8.05551528256532e-7]])
20.0577195217050 10.0288545426354 10.0288649790696 8.02307732895881 2.00577721367663 12.0346421927462 20.0577195217050 20.0577195217050
max△q = 9.01367211033906E-7 , max△f = 0.000150007296952026243次迭代:
f1= 0.000102494502144168 f2= 0.000119253827904231 f3= -0.000141735203214921
df13= 120.346453886101 df24= 167.147464922558 df38= 186.216810941358
J: Matrix([[120.346453886101, 0, 0], [0, 167.147464922558, 0], [0, 0, 186.216810941358]])
J的逆矩阵: Matrix([[0.00830934329769641, 0, 0], [0, 0.00598274105122273, 0], [0, 0, 0.00537008444589309]])
F: Matrix([[0.000102494502144168], [0.000119253827904231], [-0.000141735203214921]])
Q的变量 Matrix([[-8.51662004442374e-7], [-7.13464771718094e-7], [7.61130010219943e-7]])
20.0577202828350 10.0288561554275 10.0288641274076 8.02307661549404 2.00577953993342 12.0346436673410 20.0577202828350 20.0577202828350
max△q = 8.51662004442374E-7 , max△f = 0.000141735203214921244次迭代:
f1= -9.68425721481481e-5 f2= -0.000112677705885744 f3= 0.000133919377617531
df13= 120.346513474248 df24= 167.147521510334 df38= 186.216881682140
J: Matrix([[120.346513474248, 0, 0], [0, 167.147521510334, 0], [0, 0, 186.216881682140]])
J的逆矩阵: Matrix([[0.00830933918342370, 0, 0], [0, 0.00598273902576639, 0], [0, 0, 0.00537008240588484]])
F: Matrix([[-9.68425721481481e-5], [-0.000112677705885744], [0.000133919377617531]])
Q的变量 Matrix([[8.04697779374144e-7], [6.74121308336469e-7], [-7.19158093550949e-7]])
20.0577195636769 10.0288546315716 10.0288649321054 8.02307728961535 2.00577734195624 12.0346422740616 20.0577195636769 20.0577195636769
max△q = 8.04697779374144E-7 , max△f = 0.000133919377617531245次迭代:
f1= 9.15022195897564e-5 f2= 0.000106464147933139 f3= -0.000126534451510452
df13= 120.346457172042 df24= 167.147468043047 df38= 186.216814842303
J: Matrix([[120.346457172042, 0, 0], [0, 167.147468043047, 0], [0, 0, 186.216814842303]])
J的逆矩阵: Matrix([[0.00830934307081796, 0, 0], [0, 0.00598274093953049, 0], [0, 0, 0.00537008433339839]])
F: Matrix([[9.15022195897564e-5], [0.000106464147933139], [-0.000126534451510452]])
Q的变量 Matrix([[-7.60323334312605e-7], [-6.36947416431819e-7], [6.79500675691434e-7]])
20.0577202431776 10.0288560713956 10.0288641717820 8.02307665266793 2.00577941872767 12.0346435905097 20.0577202431776 20.0577202431776
max△q = 7.60323334312605E-7 , max△f = 0.000126534451510452246次迭代:
f1= -8.64564402931478e-5 f2= -0.000100593295002227 f3= 0.000119556848858338
df13= 120.346510369507 df24= 167.147518561921 df38= 186.216877996309
J: Matrix([[120.346510369507, 0, 0], [0, 167.147518561921, 0], [0, 0, 186.216877996309]])
J的逆矩阵: Matrix([[0.00830933939779096, 0, 0], [0, 0.00598273913129940, 0], [0, 0, 0.00537008251217605]])
F: Matrix([[-8.64564402931478e-5], [-0.000100593295002227], [0.000119556848858338]])
Q的变量 Matrix([[7.18395905520615e-7], [6.01823442356168e-7], [-6.42030143265034e-7]])
20.0577196011475 10.0288547109695 10.0288648901779 8.02307725449137 2.00577745647817 12.0346423466561 20.0577196011475 20.0577196011475
max△q = 7.18395905520615E-7 , max△f = 0.000119556848858338247次迭代:
f1= 8.16888321537590e-5 f2= 9.50461296440608e-5 f3= -0.000112963942910937
df13= 120.346460105575 df24= 167.147470828870 df38= 186.216818324881
J: Matrix([[120.346460105575, 0, 0], [0, 167.147470828870, 0], [0, 0, 186.216818324881]])
J的逆矩阵: Matrix([[0.00830934286827168, 0, 0], [0, 0.00598274083981698, 0], [0, 0, 0.00537008423296848]])
F: Matrix([[8.16888321537590e-5], [9.50461296440608e-5], [-0.000112963942910937]])
Q的变量 Matrix([[-6.78780514874280e-7], [-5.68636361488062e-7], [6.06625888719977e-7]])
20.0577202077734 10.0288559963760 10.0288642113974 8.02307668585501 2.00577931052094 12.0346435219184 20.0577202077734 20.0577202077734
max△q = 6.78780514874280E-7 , max△f = 0.000112963942910937248次迭代:
f1= -7.71841963569386e-5 f2= -8.98049084412378e-5 f3= 0.000106734666928787
df13= 120.346507597741 df24= 167.147515929719 df38= 186.216874705774
J: Matrix([[120.346507597741, 0, 0], [0, 167.147515929719, 0], [0, 0, 186.216874705774]])
J的逆矩阵: Matrix([[0.00830933958916786, 0, 0], [0, 0.00598273922551426, 0], [0, 0, 0.00537008260706779]])
F: Matrix([[-7.71841963569386e-5], [-8.98049084412378e-5], [0.000106734666928787]])
Q的变量 Matrix([[6.41349698446816e-7], [5.37279348375110e-7], [-5.73173978445453e-7]])
20.0577196345994 10.0288547818523 10.0288648527471 8.02307722313436 2.00577755871792 12.0346424114650 20.0577196345994 20.0577196345994
max△q = 6.41349698446816E-7 , max△f = 0.000106734666928787249次迭代:
f1= 7.29279056912446e-5 f2= 8.48526651111570e-5 f3= -0.000100848836837031
df13= 120.346462724493 df24= 167.147473315921 df38= 186.216821433961
J: Matrix([[120.346462724493, 0, 0], [0, 167.147473315921, 0], [0, 0, 186.216821433961]])
J的逆矩阵: Matrix([[0.00830934268744799, 0, 0], [0, 0.00598274075079750, 0], [0, 0, 0.00537008414330943]])
F: Matrix([[7.29279056912446e-5], [8.48526651111570e-5], [-0.000100848836837031]])
Q的变量 Matrix([[-6.05982959866441e-7], [-5.07651497374292e-7], [5.41566739569739e-7]])
20.0577201761661 10.0288559294020 10.0288642467642 8.02307671548286 2.00577921391911 12.0346434606833 20.0577201761661 20.0577201761661
max△q = 6.05982959866441E-7 , max△f = 0.000100848836837031250次迭代:
f1= -6.89063776064813e-5 f2= -8.01735495485900e-5 f3= 9.52876318933704e-5
df13= 120.346505123240 df24= 167.147513579814 df38= 186.216871768141
J: Matrix([[120.346505123240, 0, 0], [0, 167.147513579814, 0], [0, 0, 186.216871768141]])
J的逆矩阵: Matrix([[0.00830933976002008, 0, 0], [0, 0.00598273930962481, 0], [0, 0, 0.00537008269178263]])
F: Matrix([[-6.89063776064813e-5], [-8.01735495485900e-5], [9.52876318933704e-5]])
Q的变量 Matrix([[5.72566503164492e-7], [4.79657446476502e-7], [-5.11702462771543e-7]])
20.0577201761661 10.0288559294020 10.0288642467642 8.02307671548286 2.00577921391911 12.0346434606833 20.0577201761661 20.0577201761661
max△q = 5.72566503164492E-7 , max△f = 0.0000952876318933704

5.3.3 Cross法(H.Cross,1936)

Cross算法亦称Scott—Hinsley法(D.Scott,F.Hinsley,1951)。在Barczyk法中,如果回路选择得合理,可以使Jacobi矩阵除主对角线外其余元素为0(一般来讲,只要选择的树为支撑树就可以达到这个效果),即
在这里插入图片描述
在这里插入图片描述

例4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

无回路附加阻力的Cross法迭代过程程序

#cross(也叫Scott—Hinsley法),无回路附加阻力
q1,r1 = 20,0.375
q2,r2 = 11.5,1.5
q3,r3 = 8.5,2
q4,r4 = 10.5,4.6875
q5,r5 = 1,12.5
q6,r6 = 9.5,1.7361
q7,r7 = 20,0.5

def f1(q3,q2,q5):
    f1 = r3 * q3 * abs(q3) - r2 * q2 * abs(q2) - r5 * q5 * abs(q5)
    return f1
def f2(q4,q5,q6):
    f2 = r4 * q4 * abs(q4) - r5 * q5 * abs(q5) - r6 * q6 * abs(q6)
    return f2

vq1 = vq2 = 0
i = 0
while True:
    i += 1
    max_f = max(abs(f1(q3,q2,q5)),abs(f2(q4,q5,q6)))
    max_vq = max(abs(vq1),abs(vq2))
    if max_f <= 10**-3 and max_vq <= 10**-3:
        print(q1,q2,q3,q4,q5,q6)
        print(f'△f = {max_f}')
        break
    else:
        print(f'第{i}次迭代:')
        #第一条支路
        print(f'f1_0={f1(q3,q2,q5)}')
        df13 = 2 * r3 * abs(q3) + 2 * r2 * abs(q2) + 2 * r5 * abs(q5)
        v_q1 = - f1(q3,q2,q5) / df13
        q3 = q3 + v_q1
        q2 = q2 - v_q1
        q5 = q5 - v_q1
        print(f'f1_1={f1(q3,q2,q5)}, df1={df13}, v_q1={v_q1}')
        print(f'q3={q3}, q2={q2}, q5={q5}')
        #第二条支路
        print(f'f2_0={f2(q4,q5,q6)}')
        df24 = 2 * r4 * abs(q4) + 2 * r5 * abs(q5) + 2 * r6 * abs(q6)
        v_q2 = - f2(q4,q5,q6) / df24
        q4 = q4 + v_q2
        q5 = q5 - v_q2
        q6 = q6 - v_q2
        print(f'f2_1={f2(q4,q5,q6)}, df2={df24}, v_q2={v_q2}')
        print(f'q4={q4}, q5={q5}, q6={q6}')
        print('Q:',q1, q2, q3, q4, q5, q6)
        # print(f'△f = {max_f}')

结果:

1次迭代:
f1_0=-66.375
f1_1=-6.04737767737144, df1=93.5, v_q1=0.7098930481283422
q3=9.209893048128341, q2=10.790106951871659, q5=0.2901069518716578
f2_0=359.06182445594663
f2_1=-64.01401871549717, df2=138.67607379679146, v_q2=-2.5892125052667465
q4=7.9107874947332535, q5=2.879319457138404, q6=12.089212505266747
Q: 20 10.790106951871659 9.209893048128341 7.9107874947332535 2.879319457138404 12.0892125052667472次迭代:
f1_0=-108.62635883651558
f1_1=-7.102742984996361, df1=141.19287947658847, v_q1=0.7693472874779579
q3=9.979240335606299, q2=10.020759664393701, q5=2.1099721696604465
f2_0=-16.032793971569873
f2_1=-0.08605079321489484, df2=168.8891006654226, v_q2=0.09493089789927656
q4=8.00571839263253, q5=2.01504127176117, q6=11.994281607367471
Q: 20 10.020759664393701 9.979240335606299 8.00571839263253 2.01504127176117 11.9942816073674713次迭代:
f1_0=-2.2078526119871356
f1_1=-0.004038231052007291, df1=120.35527212963555, v_q1=0.018344461135105416
q3=9.997584796741405, q2=10.002415203258595, q5=1.9966968106260647
f2_0=0.8338638734922768
f2_1=-0.00023915992059642122, df2=166.61757479368293, v_q2=-0.00500465736897697
q4=8.000713735263554, q5=2.0017014679950416, q6=11.999286264736448
Q: 20 10.002415203258595 9.997584796741405 8.000713735263554 2.0017014679950416 11.9992862647364484次迭代:
f1_0=-0.2541708986670699
f1_1=-5.379972331809313e-05, df1=120.04012149661745, v_q1=0.0021173828841403834
q3=9.999702179625546, q2=10.000297820374454, q5=1.9995840851109012
f2_0=0.10566400938822085
f2_1=-3.838221289242938e-06, df2=166.66021516428623, v_q2=-0.0006340085981772072
q4=8.000079726665376, q5=2.0002180937090785, q6=11.999920273334626
Q: 20 10.000297820374454 9.999702179625546 8.000079726665376 2.0002180937090785 11.9999202733346265次迭代:
f1_0=-0.031752661878066135
f1_1=-8.401208120289994e-07, df1=120.00515452235251, v_q1=0.0002645941501800391
q3=9.999966773775725, q2=10.000033226224275, q5=1.9999534995588986
f2_0=0.013226436819905985
f2_1=-6.01356759943883e-08, df2=166.66570809953285, v_q2=-7.935907734545579e-05
q4=8.000000367588031, q5=2.000032858636244, q6=11.99999963241197
Q: 20 10.000033226224275 9.999966773775725 8.000000367588031 2.000032858636244 11.999999632411976次迭代:
f1_0=-0.003968780455565479
f1_1=-1.3125777797995397e-08, df1=120.00078823968182, v_q1=3.307295321792798e-05
q3=9.999999846728944, q2=10.000000153271056, q5=1.999999785683026
f2_0=0.0016536010207914842
f2_1=-9.399627742823213e-10, df2=166.66639681187428, v_q2=-9.921622189132681e-06
q4=7.999990445965842, q5=2.000009707305215, q6=12.00000955403416
Q: 20 10.000000153271056 9.999999846728944 7.999990445965842 2.000009707305215 12.00000955403416
20 10.000000153271056 9.999999846728944 7.999990445965842 2.000009707305215 12.00000955403416
△f = 0.0004960954125579065

例5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有回路附加阻力的Cross法迭代过程程序

#cross(也叫Scott—Hinsley法),有回路附加阻力
q1,r1 = 20,0.375
q2,r2 = 11.5,1.5
q3,r3 = 8.5,2
q4,r4 = 10.5,4.6875
q5,r5 = 1,12.5
q6,r6 = 9.5,1.7361
q7,r7 = 20,0.5
q8 = 20

def f1(q3,q2,q5):
    f1 = r3 * q3 * abs(q3) - r2 * q2 * abs(q2) - r5 * q5 * abs(q5)
    return f1
def f2(q4,q5,q6):
    f2 = r4 * q4 * abs(q4) - r5 * q5 * abs(q5) - r6 * q6 * abs(q6)
    return f2
def f3(q1,q2,q5,q6,q7,q8):
    f3 = r1 * q1 * abs(q1) + r2 * q2 * abs(q2) + r5 * q5 * abs(q5) + r6 * q6 * abs(q6) + r7 * q7 * abs(q7) - (1046.3+5*q8-0.85*q8**2)
    return f3

vq1 = vq2 = vq3 = 0
i = 0
while True:
    i += 1
    max_f = max(abs(f1(q3,q2,q5)),abs(f2(q4,q5,q6)),abs(f3(q1,q2,q5,q6,q7,q8)))
    max_vq = max(abs(vq1),abs(vq2),abs(vq3))
    if max_f <= 10**-4 and max_vq <= 10**-4:
        print(q1,q2,q3,q4,q5,q6)
        print(f'△f = {max_f}')
        break
    else:
        print(f'第{i}次迭代:')
        #第一条支路
        print(f'f1_0={f1(q3,q2,q5)}')
        df13 = 2 * r3 * abs(q3) + 2 * r2 * abs(q2) + 2 * r5 * abs(q5)
        v_q1 = - f1(q3,q2,q5) / df13
        q3 = q3 + v_q1
        q2 = q2 - v_q1
        q5 = q5 - v_q1
        print(f'f1_1={f1(q3,q2,q5)}, df1={df13}, v_q1={v_q1}')
        print(f'q3={q3}, q2={q2}, q5={q5}')
        #第二条支路
        print(f'f2_0={f2(q4,q5,q6)}')
        df24 = 2 * r4 * abs(q4) + 2 * r5 * abs(q5) + 2 * r6 * abs(q6)
        v_q2 = - f2(q4,q5,q6) / df24
        q4 = q4 + v_q2
        q5 = q5 - v_q2
        q6 = q6 - v_q2
        print(f'f2_1={f2(q4,q5,q6)}, df2={df24}, v_q2={v_q2}')
        print(f'q4={q4}, q5={q5}, q6={q6}')
        #第三条支路
        print(f'f3_0={f3(q1,q2,q5,q6,q7,q8)}')
        df38 = 2*r1*abs(q1)+2*r2*abs(q2)+2*r5*abs(q5)+2*r6*abs(q6)+2*r7*abs(q7)-5+1.7*abs(q8)
        v_q3 = -f3(q1,q2,q5,q6,q7,q8) / df38
        q8 = q8 + v_q3
        q1 = q1 + v_q3
        q2 = q2 + v_q3
        q5 = q5 + v_q3
        q6 = q6 + v_q3
        q7 = q7 + v_q3
        print(f'f3_1={f3(q1,q2,q5,q6,q7,q8)}, df3={df38}, v_q3={v_q3}')
        print(f'q8={q8}, q1={q1}, q2={q2}, q5={q5}, q6={q6}, q7={q7}')
        print('Q:',q1, q2, q3, q4, q5, q6, q7, q8)
        # print(f'△f = {max_f}')

结果:

1次迭代:
f1_0=-66.375
f1_1=-6.04737767737144, df1=93.5, v_q1=0.7098930481283422
q3=9.209893048128341, q2=10.790106951871659, q5=0.2901069518716578
f2_0=359.06182445594663
f2_1=-64.01401871549717, df2=138.67607379679146, v_q2=-2.5892125052667465
q4=7.9107874947332535, q5=2.879319457138404, q6=12.089212505266747
f3_0=75.70000007799717
f3_1=2.26184635609377, df3=210.3294709448623, v_q3=-0.3599115223269965
q8=19.640088477673004, q1=19.640088477673004, q2=10.430195429544662, q5=2.5194079348114076, q6=11.729300982939751, q7=19.640088477673004
Q: 19.640088477673004 10.430195429544662 9.209893048128341 7.9107874947332535 2.5194079348114076 11.729300982939751 19.640088477673004 19.6400884776730042次迭代:
f1_0=-72.88190940669955
f1_1=-3.707777012108231, df1=131.11535685143255, v_q1=0.5558609697358518
q3=9.765754017864193, q2=9.87433445980881, q5=1.963546965075556
f2_0=6.305846424376227
f2_1=-0.014120534861149281, df2=163.97878576297657, v_q2=-0.03845525745928516
q4=7.872332237273969, q5=2.0020022225348413, q6=11.767756240399036
f3_0=-42.34172560534819
f3_1=0.9318042435439793, df3=183.29136740868285, v_q3=0.23100774577636973
q8=19.871096223449374, q1=19.871096223449374, q2=10.105342205585181, q5=2.233009968311211, q6=11.998763986175407, q7=19.871096223449374
Q: 19.871096223449374 10.105342205585181 9.765754017864193 7.872332237273969 2.233009968311211 11.998763986175407 19.871096223449374 19.8710962234493743次迭代:
f1_0=-24.766177545325938
f1_1=-0.4695272227224834, df1=125.20429189599258, v_q1=0.1978061388334774
q3=9.963560156697671, q2=9.907536066751703, q5=2.0352038294777333
f2_0=-11.221265621648996
f2_1=-0.043451244431935265, df2=166.34531877418505, v_q2=0.06745765798724968
q4=7.939789895261218, q5=1.9677461714904836, q6=11.931306328188157
f3_0=-21.737585631672005
f3_1=0.24396833511445948, df3=183.89942629115245, v_q3=0.11820366202370158
q8=19.989299885473077, q1=19.989299885473077, q2=10.025739728775404, q5=2.085949833514185, q6=12.049509990211858, q7=19.989299885473077
Q: 19.989299885473077 10.025739728775404 9.963560156697671 7.939789895261218 2.085949833514185 12.049509990211858 19.989299885473077 19.9892998854730774次迭代:
f1_0=-6.617957520674842
f1_1=-0.035264578069757135, df1=122.08020565097152, v_q1=0.054209914583496416
q3=10.017770071281168, q2=9.971529814191907, q5=2.031739918930689
f2_0=-8.16391184419237
f2_1=-0.022800964279554137, df2=167.06733682935476, v_q2=0.04886599618530533
q4=7.988655891446523, q5=1.9828739227453835, q6=12.000643994026552
f3_0=-8.66490352575454
f3_1=0.03825612885498231, df3=185.11815819215144, v_q3=0.04680742078667629
q8=20.036107306259755, q1=20.036107306259755, q2=10.018337234978583, q5=2.0296813435320598, q6=12.047451414813228, q7=20.036107306259755
Q: 20.036107306259755 10.018337234978583 10.017770071281168 7.988655891446523 2.0296813435320598 12.047451414813228 20.036107306259755 20.0361073062597555次迭代:
f1_0=-1.3342664820504098
f1_1=-0.0014623213621689501, df1=120.86812557836191, v_q1=0.011039026837438383
q3=10.028809098118607, q2=10.007298208141144, q5=2.0186423166946215
f2_0=-3.76610364391027
f2_1=-0.004845059699675858, df2=167.19086770219118, v_q2=0.02252577366018965
q4=8.011181665106713, q5=1.9961165430344319, q6=12.024925641153038
f3_0=-2.9238012929627075
f3_1=0.004323794232277578, df3=185.802325218092, v_q3=0.015736085592743757
q8=20.051843391852497, q1=20.051843391852497, q2=10.023034293733888, q5=2.011852628627176, q6=12.040661726745782, q7=20.051843391852497
Q: 20.051843391852497 10.023034293733888 10.028809098118607 8.011181665106713 2.011852628627176 12.040661726745782 20.051843391852497 20.0518433918524976次迭代:
f1_0=-0.1321883184612247
f1_1=-1.4445506081983694e-05, df1=120.4806549893555, v_q1=0.0010971746333293389
q3=10.029906272751937, q2=10.021937119100558, q5=2.0107554539938466
f2_0=-1.3955059350516592
f2_1=-0.0006653155589901871, df2=167.1813001078283, v_q2=0.008347260932601842
q4=8.019528926039316, q5=2.0024081930612447, q6=12.03231446581318
f3_0=-0.8514286634795099
f3_1=0.000365554809832247, df3=186.0834781739204, v_q3=0.004575519932423735
q8=20.05641891178492, q1=20.05641891178492, q2=10.026512639032982, q5=2.0069837129936685, q6=12.036889985745603, q7=20.05641891178492
Q: 20.05641891178492 10.026512639032982 10.029906272751937 8.019528926039316 2.0069837129936685 12.036889985745603 20.05641891178492 20.056418911784927次迭代:
f1_0=0.05181082657199454
f1_1=-2.223098292120085e-06, df1=120.3737558329484, v_q1=-0.0004304162997447406
q3=10.029475856452192, q2=10.026943055332726, q5=2.007414129293413
f2_0=-0.4427719245956041
f2_1=-6.699153365730126e-05, df2=167.16292632245978, v_q2=0.0026487447566064404
q4=8.022177670795923, q5=2.0047653845368067, q6=12.034241240988996
f3_0=-0.2086204131659315
f3_1=2.192399074374407e-05, df3=186.17990146203832, v_q3=0.0011205313330153886
q8=20.057539443117935, q1=20.057539443117935, q2=10.028063586665741, q5=2.0058859158698223, q6=12.03536177232201, q7=20.057539443117935
Q: 20.057539443117935 10.028063586665741 10.029475856452192 8.022177670795923 2.0058859158698223 12.03536177232201 20.057539443117935 20.0575394431179358次迭代:
f1_0=0.04295411943638072
f1_1=-1.5286363037603223e-06, df1=120.34924208255154, v_q1=-0.00035691225547492076
q3=10.029118944196718, q2=10.028420498921216, q5=2.006242828125297
f2_0=-0.12096638038886454
f2_1=-5.000803952270871e-06, df2=167.15316951270069, v_q2=0.0007236858310345903
q4=8.022901356626958, q5=2.0055191422942626, q6=12.034638086490975
f3_0=-0.03787276625484992
f3_1=7.223159173008753e-07, df3=186.20842149679106, v_q3=0.00020338911607981481
q8=20.057742832234016, q1=20.057742832234016, q2=10.028623888037297, q5=2.0057225314103424, q6=12.034841475607056, q7=20.057742832234016
Q: 20.057742832234016 10.028623888037297 10.029118944196718 8.022901356626958 2.0057225314103424 12.034841475607056 20.057742832234016 20.0577428322340169次迭代:
f1_0=0.01997204953357823
f1_1=-3.304969737882857e-07, df1=120.34541072615733, v_q1=-0.00016595605443587774
q3=10.028952988142281, q2=10.028789844091733, q5=2.0058884874647784
f2_0=-0.027023952008505603
f2_1=-2.4959052780104685e-07, df2=167.14928897660002, v_q2=0.00016167554270774556
q4=8.023063032169667, q5=2.0057268119220706, q6=12.034679800064348
f3_0=-0.0015476170225383612
f3_1=1.2061036613886245e-09, df3=186.21556780331778, v_q3=8.310889582405728e-06
q8=20.0577511431236, q1=20.0577511431236, q2=10.028798154981315, q5=2.005735122811653, q6=12.03468811095393, q7=20.0577511431236
Q: 20.0577511431236 10.028798154981315 10.028952988142281 8.023063032169667 2.005735122811653 12.03468811095393 20.0577511431236 20.057751143123610次迭代:
f1_0=0.007440140697596576
f1_1=-4.586525648164752e-08, df1=120.34558448780439, v_q1=-6.182312985775184e-05
q3=10.028891165012423, q2=10.028859978111173, q5=2.0057969459415106
f2_0=-0.0038643388828063507
f2_1=-5.103800049255369e-09, df2=167.14798363398262, v_q2=2.311926712360709e-05
q4=8.02308615143679, q5=2.005773826674387, q6=12.034664991686807
f3_0=0.0028347228758320853
f3_1=4.0461145545123145e-09, df3=186.21693082910457, v_q3=-1.5222691423442983e-05
q8=20.057735920432176, q1=20.057735920432176, q2=10.02884475541975, q5=2.005758603982964, q6=12.034649768995383, q7=20.057735920432176
Q: 20.057735920432176 10.02884475541975 10.028891165012423 8.02308615143679 2.005758603982964 12.034649768995383 20.057735920432176 20.05773592043217611次迭代:
f1_0=0.002380588717024068
f1_1=-4.695465349868755e-09, df1=120.34606402588304, v_q1=-1.9781192981201866e-05
q3=10.028871383819443, q2=10.02886453661273, q5=2.005778385175945
f2_0=0.0004075181669804806
f2_1=-5.6701310313655995e-11, df2=167.14760322702432, v_q2=-2.43807364935397e-06
q4=8.02308371336314, q5=2.0057808232495944, q6=12.034652207069032
f3_0=0.0018111995642584588
f3_1=1.6520971257705241e-09, df3=186.21702250995415, v_q3=-9.726283558000946e-06
q8=20.057726194148618, q1=20.057726194148618, q2=10.028854810329172, q5=2.0057710969660363, q6=12.034642480785473, q7=20.057726194148618
Q: 20.057726194148618 10.028854810329172 10.028871383819443 8.02308371336314 2.0057710969660363 12.034642480785473 20.057726194148618 20.05772619414861812次迭代:
f1_0=0.0006580885869453823
f1_1=-3.588667141229962e-10, df1=120.3463273904162, v_q1=-5.468289736922951e-06
q3=10.028865915529705, q2=10.02886027861891, q5=2.0057765652557733
f2_0=0.0006199440929890443
f2_1=-1.3136514098732732e-10, df2=167.14750956595708, v_q2=-3.7089639839617944e-06
q4=8.023080004399157, q5=2.0057802742197572, q6=12.034646189749457
f3_0=0.0007796968936872872
f3_1=3.0593128030886874e-10, df3=186.21694156121146, v_q3=-4.187035224348761e-06
q8=20.057722007113394, q1=20.057722007113394, q2=10.028856091583684, q5=2.005776087184533, q6=12.034642002714232, q7=20.057722007113394
Q: 20.057722007113394 10.028856091583684 10.028865915529705 8.023080004399157 2.005776087184533 12.034642002714232 20.057722007113394 20.05772200711339413次迭代:
f1_0=0.00014994578802429714
f1_1=-1.8680168523133034e-11, df1=120.3464341164832, v_q1=-1.2459512334130711e-06
q3=10.028864669578471, q2=10.028857337534918, q5=2.0057773331357662
f2_0=0.0003224413149780503
f2_1=-3.5498715078574605e-11, df2=167.1474923314606, v_q2=-1.929082575397754e-06
q4=8.023078075316581, q5=2.0057792622183417, q6=12.034643931796808
f3_0=0.00027730697377137403
f3_1=3.888089850079268e-11, df3=186.21688515258938, v_q3=-1.4891612731259242e-06
q8=20.05772051795212, q1=20.05772051795212, q2=10.028855848373645, q5=2.0057777730570687, q6=12.034642442635535, q7=20.05772051795212
Q: 20.05772051795212 10.028855848373645 10.028864669578471 8.023078075316581 2.0057777730570687 12.034642442635535 20.05772051795212 20.0577205179521214次迭代:
f1_0=2.2744129033469562e-05
f1_1=-4.405364961712621e-13, df1=120.34647054986152, v_q1=-1.8898874997789233e-07
q3=10.028864480589721, q2=10.028856037362395, q5=2.0057779620458187
f2_0=0.00012742353806061146
f2_1=-5.5422333389287814e-12, df2=167.1474914965575, v_q2=-7.623419108460615e-07
q4=8.02307731297467, q5=2.0057787243877296, q6=12.034643204977446
f3_0=8.524576298896136e-05
f3_1=3.637978807091713e-12, df3=186.21686014503794, v_q3=-4.5777682494789327e-07
q8=20.057720060175296, q1=20.057720060175296, q2=10.02885557958557, q5=2.0057782666109047, q6=12.034642747200621, q7=20.057720060175296
Q: 20.057720060175296 10.02885557958557 10.028864480589721 8.02307731297467 2.0057782666109047 12.034642747200621 20.057720060175296 20.057720060175296
20.057720060175296 10.02885557958557 10.028864480589721 8.02307731297467 2.0057782666109047 12.034642747200621
△f = 4.2083944265414175e-05

猜你喜欢

转载自blog.csdn.net/weixin_48615832/article/details/113878664