㈠ 谁帮忙写一个C++的prim和Kruskal算法,我的图的定义如下
void Kruskal(Edge E[],int n,int e)
{
int i,j,m1,m2,sn1,sn2,k;
int vset[MAXE];
for (i=0;i<n;i++) vset[i]=i; //初始化辅助数组
k=1; //k表示当前构造最小生成树的第几条边,初值为1
j=0; //E中边的下标,初值为0
while (k<n) //生成的边数小于n时循环
{
m1=E[j].u;m2=E[j].v; //取一条边的头尾顶点
sn1=vset[m1];sn2=vset[m2]; //分别得到两个顶点所属的集合编号
if (sn1!=sn2) //两顶点属于不同的集合,该边是最小生成树的一条边
{
printf(" (%d,%d):%d\n",m1,m2,E[j].w);
k++; //生成边数增1
for (i=0;i<n;i++) //两个集合统一编号
if (vset[i]==sn2) //集合编号为sn2的改为sn1
vset[i]=sn1;
}
j++; //扫描下一条边
}
}
void prim(MGraph g,int v)
{
int lowcost[MAXV],min,n=g.vexnum;
int closest[MAXV],i,j,k;
for (i=0;i<n;i++) //给lowcost[]和closest[]置初值
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for (i=1;i<n;i++) //找出n-1个顶点
{
min=INF;
for (j=0;j<n;j++) //在(V-U)中找出离U最近的顶点k
if (lowcost[j]!=0 && lowcost[j]<min)
{
min=lowcost[j];k=j;
}
printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);
lowcost[k]=0; //标记k已经加入U
for (j=0;j<n;j++) //修改数组lowcost和closest
if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])
{
lowcost[j]=g.edges[k][j];closest[j]=k;
}
}
}
㈡ 急!数据结构最小生成树prim算法C语言实现
Kruskal算法:
void Kruskal(Edge E[],int n,int e)
{
int i,j,m1,m2,sn1,sn2,k;
int vset[MAXE];
for (i=0;i<n;i++) vset[i]=i; //初始化辅助数组
k=1; //k表示当前构造最小生成树的第几条边,初值为1
j=0; //E中边的下标,初值为0
while (k<n) //生成的边数小于n时循环
{
m1=E[j].u;m2=E[j].v; //取一条边的头尾顶点
sn1=vset[m1];sn2=vset[m2]; //分别得到两个顶点所属的集合编号
if (sn1!=sn2) //两顶点属于不同的集合,该边是最小生成树的一条边
{
printf(" (%d,%d):%d/n",m1,m2,E[j].w);
k++; //生成边数增1
for (i=0;i<n;i++) //两个集合统一编号
if (vset[i]==sn2) //集合编号为sn2的改为sn1
vset[i]=sn1;
}
j++; //扫描下一条边
}
}
Prim算法:
void prim(MGraph g,int v)
{
int lowcost[MAXV],min,n=g.vexnum;
int closest[MAXV],i,j,k;
for (i=0;i<n;i++) //给lowcost[]和closest[]置初值
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for (i=1;i<n;i++) //找出n-1个顶点
{
min=INF;
for (j=0;j<n;j++) //在(V-U)中找出离U最近的顶点k
if (lowcost[j]!=0 && lowcost[j]<min)
{
min=lowcost[j];k=j;
}
printf(" 边(%d,%d)权为:%d/n",closest[k],k,min);
lowcost[k]=0; //标记k已经加入U
for (j=0;j<n;j++) //修改数组lowcost和closest
if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])
{
lowcost[j]=g.edges[k][j];closest[j]=k;
}
}
}
㈢ 哪位高手帮我写一个C语言的Prim和Kruskal算法,有主函数调用可以调试的
void Kruskal(Edge E[],int n,int e)
{
int i,j,m1,m2,sn1,sn2,k;
int vset[MAXE];
for (i=0;i<n;i++) vset[i]=i; //初始化辅助数组
k=1; //k表示当前构造最小生成树的第几条边,初值为1
j=0; //E中边的下标,初值为0
while (k<n) //生成的边数小于n时循环
{
m1=E[j].u;m2=E[j].v; //取一条边的头尾顶点
sn1=vset[m1];sn2=vset[m2]; //分别得到两个顶点所属的集合编号
if (sn1!=sn2) //两顶点属于不同的集合,该边是最小生成树的一条边
{
printf(" (%d,%d):%d\n",m1,m2,E[j].w);
k++; //生成边数增1
for (i=0;i<n;i++) //两个集合统一编号
if (vset[i]==sn2) //集合编号为sn2的改为sn1
vset[i]=sn1;
}
j++; //扫描下一条边
}
}
void prim(MGraph g,int v)
{
int lowcost[MAXV],min,n=g.vexnum;
int closest[MAXV],i,j,k;
for (i=0;i<n;i++) //给lowcost[]和closest[]置初值
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for (i=1;i<n;i++) //找出n-1个顶点
{
min=INF;
for (j=0;j<n;j++) //在(V-U)中找出离U最近的顶点k
if (lowcost[j]!=0 && lowcost[j]<min)
{
min=lowcost[j];k=j;
}
printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);
lowcost[k]=0; //标记k已经加入U
for (j=0;j<n;j++) //修改数组lowcost和closest
if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])
{
lowcost[j]=g.edges[k][j];closest[j]=k;
}
}
}
㈣ 克鲁斯卡尔算法找最小生成树求帮忙解决
Kruskal算法:
void Kruskal(Edge E[],int n,int e)
{
int i,j,m1,m2,sn1,sn2,k;
int vset[MAXE];
for (i=0;i<n;i++) vset[i]=i; //初始化辅助数组
k=1; //k表示当前构造最小生成树的第几条边,初值为1
j=0; //E中边的下标,初值为0
while (k<n) //生成的边数小于n时循环
{
m1=E[j].u;m2=E[j].v; //取一条边的头尾顶点
sn1=vset[m1];sn2=vset[m2]; //分别得到两个顶点所属的集合编号
if (sn1!=sn2) //两顶点属于不同的集合,该边是最小生成树的一条边
{
printf(" (%d,%d):%d/n",m1,m2,E[j].w);
k++; //生成边数增1
for (i=0;i<n;i++) //两个集合统一编号
if (vset[i]==sn2) //集合编号为sn2的改为sn1
vset[i]=sn1;
}
j++; //扫描下一条边
}
}
㈤ 变压器负载损耗计算方法
变压器损耗计算公式 :
1、有功损耗:ΔP=P0+KTβ2PK
2、无功损耗:ΔQ=Q0+KTβ2QK
3、综合功率损耗:ΔPZ=ΔP+KQΔK
Q0≈I0%SN,QK≈UK%SN
在工程计算中,我们设定电网电压大小、波形恒定,这样当某一台变压器的空载损耗P0为一定值,其负载损耗PZ则与负荷平方成正比,即:
PZ=(S/SZ)2Pkn(1)
式(1)中,S—变压器的实际负荷;
SZ—变压器的额定容量;
Pkn—变压器在额定电流下的短路损耗。
这样,单台变压器的总损耗为:
P=P0+PZ=P0+(S/SZ)2Pkn(2)
当两台变压器并列运行时,各变压器的负载分配与该变压器的额定容量成正比,与短路电压成反比,即:
S=S1+S2(3)
S1:S2=(Sn1/Uk1):(Sn2/Uk2)(4)
式(4)中,S—总负荷;
Uk—变压器的短路电压。
这时两台变压器并列运行的总损耗Pb为:
Pb=P1+P2=PO1+PO2+(S1/Sn1)2Pkn1+(S2/Sn2)2Pkn2 (5)
将(3)式代入为:
Pb=PO1+PO2+[(Pkn1Uk22+Pkn2Uk12)/(Sn2Uk1+Sn1Uk2)2]S2(6)
式(6)中,P的单位为kW,S的单位为MVA。
(5)sn2算法扩展阅读:
上式计算时各参数的选择条件:
1、取KT=1.05;
2、对城市电网和工业企业电网的6kV~10kV降压变压器取系统最小负荷时,其无功当量KQ=0.1kW/kvar;
3、变压器平均负载系数,对于农用变压器可取β=20%;对于工业企业,实行三班制,可取β=75%;
4、变压器运行小时数T=8760h,最大负载损耗小时数:t=5500h;
5、变压器空载损耗P0、额定负载损耗PK、I0%、UK%,见产品资料所示。
㈥ 用matlab求ln2的值,运用以下三种算法,求和,程序过程。
>>N=100;
>>k=1:N;
%算法1
>>SN1=sum((-1).^(k-1)./k)
SN1=
0.6882
%算法2
>>SN1_1=SN1-(-1).^(N-1)./N;
>>SN1_2=SN1_1-(-1).^(N-2)./(N-1);
>>SN2=SN1-(SN1-SN1_1)^2/(SN1-2*SN1_1+SN1_2)
SN2=
0.6931
%算法3
>>SN3=sum(1./(k.*2.^k))
SN3=
0.6931
㈦ 这道题的 摩尔吉布斯自由能变怎么算的
摩尔吉布斯自由能算法:
G = U − TS + pV = H − TS,
其中U是系统的内能,T是温度(绝对温度,K),S是熵,p是压强,V是体积,H是焓。
吉布斯自由能的微分形式是:
dG = − SdT + Vdp + μdN,
其中μ是化学势,也就是说每个粒子的平均吉布斯自由能等于化学势。
(7)sn2算法扩展阅读:
吉布斯自由能随温度和压强变化很大。为了求出非标准状况下的吉布斯自由能,可以使用范特霍夫等温公式:
ΔG = ΔG0 + RT·ln Q
其中,ΔG0是同一温度、标准压强下的吉布斯自由能,R是气体常数,Q是反应熵。
温度的变化在ΔG0的使用上表现出来,不同的温度使用不同的ΔG0。非标准状况的ΔG0需要通过定义式(即吉布斯等温公式)计算。压强或浓度的变化在Q的表达上表现出来。
㈧ 一个反应存在多个途径怎么算过渡态
3.过渡态相关问题
3.1 无过渡态的反应途径(barrierless reaction pathways)
并非所有反应途径都需要越过势垒,这类反应在很低的温度下就能发生,盲目找它们的过渡态是徒劳的。常见的包括自由基结合,比如甲基自由基结合为乙烷;自由基向烯烃加成,比如甲基自由基向乙烯加成成为丙基自由基;气相离子向中性分子加成,比如叔碳阳离子向丙烯加成。等等。
3.2 Hammond-Leffler假设
过渡态在结构上一般会偏向反应物或者产物结构一边。Hammond-Leffler假设对预测过渡态结构往哪个方向偏是很有用的,意思是反应过程中,如果两个结构的能量差异不大,则它们的构型差异也不大。由此可知对于放热反应,因为过渡态能量与反应物差异小,与产物差异大,故过渡态结构更偏向反应物,相反,吸热反应的过渡态结构更偏向产物。所以初猜过渡态结构应考虑这一问题。
3.2 对称性问题
如果已经明确地知道过渡态是什么对称性,而且对称性高于平衡态对称性,且可以确信在这个高对称性下过渡态是能量最低点,则可以强行限制到这个对称性之后进行几何优化,几何优化算法比寻找过渡态算法方法更可靠。比如F+CH3F-->FCH3+F这个SN2反应,过渡态就是伞形翻转的一刻,恰为高对称性的D3h点群,而反应路径上的其它结构对称性都比它低,所以在D3h点群条件下优化,得到的能量最低点就是过渡态。
如果过渡态对称性不确定,则找过渡态计算的时候不宜设任何对称性,否则若默认保持了平衡态下的对称性,得到的此对称下的过渡态并不是真正的过渡态,容易得到二阶或高阶鞍点。
3.3 溶剂效应
计算凝聚态条件下过渡态的性质,必须考虑溶剂效应,它明显改变了势能面。一般对过渡态的结构影响较小,但对能量影响很大。有时溶剂效应也会改变反应途径,或产生气相条件下没有的势垒。溶剂条件下,上述寻找过渡态的方法依然适用。应注意涉及到与溶剂产生氢键等强相互作用的情况,隐式溶剂模型是不适合的,需要用显式溶剂考察它对过渡态的影响,即在输入文件中明确表达出溶剂分子。
3.4 计算过渡态的建议流程
直接用高水平方法计算过渡态往往比较花时间,可以使用逐渐提高方法等级的方法加速这一过程,一般建议是:
1 执行低水平的计算找过渡态,如半经验。
2 将第1步得到的过渡态作为初猜,用高级别的方法找过渡态。
3 在相同水平下对上一步找到的过渡态做振动分析,检验是否仅有一个虚频,以及观看其振动模式的动画来考察振动方向是否连接反应物与产物结构。有必要时可以做IRC进一步检验。
4 为获得更精确的过渡态能量,可使用更高等级方法比如含电子相关的方法计算能量。
4.内禀反应坐标(intrinsic reaction coordinate,IRC)
MEP指的是势能面上,由一个点到达另一个点的能量最低的路径,满足最小作用原理。若质量权重坐标下的MEP连接的是反应物、过渡结构和产物,则称为IRC。所谓质权坐标在笛卡儿坐标下即r(i,x)=sqrt(m(i))*R(i,x),m(i)为i原子质量,R(i,x)为i原子原始x方向坐标,同样有r(i,y)、r(i,z)。IRC描述了原子核运动速度为无限小时,质权坐标下由过渡态沿着势能负梯度方向行进的路径(最陡下降路径),其中每一点的负梯度方向就是此处核的运动方向,在垂直于路径方向上是能量极小点。注意质量权重和非权重坐标下的路径是不一样的。
IRC可看作0K时的实际在化学反应中原子核所走的路径,温度较低时IRC也是一个很好的近似。但是当温度较高,即核动能较大时,实际反应路径将明显偏离IRC,而趋于沿最短路径变化,即便经历的是势能面上能量较高的的路径,这时就需要以动力学计算的平均轨迹来表征反应路径。
5.IRC算法
5.1 最陡下降法(Steepest descent)
最简单的获得IRC的方法就是固定步长的最陡下降法,由过渡态位置开始,每步沿着当前梯度方向行进一定距离直到反应物/产物位置,也称Euler法。由于最陡下降法及下文的IMK、GS等方法第一步需要梯度,而过渡态位置梯度为0,所以第一步移动的方向沿着虚频方向。最陡下降方法与IRC的本质相符,但是此法实际得到的路径是一条在真实IRC附近反复震荡的曲折路径,而非应有的平滑路径,对IRC描述不够精确。虽然可以通过更小的步长得以一定程度的解决,但是太花时间,对于复杂的反应机理,需要更多的点。也可以通过RK4(四阶Runga-Kutta)来走步,比上面的方法更稳定、准确,但每步要需要算四个梯度,比较费时。
5.2 IMK方法(Ishida-Morokuma-Kormornicki)
它是最陡下降法的改进,解决其震荡问题。首先计算起始点X(k)的梯度g(k),获得辅助点X'(k+1)=X(k)-g(k)*s,其中s为可调参数。然后计算此点梯度g'(k+1),在g(k)与-g'(k+1)方向的平分线上(红线所示)进行线搜索,所得能量最小点即为X(k+1),之后再将X(k+1)作为上述步骤的X(k)重复进行。整个过程类似先做最陡下降法,然后做校正。此方法仍然需要相对较小的步长,获得较精确IRC所需计算的点数较多。
[图12]IMK方法示意图
Schmidt,Gordon,Dupuis改进了IMK的三个细节,使之更有效率、更稳定。(1)将X'(k+1)的确定方式改为了X(k)-g(k)/|g(k)|*s,即每一步在负梯度方向上行进固定的s距离,与梯度大小不再有关。(2)线搜索步只需在平分线上额外计算一个点的能量即可,这个点和X'(k+1)点的能量以及g'(k+1)在此平分线上的投影三个条件作联立方程即可解出曲线方程,减少了计算量。IMK原始方法则需要在平分线上额外计算两个点的能量与X'(k+1)的能量一起拟和曲线方程。(3)第一步在过渡态位置的移动距离Δq如此确定:ΔE=k*(Δq^2)/2,k为虚频对应的力常数,ΔE为降低能量的期望值(一般为0.0005 hartree),这样可避免在虚频很大的鞍点处第一步位移使能量降低过多。
5.3 Müller-Brown方法
这是通过球形限制性优化找IRC的方法。首先将过渡态和能量极小点位置定义为P1和P2,由P1开始步进,当前步结构以Q(n)表示。每一步,在相距Q(n)为r距离的超球面上用simplex法优化获得能量极小点Q'(图中绿点),优化的起始点是Q(n-1)Q(n)与Q(n)P2方向的平分线b上距Q(n)为r距离的位置S(红点)。若Q(n)Q'与Q(n)P2的夹角较小,则Q'可当作是下一步位置Q(n+1)。如此反复,直到符合停止标准,比如下一步能量比当前更高(已走过头了)、与P2距离已很近(如小于1.2r)、或者与P2方向偏离太大(P1与P2点通过此法无法找到IRC)。最终所得到全部结构点依次相连即为近似的IRC,减小步长r值可使结果更贴近实际IRC。基于此方法也可以用于寻找过渡态,先将反应物和产物作为P1和P2,将二者距离的约2/3作为r,由其中一点在P1-P2连线上相距其r位置为初始位置进行球形优化得到O点,在O与P1、O与P2上也如此获得P1'与P2',根据P1、P1'、O、P2'、P2的能量及之间距离信息以一定规则确定其中哪两个点作为下一步的P1和P2,确定新的P1和P2后重复上述步骤,直至P1与P2十分接近,即是过渡态。此方法计算IRC可以步长可设得稍大,第一步不需要费时的Hessian矩阵确定移动方向,缺点是获得的路径曲率容易有问题,对于曲率较大的反应路径需要减小步长。
[图13]Müller-Brown方法示意图
5.4 GS(Gonzalez-Schlegel)方法
这是目前很常用,也是Gaussian使用的方法,见图14。首先计算起始点X(k)的梯度,沿其负方向行进s/2距离得到X'(k+1)点作为辅助点。在距X'(k+1)点距离为s/2的超球面上做限制性能量最小化,找到下一个点X(k+1)。因为这个点的负梯度(黑色箭头)在弧方向上分量为0,故垂直于弧,即其梯度方向在X'(k+1)到X(k+1)的直线上。这必然可以得到一段用于描述IRC的圆弧(虚线),它通过X(k)与X(K+1)点,且在此二点处圆弧的切线等于它们的梯度方向,这与IRC的特点一致,这段圆弧可以较好地(实线)。之后再将X(k+1)作为上述步骤的X(k)重复进行。
GS方法对IRC描述得比较精确,在研究反应过程等问题中,由于对中间体结构精度有要求,GS是很好的选择,而且用大步长可以得到与小步长相近的结果,优于IMK、Müller-Brown等方法。若只想得到与过渡态相连的反应物和产物结构,或者粗略验证预期的反应路径,对IRC精度要求不高,使用最陡下降法往往效率更高,尽管GS可以用更大步长,但每步更花时间。
[图14]GS方法示意图
除上述外,IRC也可以通过已提及的EF、最缓上升法、球形优化等方法得到,它们的好处是不需要事先知道过渡态的结构。赝坐标法除了简单的反应以外,只能得到近似的IRC,由于结构的较小偏差会带来能量的较大变化,容易引入滞后效应,所以这样得到的势能曲线难以说明问题。
6. chain-of-states方法
这类方法主要好处是只需要提供反应物和产物结构就能得到准确的反应路径和过渡态。首先在二者结构之间以类似LST的方式线性、均匀地插入一批新的结构(使用内坐标更为适宜),一般为5~40个,每个结构就是势能面上的一个点(称为image),并将相邻的点以某种势函数相连,这样它们在势能面上就如同组成了一条链子。对这些点在某些限制条件下优化后,在势能面上的分布描述的就是MEP,能量最高的结构就是近似的过渡态位置。
6.1 Drag method方法
这个方法最简单,并不是严格的chain-of-states方法,因为每个结构点是独立的。插入的结构所代表的点均匀分布在图8所示的短虚线上,也可以在过渡态附近位置增加点的密度。每个点都在垂直于短虚线的超平面上优化,在图中就是指平行于长虚线方向优化。这种方法一般是奏效的,但也很容易失效,图8就是一例,优化后点的分布近似于从产物和反应物用最缓上升法得到的路径(黑色粗曲线),不仅反应路径错误,而且两段不连接,与黑色小点所示的真实MEP相距甚远(黑色点是用下文的NEB方法得到的)。目前基本不使用此方法。
6.2 PEB方法(plain elastic band)
这是下述Chain-of-state方法的基本形式。也是在反应物到产物之间插入一系列结构,共插入P-1个,反应物编号为0,产编号物为P。不同的是优化不是对每个点孤立地优化,而是优化一个函数,每一步所有点一起运动。下文用∑[i=1,P]X(i)符号代表由X(1)开始加和直到X(P)。PEB函数是这样的:S(R(1),R(2)...R(P-1))=∑[i=1,P-1]V(R(i)) + ∑[i=1,P]( k/2*(R(i)-R(i-1))^2 )。其中R(i)代表第i个点的势能面上的坐标,V(R(i))是R(i)点的能量,k代表力常数。优化过程中反应物R(0)和产物R(P)结构保持不变,优化此函数相当于对一个N*(P-2)个原子的整体进行优化,N为体系原子数。
优化过程中,式中的第一项目的是让每个点尽量向着能量极小的位置移动。第二项相当于将相邻点之间用自然长度为0、力常数为k的弹簧势连了起来,目的是保持优化中相邻点之间距离均衡,避免过大。当只有第一项的时候,函数优化后结构点都会跑到作为能量极小点的反应物和产物位置上去而无法描述MEP,这时必然会有一对儿相邻结构点距离很大。当第二项出现后,由于此种情况下弹簧势能很高,在优化中不可能出现,从而避免了这个问题。drag method法在图8中失败的例子中,也有一对儿相邻结构点距离太远,所以也不会在PEB方法中出现。简单来说,PEB方法就是保持相邻结构点的间距尽量小的情况下,优化每个结构点位置。可以近似比喻成在势能面的模型上,将一串以弹簧相连的珠子,一边挂在反应物位置,另一边挂在产物位置,拉直之后松手,这串珠子受重力作用在模型上滚动,停下来后其形状可当作MEP,最高的位置近似为过渡态。
但是PEB方法的结果并不能很好描述MEP。图15描述的是常见的A、B、C三原子反应的LEPS势能面,B可与A或C成键,黑色弧线为NEB方法得到的较真实的MEP。左图中,在过渡态附近PEB的结构点没有贴近MEP,得到的过渡态能量过高,称为corner-cutting问题。这是因为每点间的弹簧势使这串珠子僵硬、不易弯曲,由图15右图可见,R(i)朝R(i-1)与R(i+1)方向都会受到弹簧拉力,其合力牵引R(i),使R(i-1)、R(i)、R(i+1)的弧度有减小趋势。如果将弹簧力常数减小以减弱其效果,就会出现图15中间的情况,虽然结构点贴近了MEP,但相邻点间距没有得到保持,过渡态附近分辨率很低,错过了真实过渡态,若以能量最高点作为过渡态则能量偏低,这称为sliding-down问题。可见弹簧力常数k的设定对PEB结果有很大影响,为权衡这两个问题只能取折中的k,但结果仍不准确。
[图15]LEPS势能面上不同k值的PEB结果
6.3 Elber-Karplus方法
与PEB函数定义相似。第一项定义为1/L*∑[i=1,P-1]( V(R(i))*d(i,i-1) ),其中L为链子由0点到P-1点的总长,d(i,i+1)为R(i)与R(i+1)的距离,此项可视为所有插入点总能量除以点数,即插入点的平均能量。第二项为γ*∑[i=1,P](d(i,i-1)-<d>)^2,其中<d>代表相邻点的平均距离,是所有d(i,j)的RMS。此项相当于将弹簧自然长度设为了当前各个弹簧长度的平均值,由γ参数控制d(i,j)在平均值上下允许的波动的范围。此方法最初被用于研究蛋白质体系的构象变化。
6.4 SPW方法(Self-Penalty Walk)
在Elber-Karplus方法的基础上增加了第三项互斥项,∑[i=0,P-1]∑[i=j+1,P-1]U(ij),其中U(ij)=ρ*exp(-d(i,j)/(λ*<d>)),<d>定义同上。此项相当于全部点之间的“非键作用能U(ij)”之和,不再仅仅是相邻点之间才有限制势。任何点之间靠近都会造成能量升高,可以避免Elber-Karplus方法中出现的在能量极小点处结构点聚集、路径自身交错的问题,能够使路径充分地展开,确保过渡态区域有充足的采样点。式中ρ和λ都是可调参数来设定权重。此外相对与Elber-Karplus方法还考虑了笛卡儿坐标下投影掉整体运动的问题。
6.5 LUP方法(Locally Updated planes)
特点是优化过程中,只允许每个结构点R(i)在垂直于R(i-1)R(i+1)向量的超平面上运动。由于每步优化后R(i-1)与R(i+1)连线方向也会变化,故每隔一定步数重新计算这些向量,重新确定每个点允许移动的超平面。但是LUP缺点是结构点之间没有以上述弹簧势函数相连来保持间隔,容易造成结构点在路径上分布不均匀,甚至不连续,还可能逐渐收敛至两端的极小点。
6.6 NEB方法(Nudged Elastic Band)
NEB方法集合了LUP与PEB方法的优点,其函数形式基于PEB。从PEB方法的讨论可以看出,弹簧势是必须的,它平行于路径切线(R(i)-R(i-1)与R(i+1)-R(i)矢量和的方向)的分量保证结构点均匀分布在MEP上来描述它;但其垂直于路径的分量造成的弊端也很明显,它改变了这个方向的实际的势能面,优化后得到的MEP'就与真实的MEP发生了偏差,造成corner-cutting问题。解决这个问题很简单,在NEB中称为nudge过程,即每个点在平行于路径切线上的受力只等于弹簧力在这个方向分量,每个点在垂直于路径切线方向的受力只等于势能力在此方向上分量。这样弹簧力垂直于路径的分量就被投影掉了,而有用的平行于路径的分量完全保留;势能力在路径方向上的分量也不会再对结构点分布的均匀性产生影响,被保留的它在垂直于路径上的分量将会引导结构点地正确移动。这样优化收敛后结构点就能正确描述真实的MEP,矛盾得到解决。弹簧力常数的设定也比较随意,不会再对结果产生明显影响。但是当平行于路径方向能量变化较快,垂直方向回复力较小的情况,NEB得到的路径容易出现曲折,收敛也较慢,解决这一问题可以引入开关函数,即某点与两个相邻点之间形成的夹角越小,此点就引入更多的弹簧势垂直于路径的分量,使路径不易弯曲而变得光滑,但也会带来一定corner-cutting问题。也可以通过将路径切线定义为每个点指向能量更高的相邻点的方向来解决。
6.7 DNEB方法(Double Nudged Elastic Band)
弹簧势垂直于路径的分量坏处是造成corner-cutting问题,好处是避免路径卷曲。更具体来说,前者是由于它平行于势能梯度方向的那个分量造成的,若只将这个分量投影掉,就可避免corner-cutting问题,而其余分量的力F(DNEB)仍可以避免路径卷曲,这便是DNEB的主要思想。故DNEB与NEB的不同点就是DNEB保留了弹簧势垂直于路径的分量其中的垂直于势能梯度的分量。
DNEB的这个设定却导致结构点不能精确收敛到MEP上。正确的MEP上的点在垂直于路径方向上受势能力一定为0,但是当用了DNEB方法后,若其中某一点处路径是弯曲的,即弹簧力在垂直于路径方向上有分量F',而且此点势能梯度方向不垂直于此点处路径的切线,即F'不会被完全投影掉,F'力的分量F(DNEB)将继续带着这个点移动,也就是说结构点就不在正确的MEP上了。只有当结构点所处路径恰为直线,即F'为0则不会有此问题。为了解决此问题有人将开关函数加入到DNEB,称为swDNEB,当结果越接近收敛,即垂直于路径的势能力越小的时候,F(DNEB)也越小,以免它使结构点偏离正确MEP。一些研究表明DNEB和swDNEB相比NEB在收敛性(结构点受力最大值随步数降低速度)方面并没有明显提升,DNEB难以收敛到较高精度以内,容易一直震荡。
6.8 String方法
与NEB对力的投影定义一致,但点之间没有弹簧势连接,保持点的间距的方法是每步优化后使这些点在路径上平均分布。
6.9 Simplified String方法
String中计算每个点的切线并投影掉势能力平行于路径的分量的过程也去掉了,所有点之间用三次样条插值来表述路径,每一个点根据实际势能力运动后,在路径上重新均匀分布。优化方法最好结合RK4方法。NEB在点数较小的情况下比Simplified String方法能在更短时间内收敛到更高精度,但点数较多情况下则Simplified String更占优势。
6.10 寻找过渡态的chain-of-state方法
除非势能面对称且结构点数目为奇数,否则不会有结构点恰好落在过渡态。以能量最高的点作为过渡态只是近似的,为了更好地描述过渡态,可以增加结构点数,或者增加局部弹簧力常数,使过渡态附近点更密。根据已得到的点的能量,通过插值方法估算能量最高点是另一个办法。近似的过渡态也可以作为QN法的初猜寻找准确的过渡态。
6.10.1 CI-NEB方法
NEB与String等方法都可以结合Climbing Image方法,它专门考虑到了定位过渡态问题。CI-NEB与NEB的关键区别是能量最高的点受力的定义,在CI-NEB中这个点不会受到相邻点的弹簧力,避免位置被拉离过渡态,而且将此点平行于路径方向的势能力分量的符号反转,促使此点沿着路径往能量升高的方向上爬到过渡态。这个方法只需要很少的点,比如包含初、末态总共5个甚至3个点就能准确定位过渡态,是最有效率的寻找过渡态的方法之一。如果还需要精确描述MEP,可以在此过渡态上使用Stepwise descent方法、最陡下降法、RK4等方法沿势能面下坡走出MEP,整个过程比直接使用很多点的NEB方法能在更短时间内得到更准确的MEP。
6.10.2 ANEBA方法(adaptive nudged elastic band approach)
这个方法也是基于NEB,专用来快速寻找过渡态。一般想得到高精度的过渡态区域,NEB的链子上必须包含很多点,耗费计算时间。而ANEBA方法中链子两端的位置不是固定的,而是不断地将它们移动到离过渡态更近的位置,仅用很少几个点的链子就可以达到同样的精度。具体来说,设链子两端的点分别叫A点和B点(对于第一步就是反应物和产物位置),先照常做NEB,收敛至一定精度后(不需要精度太高),改变A和B的位置为链子中能量最高点相邻的两个点,然后再优化并收敛至一定精度,再如此改变A和B的位置,反复经历这一步骤,最终链子上能量最高点就是精确的过渡态。ANEBA相当于不断增加原先NEB链子的过渡态附近的点数,但实际上点数没有变。有研究表明ANEBA比CI-NEB效率更高,如果结合ANEBA与CI(称CI-ANEBA),即先用ANEBA方法经上述步骤移动几次A、B点,使之聚焦到过渡态附近,再用CI-NEB方法,效率可以进一步提高。
㈨ 短路电流如何计算
供电网络中发生短路时,很大的短路电流会使电器设备过热或受电动力作用而遭到损坏,同时使网络内的电压大大降低,因而破坏了网络内用电设备的正常工作。为了消除或减轻短路的后果,就需要计算短路电流,以正确地选择电器设备、设计继电保护和选用限制短路电流的元件。
二.计算条件
1.假设系统有无限大的容量.用户处短路后,系统母线电压能维持不变.即计算阻抗比系统阻抗要大得多。
具体规定: 对于3~35KV级电网中短路电流的计算,可以认为110KV及以上的系统的容量为无限。只要计算35KV及以下网络元件的阻抗。
2.在计算高压电器中的短路电流时,只需考虑发电机、变压器、电抗器的电抗,而忽略其电阻;对于架空线和电缆,只有当其电阻大于电抗1/3时才需计入电阻,一般也只计电抗而忽略电阻。
3. 短路电流计算公式或计算图表,都以三相短路为计算条件。因为单相短路或二相短路时的短路电流都小于三相短路电流。能够分断三相短路电流的电器,一定能够分断单相短路电流或二相短路电流。
三.简化计算法
即使设定了一些假设条件,要正确计算短路电流还是十分困难,对于一般用户也没有必要。一些设计手册提供了简化计算的图表.省去了计算的麻烦.用起来比较方便.但要是手边一时没有设计手册怎么办?下面介绍一种“口诀式”的计算方法,只要记牢7句口诀,就可掌握短路电流计算方法。
在介绍简化计算法之前必须先了解一些基本概念。
1.主要参数
Sd三相短路容量 (MVA)简称短路容量校核开关分断容量
Id三相短路电流周期分量有效值(KA)简称短路电流校核开关分断电流和热稳定
IC三相短路第一周期全电流有效值(KA) 简称冲击电流有效值校核动稳定
ic三相短路第一周期全电流峰值(KA) 简称冲击电流峰值校核动稳定
x电抗(W)
其中系统短路容量Sd和计算点电抗x 是关键.
2.标么值
计算时选定一个基准容量(Sjz)和基准电压(Ujz).将短路计算中各个参数都转化为和该参数的基准量的比值(相对于基准量的比值),称为标么值(这是短路电流计算最特别的地方,目的是要简化计算).
(1)基准
基准容量 Sjz=100 MVA
基准电压 UJZ规定为8级. 230, 115, 37, 10.5, 6.3, 3.15 ,0.4, 0.23 KV
有了以上两项,各级电压的基准电流即可计算出,例: UJZ (KV)3710.56.30.4
因为S=1.73*U*I
所以 IJZ
(KA)1.565.59.16144
(2)标么值计算
容量标么值 S*=S/SJZ.例如:当10KV母线上短路容量为200 MVA时,其标么值容量
S* =200/100=2.
电压标么值 U*=
U/UJZ ; 电流标么值 I*
=I/IJZ
3无限大容量系统三相短路电流计算公式
短路电流标么值: I*d= 1/x* (总电抗标么值的倒数).
短路电流有效值: Id=IJZ* I*d=IJZ/ x*(KA)
冲击电流有效值: IC
= Id *√1 2 (KC-1)2
(KA)其中KC冲击系数,取1.8
所以IC =1.52Id
冲击电流峰值: ic=1.41* Id*KC=2.55 Id (KA)
当1000KVA及以下变压器二次侧短路时,冲击系数KC ,取1.3
这时:冲击电流有效值IC =1.09*Id(KA)
冲击电流峰值: ic=1.84 Id(KA)
掌握了以上知识,就能进行短路电流计算了。公式不多,又简单.但问题在于短路点的总电抗如何得到?例如:区域变电所变压器的电抗、输电线路的电抗、企业变电所变压器的电抗,等等。
一种方法是查有关设计手册,从中可以找到常用变压器、输电线路及电抗器的电抗标么值.求得总电抗后,再用公式计算短路电流; 设计手册中还有一些图表,可以直接查出短路电流。
下面介绍一种“口诀式”的计算方法,只要记牢7句口诀,就可掌握短路电流计算方法。
4.简化算法
【1】系统电抗的计算
系统电抗,百兆为一。容量增减,电抗反比。100除系统容量
例:基准容量100MVA。当系统容量为100MVA时,系统的电抗为XS*=100/100=1
当系统容量为200MVA时,系统的电抗为XS*=100/200=0.5
当系统容量为无穷大时,系统的电抗为XS*=100/∞=0
系统容量单位:MVA
系统容量应由当地供电部门提供。当不能得到时,可将供电电源出线开关的开断容量
作为系统容量。如已知供电部门出线开关为W-VAC 12KV 2000A 额定分断电流为40KA。则可认为系统容量S=1.73*40*10000V=692MVA,系统的电抗为XS*=100/692=0.144。
【2】变压器电抗的计算
110KV, 10.5除变压器容量;35KV, 7除变压器容量;10KV{6KV}, 4.5除变压器容量。
例:一台35KV3200KVA变压器的电抗X*=7/3.2=2.1875
一台10KV1600KVA变压器的电抗X*=4.5/1.6=2.813
变压器容量单位:MVA
这里的系数10.5,7,4.5实际上就是变压器短路电抗的%数。不同电压等级有不同的值。
【3】电抗器电抗的计算
电抗器的额定电抗除额定容量再打九折。
例:有一电抗器U=6KV I=0.3KA 额定电抗 X=4% 。
额定容量S=1.73*6*0.3=3.12 MVA. 电抗器电抗X*={4/3.12}*0.9=1.15
电抗器容量单位:MVA
【4】架空线路及电缆电抗的计算
架空线:6KV,等于公里数;10KV,取1/3;35KV,取 3%0
电缆:按架空线再乘0.2。
例:10KV 6KM架空线。架空线路电抗X*=6/3=2
10KV 0.2KM电缆。电缆电抗X*={0.2/3}*0.2=0.013。
这里作了简化,实际上架空线路及电缆的电抗和其截面有关,截面越大电抗越小。
【5】短路容量的计算
电抗加定,去除100。
例:已知短路点前各元件电抗标么值之和为 X*∑=2, 则短路点的短路容量
Sd=100/2=50MVA。
短路容量单位:MVA
【6】短路电流的计算
6KV,9.2除电抗;10KV,5.5除电抗; 35KV,1.6除电抗; 110KV,0.5除电抗。
0.4KV,150除电抗
例:已知一短路点前各元件电抗标么值之和为 X*∑=2, 短路点电压等级为6KV,
则短路点的短路电流Id=9.2/2=4.6KA。
短路电流单位:KA
【7】短路冲击电流的计算
1000KVA及以下变压器二次侧短路时:冲击电流有效值Ic=Id, 冲击电流峰值ic=1.8Id
1000KVA以上变压器二次侧短路时:冲击电流有效值Ic=1.5Id, 冲击电流峰值ic=2.5Id
例:已知短路点{1600KVA变压器二次侧}的短路电流 Id=4.6KA,
则该点冲击电流有效值Ic=1.5Id,=1.5*4.6=7.36KA,冲击电流峰值ic=2.5Id=2.5*406=11.5KA。
可见短路电流计算的关键是算出短路点前的总电抗{标么值}.但一定要包括系统电抗。
本文来自: 河南全新液态起动设备有限公司 www.hnqxyt.com专业软起动软启动水电阻液态软起液态
短路电流的计算是为了正确选择和校验电气设备,使其满足电流的动、热稳定性的要求。对于低压开关设备和熔断器等,还应按短路电流校验其分断能力。
计算短路电流时,首先要选择好短路点,短路点通常选择在被保护线路的始、末端。始端短路点用于计算最大三相短路电流,用于校验设备和电缆的动、热稳定性;末端用于计算最小二相短路电流,用于校验继电保护整定值的可靠性。
短路电流的计算方法有解释法和图表法,主要以解释法为主。
一、短路电流的计算公式
1、三相短路电流计算:
IK(3)=UN2/{√3·[(∑R)2+(∑X)2]1/2}
式中:IK(3) 三相短路电流,安;
UN2 变压器二次侧额定电压,对于127、380、660伏电网,分别取133、400、690伏;
∑R、∑X 短路回路内一相的电阻、电抗的总和,欧。
2、二相短路电流计算:
IK(2)=UN2/{2·[(∑R)2+(∑X)2]1/2}
式中:IK(2) 二相短路电流,安;
3、三相短路电流与二相短路电流值的换算
IK(3)=2 IK(2)/√3=1.15 IK(2)
或 IK(2)=0.866 IK(3)
二、阻抗计算
1、系统电抗
XS=UN22/SK
式中:XS 折合至变压器二次侧的系统电抗,欧/相;
UN2 变压器二次侧的额定电压,KV;
SK 电源一次侧母线上的短路容量,MVA。
XS 、SK 指中央变电所母线前的电源电抗和母线短路容量。如中央变的短路容量数据不详,可用防爆配电箱的额定断流容量代替计算。
额定断流容量与系统电抗值 (欧)
断流容量MVA 额定电压 V 25 30 40 50
400 0.0064 0.0053 0.004 0.0032
690 0.019 0.0159 0.0119 0.0095
2、变压器阻抗(可查参考文献3附录六表19-3)
变压器每相电阻、电抗按下式计算:
RB=ΔP/3IN22=ΔP·UN22/SN2
XB=10UX%·UN22/ SN=10(U K2-UR2)1/2·UN22/
SN
式中:RB、 XB 分别为变压器每相电阻和电抗值,欧;
UX 变压器绕组电抗压降百分值,%;UX =(U K2-UR2)1/2
U K 变压器绕组阻抗压降百分值,%;
UR 变压器绕组电阻压降百分值,%;UR=[△P/(10·SN)]%
ΔP 变压器短路损耗,瓦;
UN2、IN2 变压器二次侧额定电压(KV)和电流(A);
SN 变压器额定容量,KVA。
线路阻抗可以查表。
这是我以前学习短路电流计算从网上找的资料。