最新C语言编写短路电流计算的程序汇总

合集下载

最新低压短路电流计算程序

最新低压短路电流计算程序

最新低压短路电流计算程序简介:低压短路电流计算是电力系统设计和运行中的重要环节之一、准确计算低压短路电流能够帮助工程师评估电力设备的性能,并确保电气系统的安全运行。

本文将编写一款最新低压短路电流计算程序,通过输入电气系统的相关参数,自动计算出低压短路电流的数值,并给出评估和建议。

1.程序框架设计程序采用Python语言进行编写,采用图形用户界面(GUI)进行交互和可视化展示。

程序框架如下:a.用户通过界面输入电气系统的相关参数,包括供电电压、阻抗参数等;b.程序根据用户输入的参数,进行计算并生成结果;c.程序将计算结果可视化展示,并给出评估和建议。

2.程序主要模块设计程序主要包括以下几个模块:a.输入模块:实现用户输入电气系统的参数;b.数据处理模块:根据用户输入的参数,进行低压短路电流的计算;c.结果展示模块:将计算结果可视化展示,并给出评估和建议。

3.输入模块设计输入模块主要用于用户输入电气系统的参数,包括供电电压、电缆参数、变压器参数等。

具体实现如下:a.采用图形用户界面(GUI)设计,提供用户友好的输入界面;b.用户通过界面输入各个参数,并进行验证;c.确认输入的参数无误后,点击“计算”按钮,触发计算模块进行计算。

4.数据处理模块设计数据处理模块主要用于根据用户输入的参数,进行低压短路电流的计算。

具体实现如下:a.根据用户输入的供电电压、电缆参数、变压器参数等,使用电气计算公式进行计算;b.对计算结果进行合理性验证,确保计算结果准确可靠;c.将计算结果传递给结果展示模块,进行可视化展示。

5.结果展示模块设计结果展示模块主要用于将计算结果可视化展示,并给出评估和建议。

具体实现如下:a.将计算结果以图表的形式展示,包括低压短路电流的数值和波形;b.根据计算结果,对电气系统的安全性进行评估,并给出建议。

总结:通过设计以上模块,我们可以编写一款最新低压短路电流计算程序。

该程序能够帮助工程师快速准确地计算出低压短路电流,并给出相应的评估和建议。

电力系统分析课设短路电流计算C语言程序

电力系统分析课设短路电流计算C语言程序

5.C语言实现三相短路电流的计算程序代码使用C++编写的:#include "stdafx.h"#include"stdio.h"#include"math.h"#define Sd 100#define Uav1 37#define Uav2 6.3int main(int argc, char* argv[]){double xg1,S2,l1,l2,xT,Sn,xg2,x1,x2,x3;printf("请输入发电机G1参数:xg1=");scanf("%lf",&xg1);printf("请输入发电机G2提供的短路功率:S2=");scanf("%lf",&S2);xg2=0.1*Sd/S2*10;printf("请输入线路L1参数:l1=");scanf("%lf",&l1);x1=0.4*l1*Sd/Uav1/Uav1;printf("请输入线路L2参数:l2=");scanf("%lf",&l2);x2=0.4*l2*Sd/Uav1/Uav1;printf("请输入变压器参数:Vk%=");scanf("%lf",&xT);printf("请输入变压器参数:Sn=");scanf("%lf",&Sn);x3=0.5*xT/100*Sd/Sn;printf("xg1=%lf,xg2=%lf,x1=%lf,x2=%lf,x3=%lf\n",xg1,xg2,x1,x2,x3);double c,x4,x5,x6,I1k,I1,I2k,I2;c=sqrt(3);x4=xg2+x2;x5=x1*x4/(x1+x4);x6=x5+x3;I1k=1/x5;I1=I1k*Sd/Uav1/c;printf("\n短路点在k1处时,短路电流标幺值I1k=%lf,有名值I1=%lf",I1k,I1);I2k=1/x6;I2=I2k*Sd/Uav2/c;printf("\n短路点在k2处时,短路电流标幺值I2k=%lf,有名值I2=%lf\n",I2k,I2);return 0;}。

短路计算程序

短路计算程序

n=4; %节点数nl=3; %支路数B1=[1 3 0.51i 0 1 0;2 3 0.59i 0 1 0 ;3 4 1.43i 0 1 0 ]; X=[1 0.2i ;2 4i;3 0 ;4 0 ];%线路参数形成的矩阵V0=[1;1;1;1]; %电压矩阵D=[4,0]; %短路号矩阵NF=1;%短路点个数B=[0;0;0;1];%常数项矩阵Y=zeros(n);%初始化节点导纳矩阵for i=1:nif X(i,2)~=0;%判断i节点是否非直接接地,若是算自导中接地阻抗的导纳p=X(i,1);Y(p,p)=1./X(i,2);%算出自导中接地支路导纳endend%形成节点导纳矩阵for i=1:nlif B1(i,6)==0 %判断变压器的变比是否在低压侧 p=B1(i,1);q=B1(i,2);elsep=B1(i,2);q=B1(i,1);%从p→q,变化为1:kendY(p,q)=Y(p,q)-1./B1(i,3)*B1(i,5);Y(q,p)=Y(p,q);Y(p,p)=Y(p,p)+1./B1(i,3)*B1(i,5)^2+B1(i,4)./2;Y(q,q)=Y(q,q)+1./B1(i,3)+B1(i,4)./2;enddisp('导纳矩阵Y');%输出需要的字符串disp(Y);A=Y; %赋值 Y等于A[n,m]=size(A);%用解线性方程组方法,形成矩阵A因子表for i=1:nA(i,i)=1./A(i,i);%第一列元素规格化,即取倒数运算for j=i+1:n %逐列进行消去A(i,j)=A(i,j)*A(i,i);endfor k=i+1:n%形成因子表for j=i+1:nA(k,j)=A(k,j)-A(k,i)*A(i,j);endendenddisp('矩阵A的因子表为');disp(A);% B=input('please input ') ;%利用因子表对常数项进行的前代过程(按列消去)for i=1:nB(i)=B(i)*A(i,i);for j=i+1:nB(j)=B(j)-A(j,i)*B(i);endenddisp('利用因子表对常数项进行回代的结果为:B=');disp(B);%利用因子表的回代过程for i=n-1:-1:1%做n-1次循环,即n-1次消去运算for j=i+1:-1:2B(j-1)=B(j-1)-A(j-1,i+1)*B(i+1);endenddisp('在因子表的基础上求解线性方程组的解为:X='); disp(B);%解出各节点电压即得到Zik,此时B为列向量% V0=input('V0=');% D=input('D=');% NF=input('NF=');Z=zeros(n);V=zeros(n);l=zeros(nl);for k=1:NF %求各短路点的电流标幺值for i=1:nZ(i,D(k,1))=B(i,1); %将求得的Zik赋值到阻抗相应位置disp(Z(i,D(k,1)));endl(D(k,1),D(k,1))=V0(D(k,1),1)./(Z(D(k,1),D(k,1))+D(k,2)); ft=num2str(D(k,1));%数转换成字符串并赋值给ftts1=('点短路时');ts2=('电流的标幺值lf=');dn=(strcat(ft,ts1,ts2));%将两字符串穿起来并赋值给dndisp(dn);disp(l(D(k,1),D(k,1)));for i=1:n %求各节点的电压标幺值V(i,i)=V0(i,1)-l(D(k,1),D(k,1))*Z(i,D(k,1));end%求非接地支路的短路电流标幺值for i=1:nlif B1(i,6)==0 %判断该支路是否为含有变压器支路且变比在低压侧k=B1(i,5);elsek=1./B1(i,5);endp=B1(i,1);q=B1(i,2);l(i,i)=(V(p,p)-V(q,q)./k)./B1(i,3);enddisp('各节点的电压标幺值U为(节点号从小到大)');for i=1:n%i从1到n每次循环for函数disp(V(i,i));enddisp('各非接地支路短路电流的标幺值I为(顺序与输入B一样)');for i=1:nldisp(l(i,i));endend%求接地支路短路电流标幺值disp('各接地支路短路电流的标幺值I为(顺序与输入B一样)'); for i=1:nif X(i,2)~=0; %判断i节点是否为直接接地e=0;b=X(i,2);l0=(e-V(i,i))./b;disp(l0);endend导纳矩阵Y0.0000 - 6.9608i 0.0000 + 0.0000i 0.0000 + 1.9608i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 - 1.9449i 0.0000 + 1.6949i 0.0000 + 0.0000i 0.0000 + 1.9608i 0.0000 + 1.6949i 0.0000 - 4.3550i 0.0000 + 0.6993i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.6993i 0.0000 - 0.6993i 矩阵A的因子表为0.0000 + 0.1437i 0.0000 + 0.0000i -0.2817 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.5142i -0.8715 + 0.0000i 0.0000 + 0.0000i 0.0000 + 1.9608i 0.0000 + 1.6949i 0.0000 + 0.4300i -0.3007 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.6993i 0.0000 + 2.0449i 利用因子表对常数项进行回代的结果为:B=0.0000 + 0.0000i0.0000 + 0.0000i0.0000 + 0.0000i0.0000 + 2.0449i在因子表的基础上求解线性方程组的解为:X=0.0000 + 0.1732i0.0000 + 0.5358i0.0000 + 0.6149i0.0000 + 2.0449i4点短路时电流的标幺值lf=0.0000 - 0.4890i各节点的电压标幺值U为(节点号从小到大)0.91530.73800.6993各非接地支路短路电流的标幺值I为(顺序与输入B一样)0.0000 - 0.4235i0.0000 - 0.0655i0.0000 - 0.4890i各接地支路短路电流的标幺值I为(顺序与输入B一样)0.0000 + 4.5765i0.0000 + 0.1845i【说明】:1:方法是先算出节点导纳矩阵Y,然后将其赋值给A,再对A进行解线性方程组方法,求得节点阻抗矩阵(即A的因子表),然后因子表对常数项进行的前代过程(按列消去),求得B,X。

短路电流计算方法

短路电流计算方法

短路电流计算方法
短路电流的计算方法有多种,以下介绍两种常用的方法:
方法一:基于对称分量法
1.利用对称分量法实现A、B、C三相网络与正、负、零三序网络的
参数转换。

2.列出正、负、零序网络方程,大多采用节点导纳矩阵方程描述序
网络中电压、电流的关系。

3.根据故障形式,推导出故障点的边界条件方程。

4.将网络方程与边界条件方程联立求解,求出短路电流及其他分量。

方法二:基于公式计算
5.三相短路电流计算: IK(3)=UN2/{√3·[(∑R)2+(∑X)2]1/2}。

式中IK(3)——三相短路电流、安。

UN2变压器二次侧额定电压,对于127、380、660伏电网,分别取133、400、690伏。

∑R、∑X 短路回路内一相的电阻、电抗的总和,欧。

6.二相短路电流计算:IK(2)=UN2/{2·[(∑R)2+(∑X)2]1/2}式中。

IK(2) ——二相短路电流、安。

7.三相短路电流与二相短路电流值的换算:IK(3)=2 IK(2)/√
3=1.15 。

IK(2)或IK(2)=0.866 IK(3)。

此外,对于不同电压等级,短路电流的计算也有所不同。

例如,若电压等级为6kV,则短路电流等于9.2除以总电抗X∑;若电压等级为10kV,则等于5.5除以总电抗X∑。

短路电流的计算及步骤

短路电流的计算及步骤

短路电流的计算及步骤一、短路电流的计算步骤:1、首先绘出计算电路图2、接着,按所选择的短路计算点绘出等效电路图二、短路电流的计算方法:1、欧姆法2、标幺制法三、采用欧姆法进行三相短路电流的计算根据设计的供电系统图1-1所示。

电力系统出口断路器为SN10-10Ⅲ型。

可计算本饲料厂变电所高压10KV母线上k-1点短路和低压380V母线上k-2点短路的三相短路电流和短路容量。

图1-11.k-1点的三相短路电流和短路容量(U=10.5KV)(1)计算短路电流中各元件的电抗及总电抗1)电力系统的电抗:由附表8查得SN10-10Ⅲ型短路器的断流容量S=750MV·A,因此X===0.1472)架空线路的电抗:由表3-1得X=0.35/km,因此X=X l=0.35 (/km)5km=1.753)绘k-1点短路的等效电路图,如图1-2(a)所示,图上标出各元件的序号(分子)和电抗值(分母),并计算其总电抗为:X= X+ X=0.147+1.75=1.897图1-2 短路等效电路图(欧姆法)(2)计算三相短路电流和短路容量1)三相短路电流周期分量有效值===3.18 kA2)三相短路次暂态电流和稳态电流= = =3.18kA3)三相短路冲击电流及第一个周期短路全电流有效值=2.55=2.553.18kA=8.11kA=1.51=1.513.18kA=4.8kA4)三相短路容量==10.5KV3.18 kA=58.10MV·A2 K-2点的短路电流和短路容量(U=0.4KV)1)电力系统的电抗===2.132)架空线路的电抗==0.35(/km) 5km=2.543)电力变压器的电抗:由附录表5得%=5,因此X===84) 绘k-2点短路的等效电路图,如图5-2(b)所示,图上标出各元件的序号(分子)和电抗值(分母),并计算其总电抗为:= X+ X+ X//= X+ X+=6.753(2)计算三相短路电流和短路容量1)三相短路电流周期分量有效值===34.04kA2)三相短路次暂态电流和稳态电流= = =34.04kA3)三相短路冲击电流及第一个周期短路全电流有效值=1.84=1.8434.04kA=62.64kA=1.09=1.0934.04 kA=37.11Ka4)三相短路容量==0.4KV34.04 kA=23.69MV·A综上所述可列短路计算表,如下表1-1工厂变配电所的选择第一节工厂变配电所类型、所址的选择一、变配电所的任务便配电所担负着从电力系统受电,经过变压,然后配电的任务。

C语言编写短路电流计算的程序

C语言编写短路电流计算的程序

初始条件:如图所示电力系统,最大运行方式时,两个电源同时送电,变压器并联运行,忽略线路电阻,线路电抗0.4Ω/km。

计算k1和k2点在最大运行方式时的三相短路电流。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.写出三相短路电流的计算方法;2.用C或FORTRAN语言实现三相短路电流的计算程序;3.调试程序并求出计算结果;4.撰写计算方法原理、计算流程文档及设计说明书;5.提供计算程序代码。

代码使用C++编写的,共有三个文件,请建立工程,一起编译。

这是Plural.hpp#ifndef PLURAL_HPP#define PLURAL_HPP//类名称:Plural//方法:GetR,GetI,SetRI,SetR,SetI//数据:m_pluralR,m_pluralIclass Plural{public:Plural();Plural(float pR, float pI);~Plural();float GetR() const;float GetI() const;void SetRI(float pR, float pI);void SetR(float pR);void SetI(float pI);private:float m_pluralR;float m_pluralI;};//名称: 复数乘法,PluralMul(Plural plural1, Plural plural2)//参数:复数plural1 plural2//返回值:复数Plural PluralMul(Plural plural1, Plural plural2);//函数名:复数除法,运算浮点数除以复数//参数:num,分子,是一个浮点数。

den,分母,是一个复数//返回值:结果的复数Plural PluralDiv(float num, Plural den);//函数名:复数求倒数//参数:den,分母,是一个复数//返回值:此复数的倒数Plural PluralDiv(Plural plu);//参数:mat为待变换的复数矩阵的数组名,n为阶数//返回值:无//说明:变换后的结果依旧保存在mat中void MatrixInv(Plural *mat, int n);#endif#include "plural.hpp"#include <stdio.h>#include <stdlib.h>#include <math.h>//类名称:Plural//方法:GetR,GetI,SetRI,SetR,SetI//数据:m_pluralR,m_pluralIPlural::Plural(){m_pluralR = 0;m_pluralI = 0;}Plural::Plural(float pR, float pI){m_pluralR = pR;m_pluralI = pI;}Plural::~Plural(){}float Plural::GetR() const{return m_pluralR;}float Plural::GetI() const{return m_pluralI;}void Plural::SetRI(float pR, float pI){m_pluralR = pR;m_pluralI = pI;}void Plural::SetR(float pR){m_pluralR = pR;}void Plural::SetI(float pI){m_pluralI = pI;}// 名称: 复数乘法,PluralMul(Plural plural1, Plural plural2)// 参数:复数plural1 plural2// 返回值:复数Plural PluralMul(Plural plural1, Plural plural2){Plural result;result.SetRI(plural1.GetR() * plural2.GetR() - plural1.GetI() * plural2.GetI(),plural1.GetR() * plural2.GetI() + plural1.GetI() * plural2.GetR());return result;}//函数名:复数除法,运算浮点数除以复数//参数:num,分子,是一个浮点数。

短路电流计算程序

短路电流计算程序

短路电流计算程序2 OPEN "BH2.txt" FOR OUTPUT AS #13 REM B44 INPUT I96 REM GREETING-1 PROGREM8 READ N, L, B, L1, G10 o = N + 112 DIM W(o), Z(o), a(o), r(B + 1), x(B + 1), i(N), J(N), t(N) 14 DIM L(B + 1), k(B + 1), N(B + 1), M(B + 1), s(B + 1)16 FOR i = 1 TO N18 READ W(i)20 NEXT i22 M = W(N): m9 = M + N + 124 DIM C(m9), D(m9), H(m9), y(m9), E(o), F(o), P(o)26 FOR i = 1 TO m928 H(i) = 030 NEXT i32 FOR i = 1 TO L34 READ J, k, r, x, b136 s = W(J): t = W(k)38 m1 = s - J + k40 IF J > k THEN 4442 m1 = t - k + J44 IF r >= 0 THEN GOSUB 6846 IF r < 0 THEN GOSUB 7848 NEXT i50 IF I9 = 1 THEN 6652 FOR J = 1 TO N54 J0 = W(J) - J: j1 = J - W(J) + 156 IF J <> 1 THEN j1 = j1 + W(J - 1)58 FOR k = j1 TO J60 PRINT "Y"; J; k; "="; H(J0 + k)62 NEXT k64 NEXT J66 GOTO 9068 H(s) = H(s) + b1 - 1 / x70 H(t) = H(t) + b1 - 1 / x72 IF i * k = 0 THEN 7574 H(m1) = H(m1) + 1 / x75 IF J <= (N - G) THEN 7776 t(J) = x77 RETURN78 IF ABS(r) = 2 THEN 8480 H(s) = H(s) - 1 / x: H(t) = H(t) - 1 / (b1 * b1 * x)84 H(s) = H(s) - 1 / (b1 * b1 * x): H(t) = H(t) - 1 / x86 H(m1) = H(m1) + 1 / (b1 * x)88 RETURN90 FOR i = 1 TO m992 C(i) = 0: D(i) = 094 NEXT i96 FOR i = 1 TO N98 READ E1, F1100 E(i) = E1: F(i) = F1102 NEXT i104 FOR o = 1 TO L106 READ J, k, I1, I2107 IF J * k = 0 THEN 113108 IF J < k THEN 112110 J0 = W(J) - J: C(J0 + k) = I1: D(J0 + k) = I2: GOTO 114 112 K0 = W(k) - k: C(K0 + J) = -I1: D(K0 + J) = -I2113 i(J) = I1: J(J) = I2114 NEXT o116 FOR i = 1 TO B118 READ r(i)120 NEXT i122 M0 = r(B): M5 = M0 + B + 1124 DIM U(M5)126 FOR i = 1 TO M5128 U(i) = 0130 NEXT i132 FOR i = 1 TO L1134 READ J, k, r, x, b1136 s = r(J): t = r(k)138 m1 = s - J + k140 IF J > k THEN 144142 m1 = t - k + J144 IF r >= 0 THEN GOSUB 168146 IF r < 0 THEN GOSUB 178148 NEXT i150 IF I9 = 1 THEN 166152 FOR J = 1 TO B154 J0 = r(J) - J: j1 = J - r(J) + 1156 IF J <> 1 THEN j1 = j1 + r(J - 1)158 FOR k = j1 TO J160 PRINT "Y0"; J; k; U(J0 + k)162 NEXT k164 NEXT J166 GOTO 196168 U(s) = U(s) + b1 - 1 / x172 IF J * k = 0 THEN 176174 U(m1) = U(m1) + 1 / x176 RETURN178 IF J * k = 0 THEN 188180 IF ABS(r) = 2 THEN 184182 U(s) = U(s) - 1 / x: U(t) = U(t) - 1 / (b1 * b1 * x): GOTO 185184 U(s) = U(s) - 1 / (b1 * b1 * x): U(t) = U(t) - 1 / x185 U(m1) = U(m1) + 1 / (b1 * x)186 RETURN188 IF k = 0 THEN 192190 U(t) = U(t) - 1 / x: t(k) = x: GOTO 194192 U(s) = U(s) - 1 / x: t(J) = x194 GOTO 186196 PRINT "+---7---+"198 INPUT X2200 IF X2 = 0 THEN 252202 PRINT "J,K,L": INPUT J, k, L204 E1 = (1 - L) * E(J) + L * E(k): F1 = (1 - L) * F(J) + L * F(k)206 E(N + 1) = E1: F(N + 1) = F1208 IF J < k THEN 220210 J0 = W(J) - J: Y0 = H(J0 + k)212 H(J0 + k) = 0: C1 = C(J0 + k): D1 = D(J0 + k)214 C(J0 + k) = 0: D(J0 + k) = 0216 C(W(N) + J) = -C1: C(W(N) + k) = C1: D(W(N) + J) = -D1: D(W(N) + k) = D1 218 GOTO 226220 K0 = W(k) - k: Y0 = H(K0 + J): H(K0 + J) = 0222 C1 = C(K0 + J): D1 = D(K0 + J): C(K0 + J) = 0: D(K0 + J) = 0224 C(W(N) + J) = C1: C(W(N) + k) = -C1: D(W(N) + J) = D1: D(W(N) + k) = -D1 226 FOR i = 1 TO N228 IF i <> J THEN 232230 H(M + i) = Y0 / L: GOTO 238232 IF i <> k THEN 236234 H(M + i) = Y0 / (1 - L): GOTO 238236 H(M + i) = 0238 NEXT i240 H(M + N + 1) = -Y0 * (1 / L + 1 / (1 - L))242 J2 = W(J): K2 = W(k)244 H(J2) = H(J2) + Y0 - Y0 / L246 H(K2) = H(K2) + Y0 - Y0 / (1 - L)248 W(N + 1) = W(N) + N + 1: N = N + 1250 GOTO 256252 PRINT "AT WHICH BUS": INPUT J254 E1 = E(J): F1 = F(J)256 FOR i = 1 TO N258 IF X2 = 0 THEN 262262 s = J264 IF i <> s THEN 268266 Z(i) = -1: GOTO 270268 Z(i) = 0270 NEXT i272 GOSUB 404274 Z0 = Z(s)276 PRINT "+---2---+": INPUT X3278 IF X3 = 0 THEN 332280 IF X2 = 0 THEN 312282 J2 = r(J): K2 = r(k)284 IF J < k THEN 288286 Y2 = U(J2 - J + k): U(J2 - J + k) = 0: GOTO 290288 Y2 = U(K2 - k + J): U(K2 - k + J) = 0290 I2 = r(B)292 FOR i = 1 TO B294 IF i <> J THEN 298296 U(I2 + i) = Y2 / L: GOTO 304298 IF i <> k THEN 302300 U(I2 + i) = Y2 / (1 - L): GOTO 304302 U(I2 + i) = 0304 NEXT i306 U(I2 + B + 1) = -Y2 * (1 / L + 1 / (1 - L))308 U(J2) = U(J2) + Y2 - Y2 / L: U(K2) = U(K2) + Y2 - Y2 / (1 - L) 310 r(B + 1) = r(B) + B + 1: B = B + 1312 FOR i = 1 TO B314 IF X2 = 0 THEN 318316 s = B: GOTO 320318 s = J320 IF i <> s THEN 324322 x(i) = -1: GOTO 326324 x(i) = 0326 NEXT i328 GOSUB 404330 X0 = x(s): GOTO 346332 PRINT "TTT"334 INPUT X4336 IF X4 = 0 THEN 372338 Z4 = 0: m1 = 1340 W1 = 0: W2 = 0342 PRINT "RESULT OF 3 SHORT-CURCUIT"344 GOTO 378346 PRINT "TTI"348 INPUT X5350 IF X5 = 1 THEN 360354 W1 = 1: W2 = 1356 PRINT "RESULT OF SINGLE CONNECTING THE EARTH" 358 GOTO 378360 Z4 = Z0 * X0 / (Z0 + X0)362 m1 = SQR(3 * (1 - Z0 * X0 / ((Z0 + X0) * (Z0 + X0))))364 W1 = -X0 / (Z0 + X0)366 W2 = -Z0 / (Z0 + X0)368 PRINT "RESULT OF DOUBLE CONNECTING THE EARTH" 370 GOTO 378372 Z4 = Z0: m1 = SQR(3)374 W1 = -1: W2 = 0376 PRINT "RESULT OF DOUBLE SHORT-CURCUIT"378 Z5 = Z4 + Z0: I1 = F1 / Z5: I2 = -E1 / Z5380 I3 = W1 * I1: I4 = W1 * I2382 I5 = W2 * I1: I6 = W2 * I2384 I7 = m1 * SQR(I1 * I1 + I2 * I2)386 E1 = E1 + I2 * Z0: F1 = F1 - Z0 * I1388 E2 = Z0 * I4: F2 = -Z0 * I3390 E3 = X0 * I6: F3 = -X0 * I5391 PRINT #1, "IK+="; I1; "+J"; I2392 PRINT #1, "IK-="; I3; "+J"; I4393 PRINT #1, "IK0="; I5; "+J"; I6394 PRINT #1, "IMAX="; I7396 PRINT #1, "UK+="; E1; "+J"; F1398 PRINT #1, "UK-="; E2; "+J"; F2399 PRINT #1, "UK0="; E3; "+J"; F3400 GOTO 516404 N0 = N406 FOR i = 1 TO N408 IF X3 = 1 THEN 412410 a(i) = W(i): P(i) = Z(i): GOTO 416412 IF i > B THEN 416414 a(i) = r(i): P(i) = x(i)416 NEXT i418 IF X3 = 1 THEN 430420 I7 = a(N)422 FOR i = 1 TO I7424 y(i) = H(i)426 NEXT i428 GOTO 440430 I7 = a(B)432 FOR i = 1 TO I7434 y(i) = U(i)436 NEXT i438 IF X3 = 1 THEN N = B444 IF o <> 1 THEN O1 = O1 + a(o - 1)446 FOR q = O1 TO o448 Q0 = a(q) - q: Q1 = q - a(q) + 1450 IF q <> 1 THEN Q1 = Q1 + a(q - 1)452 IF Q1 >= O1 THEN 456454 Q1 = O1456 FOR i = Q1 TO q - 1458 IF i > q - 1 THEN 462460 y(o0 + q) = y(o0 + q) - y(o0 + i) * y(Q0 + i) / y(a(i)) 462 NEXT i464 NEXT q466 NEXT o468 FOR o = 1 TO N470 o0 = a(o) - o: O1 = o - a(o) + 1472 IF o <> 1 THEN O1 = O1 + a(o - 1)474 FOR q = O1 TO o - 1476 IF q > o - 1 THEN 480478 P(o) = P(o) - y(o0 + q) * P(q)480 NEXT q482 P(o) = P(o) / y(a(o))484 NEXT o486 FOR o = N TO 1 STEP -1488 o0 = a(o) - o: O1 = o - a(o) + 1490 IF o <> 1 THEN O1 = O1 + a(o - 1)492 FOR q = O1 TO o - 1494 IF q > o - 1 THEN 498496 P(q) = P(q) - y(o0 + q) * P(o) / y(a(q))498 NEXT q500 NEXT o502 IF X3 = 1 THEN N = B504 FOR i = 1 TO N506 IF X3 = 1 THEN 510508 Z(i) = P(i): GOTO 512510 x(i) = P(i)512 NEXT i514 RETURN516 FOR i = 1 TO N0518 E1 = E(i) + Z(i) * I2: F1 = F(i) - Z(i) * I1520 E2 = Z(i) * I4: F2 = -Z(i) * I3522 IF X2 = 1 THEN 530524 IF i > B THEN 528526 E3 = x(i) * I6: F3 = -x(i) * I5: GOTO 542528 E3 = 0: F3 = 0: GOTO 542530 IF i < B THEN 526536 E3 = 0: F3 = 0538 IF i <> N0 THEN 542540 E3 = E4: F3 = F4542 A1 = E1 + E2 + E3: A2 = F1 + F2 + F3544 A4 = (F1 + F2) * COS(3.14159 * 2 / 3) + (E2 - E1) * SIN(3.14159 * 2 / 3) + F3 546 A3 = (E1 + E2) * COS(3.14159 * 2 / 3) + (F1 - F2) * SIN(3.14159 * 2 / 3) + E3 548 A5 = (E1 + E2) * COS(3.14159 * 2 / 3) + (F2 - F1) * SIN(3.14159 * 2 / 3) + E3 550 A6 = (F1 + F2) * COS(3.14159 * 2 / 3) + (E1 - E2) * SIN(3.14159 * 2 / 3) + F3 551 PRINT #1, "U"; i; "+="; E1; "+J"; F1552 PRINT #1, "U"; i; "-="; E2; "+J"; F2553 PRINT #1, "U"; i; "0="; E3; "+J"; F3554 PRINT #1, "UA="; A1; "+J"; A2555 PRINT #1, "UB="; A3; "+J"; A4556 PRINT #1, "UC="; A5; "+J"; A6557 NEXT i558 FOR J = 2 TO N0560 j1 = W(J) - J562 IF J <= B THEN J2 = r(J) - J564 J3 = J - W(J) + W(J - 1) + 1566 IF J <= B THEN J4 = J - r(J) + r(J - 1) + 1568 FOR k = J3 TO J - 1569 IF H(j1 + k) = 0 THEN 624570 C1 = -I1 * (Z(J) - Z(k)) * H(j1 + k): C2 = -I2 * (Z(J) - Z(k)) * H(j1 + k)572 C3 = -I3 * (Z(J) - Z(k)) * H(j1 + k): C4 = -I4 * (Z(J) - Z(k)) * H(j1 + k)574 IF X3 = 0 THEN 604576 IF X2 = 1 THEN 586578 IF J <= B THEN 582580 C5 = 0: C6 = 0: GOTO 604582 C5 = -I5 * (x(J) - x(k)) * U(J2 + k): C6 = -I6 * (x(J) - x(k)) * U(J2 + k): GOTO 604 583 IF t(k) <> 0 THEN 585584 C5 = L(k): C6 = s(k): GOTO 604585 C5 = I5 * x(k) / t(k): C6 = I6 * x(k) / t(k): GOTO 604586 IF J < B THEN 582588 IF J <> B THEN 596590 FOR q = J4 TO J - 1592 L(q) = -I5 * (x(J) - x(q)) * U(J2 + q): s(q) = -I6 * (x(J) - x(q)) * U(J2 + q)594 NEXT q596 C5 = 0: C6 = 0598 IF J <> N0 THEN 604600 IF k > B - 1 THEN 604602 GOTO 584604 C1 = C1 + C(j1 + k): C2 = C2 + D(j1 + k): GOTO 606606 A1 = C1 + C3 + C5: A2 = C2 + C4 + C6608 b1 = (C1 + C3) * COS(3.14159 * 2 / 3) + (C2 - C4) * SIN(3.14159 * 2 / 3) + C5612 D1 = (C1 + C3) * COS(3.14159 * 2 / 3) + (C4 - C2) * SIN(3.14159 * 2 / 3) + C5 614 D2 = (C2 + C4) * COS(3.14159 * 2 / 3) + (C1 - C3) * SIN(3.14159 * 2 / 3) + C6 616 PRINT #1, "IF+("; J; "-"; k; ")="; C1; "+J"; C2618 PRINT #1, "IF-("; J; "-"; k; ")="; C3; "+J"; C4620 PRINT #1, "IF0("; J; "-"; k; ")="; C5; "+J"; C6621 PRINT #1, "IA("; J; "-"; k; ")="; A1; "+J"; A2622 PRINT #1, "IB("; J; "-"; k; ")="; b1; "+J"; B2623 PRINT #1, "IC("; J; "-"; k; ")="; D1; "+J"; D2624 NEXT k626 IF X3 = 1 THEN 644628 IF X4 = 0 THEN 644630 IF X2 = 0 THEN 634632 IF J > (N0 - G - 1) THEN 640634 IF J <= (N0 - G) THEN 644636 i(J) = i(J) + Z(J) * I1 / t(J): J(J) = J(J) + Z(J) * I2 / t(J)638 PRINT #1, "IG"; J; "="; i(J); "+J"; J(J): GOTO 644640 IF J = N0 THEN 644642 IF J < N0 THEN 636644 NEXT J646 END注:以下为数据输入部分,此为一个电网一种运行方式下的例子。

短路计算步骤

短路计算步骤

短路计算步骤一、短路计算的基本概念短路计算呢,就是要算出电路中短路时的各种电气量啦。

这就像是给电路做一个特殊的体检,看看在短路这种不正常的情况下,电流啊、电压啊这些指标会变成啥样。

这对我们设计电路、保护电气设备可重要啦。

要是不做短路计算,就好比你开车不看仪表盘,那多危险呀。

二、短路计算前的准备1. 收集电路信息我们得知道电路里都有啥元件呀,像电阻、电感、电容这些。

还得清楚电源的情况,是直流电源还是交流电源呢?电源的电压、频率这些参数都得掌握。

这就像你要做一道菜,得先知道食材和调料都有啥吧。

2. 确定电路结构是串联电路、并联电路还是更复杂的混联电路呢?不同的结构计算方法可不一样哦。

这就好比你要走迷宫,得先知道迷宫的布局才能找到出口呀。

三、短路计算的步骤1. 简化电路把那些对短路电流计算影响不大的元件先简化掉。

比如说,在某些情况下,小电阻或者小电感如果相比其他元件的影响很小,就可以暂时忽略。

这就像整理房间,先把那些小杂物先放到一边,这样房间看起来就更清爽,计算起来也更方便啦。

2. 选择合适的计算方法如果是简单的电路,我们可以用欧姆定律之类的基本定律来计算。

要是复杂的电路呢,可能就得用对称分量法之类的高级方法啦。

这就像过河,水浅的地方你可以直接趟过去,水深的地方就得找船或者桥啦。

3. 计算短路电流根据选择的方法,把相关的数据代入公式里计算。

这里一定要小心,数据可不能弄错啦,就像做数学题,一个数字错了,答案可就全错了。

4. 计算短路电压知道了短路电流,再根据电路的其他参数来计算短路电压。

这两个量可是相互关联的呢,就像一对好伙伴,一个变了,另一个也会跟着变。

5. 校验计算结果算完之后,要检查一下结果是否合理。

比如说,短路电流的值是不是在合理的范围内,短路电压是不是符合电路的特性。

这就像做完作业要检查一样,可不能稀里糊涂就交上去啦。

四、短路计算的实际意义短路计算可不光是纸上谈兵哦。

它在实际的电气工程里用处可大了。

电力系统短路电流计算例题与程序

电力系统短路电流计算例题与程序

电力系统短路电流计算例题与程序佘名寰本文用导纳矩阵求逆计算节点阻抗矩阵,运用复合序网络图计算各节点对称故障和不对称故障时短路电流、节点电压和各支路故障电流。

2、1用阻抗矩阵计算短路的基本公式:⑴ 节点三相对称短路,注入节点的短路电流 Id=-Vd(0)/Zdd (2-1)式中Vd(0)故障点在短路发生前的电压,简化计算时Vd(0)=1 Zdd 故障点d的自阻抗负号表示电流从节点流出故障点短路电流在各节点所产生的电压分量 V=ZI (2-2)式中 Z 节点阻抗矩阵 I 节点注入电流的列矩阵当只有一点故障时上述电压分量为Vi(d)=ZdiId (i=1,2,3,………n) (2-3)式中 Zdi 故障点d与节点i的互阻抗短路故障后的节点电压Vi=Vi(0)+Vi(d)(2-4)式中VI(0)节点i 故障发生前的电压短路故障时通过各支路的电流Iij=(Vi-VJ)/zij (2-5)式中zij 联系节点i和节点j的支路阻抗⑵ 单相接地短路故障点的电流和电压:A相单相接地故障Ia0=Ia1=Ia2=6)Zdd0, Zdd1, Zdd2-----零序、正序、负序网络故障节点的自阻抗Va0= Zdd0 Ia0 (2-7)Va1=Va1(0)+Zdd1Ia1 (2-8)Va2= Zdd2 Ia2 (2-9)Ia=3Ia1 (2-10)⑶ 两相接地短路:B.C相短路接地故障增广正序网的综合等值阻抗Z∑Z∑=Zdd0Zdd2/(Zdd0+Zdd2)(2-11)Ia1=12)Ia0=13)Ia2=14)Ib=Ia0+a2Ia1+aIa2 (2-15)a=(-1/2+j√3/2)a2=(-1/2-j√3/2)⑷ 两相短路:B、C两相短路故障 Ia1=Ia2=18)Ib=j√3Ia1 (2-19)⑸ 支路i~j间的某一点d发生故障时,视d点为新的节点d 点与节点k的互阻抗Zdk Zdk=(1-L)ZIK+LZjk (2-20)d 点的自阻抗Zdd Zdd=(1-L)2Zii+L2Zjj+2L(1-L)ZIJ+L(1-L)zij (2-21)式中 L 为端点i到故障点d的距离所占线路全长的百分数ZIK,Zjk 分别为节点i和节点j与节点k的互阻抗 Zii,,Zjj 为节点i和节点j的自阻抗 ZIJ 为节点i与节点j的互阻抗 zij 是节点i和节点j间的线路阻抗2、2 短路电流计算时用导纳矩阵求逆计算节点阻抗矩阵参考文献①介绍了从网络的原始阻抗矩阵求节点导纳矩阵的方法和相关程序。

短路电流计算方法

短路电流计算方法

短路电流计算方法短路电流是指在电力系统中发生故障时,电压降至接近零的情况下,电路中流过的电流。

短路电流的计算对于电力系统的设计和保护具有重要意义,因为短路电流是设计电气设备和保护装置的重要依据。

短路电流的计算需要考虑电力系统的拓扑结构、电源特性、线路参数以及负载特性等因素。

下面将介绍短路电流计算的一般步骤和方法。

1.确定短路类型:短路电流可以分为对称短路和非对称短路两种类型。

对称短路是指电流波形对称,相序相同;非对称短路是指电流波形不对称,相序不同。

根据具体情况确定短路类型。

2.确定短路点:根据电力系统的拓扑结构确定短路点,即电流的注入点和评估点。

注入点是指故障电流由电源注入的点,评估点是指评估短路电流的点。

3.收集系统参数:收集电力系统的参数,包括电缆、变压器、断路器和负载等参数。

这些参数可以从设备的技术规格书、标准和现场实测获得。

4.确定故障前电压:故障前电压是指故障发生前电力系统的额定电压,通常取作系统的名义电压。

5.确定故障后电压:故障后电压是指故障发生后电力系统的电压,可以通过电气设备的技术参数以及系统运行情况来确定。

6.计算故障电流:根据所选用的短路电流计算方法计算故障电流。

常用的短路电流计算方法包括K方法、感性电流计算法、阻抗法等。

7.进行结果验证和分析:验证计算结果的合理性,并分析导致短路电流偏大或偏小的原因。

如果计算结果存在偏差,则需要进一步检查参数和输入数据是否正确。

除了上述一般步骤和方法外,根据不同的电力系统和计算目的,还可以采用其他的短路电流计算方法,例如潮流法、追溯法、蒙特卡罗法等。

总结起来,短路电流的计算是复杂而繁琐的工作,需要全面了解电力系统的拓扑结构、参数和运行情况,并运用合理的计算方法进行准确的计算。

短路电流计算的结果对于电力系统的设计和保护具有重要意义,能够确保设备的安全运行和系统的稳定性。

因此,在进行短路电流计算时,需要仔细选择计算方法、准确收集参数,并进行合理的计算和分析。

电力系统的短路电流计算

电力系统的短路电流计算

电力系统的短路电流计算电力系统的短路电流计算是电力工程中一个非常重要的环节,它可以帮助工程师确保电力系统的运行安全和稳定。

短路电流计算通常涉及到电力系统的拓扑结构、电气设备的参数以及电源的特性等多个方面,本文将详细介绍短路电流计算的方法和步骤。

一、短路电流计算的目的短路电流计算的主要目的是确定电力系统中的各个节点、支路以及设备上出现短路时所产生的电流大小,从而判断设备和电气系统是否能够承受这些电流并确保系统的正常运行。

通过短路电流计算,我们可以评估电力系统的稳定性、选择合适的保护设备以及确定设备参数和系统结构等重要工作。

二、短路电流计算的方法1. 传统短路电流计算法传统的短路电流计算法主要通过手工计算实现,通常包括以下几个步骤:首先,需要确定电力系统的拓扑结构,包括各个节点的连线关系和支路连接情况;其次,需要收集系统中各个设备的参数,如电流互感器、变压器、发电机等的额定值以及阻抗等参数;然后,根据短路电流计算公式,对各个节点进行计算,并确定电流的大小和方向;最后,通过对计算结果的分析,判断系统的稳定性和是否需要采取相应的措施进行改进。

2. 计算软件辅助短路电流计算法随着计算机技术的不断发展,短路电流计算方法也得到了很大的改进。

现在,我们可以利用专业的电力系统计算软件来辅助进行短路电流的计算。

这些软件可以根据用户输入的电力系统拓扑结构和设备参数,自动进行计算并输出结果。

相比传统的手工计算方法,计算软件的优势在于可以大大提高计算效率和准确性,并且可以处理更加复杂的电力系统结构和参数。

三、短路电流计算的步骤无论是传统的手工计算方法还是计算软件辅助计算方法,短路电流计算的步骤大体上是相似的,下面是一个典型的短路电流计算的步骤:1. 收集系统参数:包括电力系统的拓扑结构、设备参数以及电源特性等信息。

2. 建立短路电流模型:根据系统参数,建立电力系统的等值电路模型,主要包括发电机、线路、变压器、负荷等元件。

短路电流计算归纳汇总-系统

短路电流计算归纳汇总-系统

I
(n) d1
=
I (n) *d1

I
j
B、有限电源系统,按
X
(n) js
直接查发动机运算曲线得到不对称短
路的正序电流标幺值
I (n) *d 1( t
)
正序短路有名值
I I I = ⋅ (n) d1(t )
(n) *d1(t ) N
4)合成短路电流
I (n) d
=
m

I
(n) d1
短路形式
合成短路电流有名值
断时间。主保护有死区时,可采用能对该死区起作用的后备保护
动作时间.并采用相应处的短路电流值。 b 对电器,宜采用后备保护动作时间加相应断路器的开断时间。 c 对电缆,应取保护动作时间与断路器开断时间之和。对电动机
等直馈线,保护动作时间应取主保护时间;其他情况.宜取后备保 护时间。(标 P198 3.7.8) 4) 导体与电器的热效应与截面积计算
短路电流计算
一、计算步骤 1、画出系统电抗图 2、计算出各元件的电抗标幺值 3、化简电路图并求出 X* 4、I*”=1 / X* I”= Ij *I”* 二、计算假设条件 1、DL/T5222-2005 P113 短路电流计算条件
短路电流实用计算中,,采用以下假设条件和原则: 1)正常工作时三相系统对称运行。 2)所有电源的电动势相位角相同。 3)系统中的同步和异步电动机均为理想电动机,不考虑电机磁饱 和、磁滞、祸流及导体集肤效应等影响;转子结构完全对称;定子三 相绕组结构完全相同,空间位置相差 120 度电气角度。 4)电气系统中各元件的磁路不饱和,即带铁心的电气设备电抗值 不随电流大小发生变化。 5)电力系统中所有电源都在额定负荷下运行,其中 50%负荷接在 高压母线上。 6)同步电机都具有自动调整励磁装置(包括强行励磁)。 7)短路发生在短路电流最大值的瞬间。 8)不考虑短路点的电弧阻抗和变压器的励磁电流。 9)除计算短路电流的衰减时间常数和低压网络的短路电流外,元 件的电阻都略去不计。 10)元件的计算参数均取其额定值,不考虑参数的误差和调整范 围。 11)输电线路的电容略去不计。 12)用概率统计法制定短路电流运算曲线。 2、DL/T5222-2005 5.0.4 校验导体和电器动稳定、热稳定以及电器 开断电流所用的短路电流,应按系统最大运行方式下可能流经被 校验导体和电器的最大短路电流。系统容量应按具体工程的设计 规划容量计算,并考虑电力系统的远景发展规划(宜按该工程投产 后 5-10 年规划)。

短路电抗初始值计算程序和化简程序

短路电抗初始值计算程序和化简程序

附录一短路电抗初始值计算程序void CDLJSDlg::js_csdk() //计算初始电抗{int jd1,jd2,jd3,sd=100;float se,bs1,jd,in,x,l;float a1,a2,a3,z;float a,uk1,uk2,uk3;CString lx1;for (int i=1;i<=pjl1;i++){lx1=bdljs1[i].mlx1;jd1=bdljs1[i].mjd1;jd2=bdljs1[i].mjd2;jd3=bdljs1[i].mjd3;se=bdljs1[i].mse;bs1=bdljs1[i].mbs1;jd=bdljs1[i].mjd;in=bdljs1[i].min;x=bdljs1[i].mx;l=bdljs1[i].ml;if(bdljs1[i].flag=="有效") //元件的标志有效才计算电抗{if(lx1=="水轮机"){dlx[jd1][jd1]=1; //1=水轮机,标注元件的属性dlx[jd2][jd2]=7; //电源的第2端,标注元件的属性 //判断结点1和节点2之间有无并联元件//if(dlx[jd1][jd2]==0) //没有并联元件dlx[jd1][jd2]=bs1/100*sd/se;else //有并联元件{a=dlx[jd1][jd2];dlx[jd1][jd2]=bs1/100*sd/se;dlx[jd1][jd2]=1/(1/dlx[jd1][jd2]+1/a);}}if(lx1=="汽轮机"){dlx[jd1][jd1]=2; //2=汽轮机,标注元件的属性dlx[jd2][jd2]=7; //电源的第2端,标注元件的属性 if(dlx[jd1][jd2]==0) //没有并联元件dlx[jd1][jd2]=bs1/100*sd/se;else //有并联元件{a=dlx[jd1][jd2];dlx[jd1][jd2]=bs1/100*sd/se;dlx[jd1][jd2]=1/(1/dlx[jd1][jd2]+1/a);}}if(lx1=="双卷变"){dlx[jd2][jd2]=8; //8=变压器,标注元件的属性if(dlx[jd1][jd2]==0) //没有并联元件dlx[jd1][jd2]=bs1/100*sd/se;else //有并联元件{a=dlx[jd1][jd2];dlx[jd1][jd2]=bs1/100*sd/se;dlx[jd1][jd2]=1/(1/dlx[jd1][jd2]+1/a);}}if(lx1=="三卷变"){dlx[jd1][jd1]=8; //8=变压器,标注元件的属性 dlx[jd2][jd2]=8; //8=变压器,标注元件的属性 uk1=0.5*(bs1+in-jd);uk2=0.5*(bs1+jd-in);uk3=0.5*(jd+in-bs1);a1=uk1/100*sd/se;a2=uk2/100*sd/se;a3=uk3/100*sd/se;z=1/a1+1/a2+1/a3;if(dlx[jd1][jd2]==0) //没有并联元件dlx[jd1][jd2]=a1*a2*z;else //有并联元件{a=dlx[jd1][jd2];dlx[jd1][jd2]=a1*a2*z;dlx[jd1][jd2]=1/(1/dlx[jd1][jd2]+1/a);}if(dlx[jd2][jd3]==0) //没有并联元件dlx[jd2][jd3]=a2*a3*z;else //有并联元件{a=dlx[jd2][jd3];dlx[jd2][jd3]=a2*a3*z;dlx[jd2][jd3]=1/(1/dlx[jd2][jd3]+1/a);}if(dlx[jd1][jd3]==0) //没有并联元件dlx[jd1][jd3]=a1*a3*z;else //有并联元件{a=dlx[jd1][jd3];dlx[jd1][jd3]=a1*a3*z;dlx[jd1][jd3]=1/(1/dlx[jd1][jd3]+1/a);}}if(lx1=="无限大系统"){dlx[jd1][jd1]=3; //3=无限大系统,标注元件的属性se=100; //无限大电源的id是以S=100MVA为基准的}if(lx1=="输电线"){dlx[jd1][jd1]=9; //9=其它(输电线属于其它)if(dlx[jd1][jd2]==0) //没有并联元件dlx[jd1][jd2]=x*l*sd/(jd*jd);else //有并联元件{ a=dlx[jd1][jd2];dlx[jd1][jd2]=x*l*sd/(jd*jd);dlx[jd1][jd2]=1/(1/dlx[jd1][jd2]+1/a);}}if(lx1=="电抗器"){dlx[jd1][jd1]=9; //9=其他(电抗器属于其它)if(dlx[jd1][jd2]==0) //没有并联元件dlx[jd1][jd2]=bs1/100*jd3/(sqrt(3)*in)*sd/(jd*jd);else //有并联元件{a=dlx[jd1][jd2];dlx[jd1][jd2]=bs1/100*jd3/(sqrt(3)*in)*sd/(jd*jd);dlx[jd1][jd2]=1/(1/dlx[jd1][jd2]+1/a);}}} //if标志"有效"dlx[jd2][jd1]=dlx[jd1][jd2]; //结点1、2和结点2、1的电抗相等} //for iint temp=0; //开始取出最大结点号maxpoint maxpoint=0;for(int m=1;m<=pjl1;m++){int a4,b;a4=bdljs1[m].mjd1;b=bdljs1[m].mjd2;if(a4<b)temp=b;elsetemp=a4;if(maxpoint<temp)maxpoint=temp;}for(int i0=0;i0<dxmax/2;i0++) //开始电源合并// dyrecord[i0]=0; //数组初始值为0for(int j=1;j<=maxpoint;j++){if(dlx[j][j]<5) //判断结点是否属于电源for(int k=1;k<=pjl1;k++)if(bdljs1[k].mjd1==j){dyrecord[j]+=bdljs1[k].mse; //如结点号相同,则容量相加dyflagno=j;}} //电源合并结束//}附录二电抗网络化简程序void CDLJSDlg::js_dkhj() //短路电抗化简{float dlxx[dxmax][dxmax]; //备份数组for(int n=0;n<dxmax;n++)for(int p=0;p<dxmax;p++)dlx1[n][p]=0; //转移电抗初始化for(int i1=1;i1<=sjsd;i1++) //短路点个数{dljd=sjsd1[i1]; //第i1个短路点的结点号for(int i0=0;i0<dxmax;i0++)for(int j0=0;j0<dxmax;j0++)dlxx[i0][j0]=dlx[i0][j0];dlxx[dljd][dljd]=5; //"5"表示短路结点的属性for(int i=1;i<=maxpoint;i++) //要消去的结点i,i循环 {float z=0.0; //定义电抗倒数和zif(dlxx[i][i]>5) //判断i点是不是要消去的结点{for(int j=1;j<=maxpoint;j++)if((j!=i)&&(dlxx[j][i]!=0)) //j不等于i,且i、j间的电抗不为0 {z+=1/dlxx[j][i]; //求出总的倒数和z}int k;for(j=1;j<=maxpoint;j++) //结点j,j循环if((j!=i)&&(dlxx[j][i]!=0))for(k=1;k<=maxpoint;k++) //结点k,k循环{float a=0;if((k!=j)&&(k!=i)&&(k>j)&&(dlxx[k][i]!=0)&&(dlxx[k][k]>=5)) //k不等于j,且不等于j,且不等于i {if(dlxx[j][k]==0) //没有并联电抗时dlxx[j][k]=dlxx[j][i]*dlxx[k][i]*z;else //有并联电抗时{a=dlxx[j][k];dlxx[j][k]=dlxx[j][i]*dlxx[k][i]*z;dlxx[j][k]=1/(1/dlxx[j][k]+1/a);}dlxx[k][j]=dlxx[j][k];dlxx[j][i]=0; //j、i结点间电抗消0dlxx[i][j]=0; //i、j结点间电抗消0//但k、i及i、k结点间的电抗暂时不能消0,//要等j循环完再消0}}for(k=1;k<=maxpoint;k++)if((k!=i)&&(dlxx[k][i]!=0)){ dlxx[k][i]=0;dlxx[i][k]=0;}}}for(int j1=1;j1<=dyflagno;j1++) //电源结点{int dyjd;dyjd=j1+(i1-1)*dyflagno;for(int k1=1;k1<=maxpoint;k1++)if(dlxx[k1][k1]==5){dlx1[dyjd][k1]=dlxx[j1][k1];//第i1个短路点第j1个电源时的转移电抗jsdk[dyjd][k1]=dlx1[dyjd][k1]*dyrecord[j1]/100;}//第i1个短路点第j1个电源时的计算电抗Xca }} //网络化简结束//}。

供配电系统中的短路电流计算流程

供配电系统中的短路电流计算流程

供配电系统中的短路电流计算流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!详解供配电系统中的短路电流计算流程在电力系统设计和运行中,短路电流的计算是一项至关重要的工作。

电力系统潮流及短路电流计算程序

电力系统潮流及短路电流计算程序

电力系统潮流及短路电流计算程序以下是一个简单的电力系统潮流计算程序的框架:1.输入数据准备阶段:-输入潮流计算的电力系统拓扑结构,包括各节点之间的连接关系、导线电阻、电抗等信息。

-输入电力系统的负荷信息,包括负荷节点、负荷大小、负荷类型等。

-输入电力系统的发电机信息,包括发电机节点、发电机类型、发电机容量等。

2.潮流计算阶段:-初始条件设置:给定电力系统中各节点的初始电压、相角等信息。

-节点功率方程求解:根据电力系统的拓扑结构和发电机、负荷信息,建立节点功率方程。

-潮流计算迭代:使用牛顿-拉夫逊法等迭代算法求解节点功率方程,得到各节点的电压、相角等参数。

3.潮流计算结果输出阶段:-输出各节点的电压、相角、有功功率、无功功率等参数。

-输出各支路的电流、功率损耗等参数。

-输出系统的功率平衡情况。

4.短路电流计算阶段:-输入短路电流计算的电力系统拓扑结构。

-输入短路电流计算的负荷信息。

-输入短路电流计算的电源信息。

-使用KVL(电压法)或KCL(电流法)等方法计算各节点短路电流。

5.短路电流计算结果输出阶段:-输出各节点的短路电流大小。

-输出各支路的短路电流大小。

以上只是一个电力系统潮流及短路电流计算程序的大致流程框架,具体实现细节和算法选择还需要根据具体情况进行进一步的设计和开发。

在实际应用中,还需要考虑各种特殊情况和计算优化方法,以提高计算速度和准确性。

总之,电力系统潮流及短路电流计算程序是电力工程师在设计和运行电力系统中不可或缺的工具,它能够帮助工程师快速了解系统的运行状态和电流分布情况,以便进行系统优化和安全评估。

短路电流计算方法

短路电流计算方法

短路电流计算方法1.短路电流概述短路电流是指在电力系统发生故障时,电流在故障点形成回路从正常电路中流过的电流。

短路电流大小直接影响到故障点所涉及的电力设备的安全运行,因此短路电流的准确计算很重要。

2.短路电流计算的基本原理3.短路电流计算的步骤步骤1:确定故障电流流向以及故障类型(单相、两相或三相)。

步骤2:建立电力系统单相等效电路,将三相系统转化为单相计算。

对于三相短路,通常采用基准法或复数法进行计算。

步骤3:确定电源电压和发电机的等值电动势,通过该电动势计算电流的大小和相位差。

步骤4:根据电路结构和元件参数计算短路电流的大小。

常见的计算方法有正序分析法、零序分析法和对称分析法等。

步骤5:根据电压降和电流大小,判断电力设备是否能够承受短路电流,并选择合适的保护措施和设备。

4.短路电流计算的常用方法根据实际情况和计算要求,短路电流计算可以采用不同的方法。

以下是几种常见的方法:正序分析法将三相不对称的电路转化为对称分量电路进行计算。

通过正序分析法,可以方便地得到短路电流的大小和相位差,适用于计算对称短路和非对称短路。

零序分析法用于计算三相对地短路时的短路电流。

该方法将三相电路转化为单相等效电路,利用零序分量电路进行计算,适用于计算接地故障。

4.3 对称分析法(Symmetrical Analysis Method)对称分析法是一种简化的计算方法,在短路计算中广泛使用。

该方法基于对称分析,将三相电路简化为单相等效电路,并根据对称等效电路进行计算,适用于计算对称短路。

4.4软件辅助计算方法随着计算机技术的发展,短路电流计算也可以通过专业软件进行。

软件根据电网模型和参数进行短路计算,可以自动分析短路电流的大小和故障点位置,大大提高了计算效率。

总结:短路电流计算是电力系统设计中的重要工作,准确计算短路电流对于保护设备和确保电力系统的稳定运行至关重要。

短路电流计算的基本原理是基于欧姆定律和基尔霍夫电流定律,利用复数法或相量法进行计算。

短路电流计算程序设计

短路电流计算程序设计

短路电流计算程序设计
张玉坤
【期刊名称】《小水电》
【年(卷),期】2003(000)004
【摘要】短路电流计算是电气设计中最基本的计算之一,是电气设备选择、电气保护整定计算的基础.介绍了实用的数学模型、计算原理和方法.用VB6.0语言编写了计算程序,应用起来方便、快捷、准确,提高了效率和准确度.表3个,图2幅.
【总页数】3页(P11-13)
【作者】张玉坤
【作者单位】辽宁省水利水电勘测设计研究院,辽宁沈阳,110006
【正文语种】中文
【中图分类】TM7
【相关文献】
1.计算机结构程序设计原理与应用系列讲座:第1讲计算机程序设计=算法+数据结 [J], 周高海
2.基于并行计算的煤矿高压电网短路电流计算方法 [J], 王新良;付萌萌
3.大兴安岭电业局电网短路电流计算程序设计 [J], 邹文学; 王锡铁
4.基于并行计算的煤矿高压电网短路电流计算方法 [J], 王新良[1];付萌萌[2]
5.PSS/E BKDY的短路电流衰减计算与传统计算曲线法比较分析 [J], 戈晴天;黄云轩;杨宇尘
因版权原因,仅展示原文概要,查看原文内容请购买。

电力系统潮流及短路电流计算程序汇总

电力系统潮流及短路电流计算程序汇总

班级:姓名:学号:一、作业要求编写程序计算图1所示算例系统的潮流及三相短路电流。

潮流计算:方法不限,计算系统的节点电压和相角。

短路电流:4号母线发生金属性三相短路时(zf=0),分别按照精确算法和近似算法计算短路电流、系统中各节点电压以及网络中各支路的电流分布,并对两种情况下的计算结果进行比较。

二、电路图及参数图1 3机9节点系统表1 9节点系统支路参数表2 9节点系统发电机参数表3 9节点系统负荷参数三、计算步骤(1) 进行系统正常运行状态的潮流计算,求得Ui (2) 形成不含发电机和负荷的节点导纳矩阵YN;(0)的并联组合;和导纳将发电机表示为电流源节点负荷用恒阻抗的接地支路表示;形成包括所有发电机支路和负荷支路的节点导纳矩阵Y,即在YN中的发电机节点和负荷节点的自导纳上分别增加发电机导纳yi和负荷导纳yLD,i(); Vi2Vi2*(4) 利用,计算节点阻抗矩阵,从而得到阻抗矩阵中的第f列;(5) 利用公式(6-7)或(6-10)计算短路电流;(6) 利用公式(6-8)或(6-11)计算系统中各节点电压;(7) 利用公式(6-9)计算变压器支路的电流;对输电线路利用П型等值电路计算支路电流。

四、计算结果节点导纳矩阵Yn:Columns 1 through 50 -17.3611i 0 0 0 +17.3611i 0 0 0 -16.0000i 0 0 0 0 0 0 -17.0648i 0 0 0 +17.3611i 0 0 3.3074 -39.3089i -1.3652 +11.6041i 0 0 0 -1.3652 +11.6041i 2.5528 -17.3382i 0 0 0 -1.9422 +10.5107i 0 0 0 +16.0000i 0 0 -1.1876 + 5.9751i0 0 0 0 0 0 0 0 +17.0648i 0 0Columns 6 through 90 0 0 00 0 +16.0000i 0 00 0 0 0 +17.0648i-1.9422 +10.5107i 0 0 00 -1.1876 + 5.9751i 0 03.2242 -15.8409i 0 0 -1.2820 + 5.5882i0 2.8047 -35.4456i -1.6171 +13.6980i 00 -1.6171 +13.6980i 2.7722 -23.3032i -1.1551 + 9.7843i-1.2820 + 5.5882i 0 -1.1551 + 9.7843i 2.4371 -32.1539i电压幅值:1.0400 1.0250 1.0250 1.0258 0.9956 1.0127 1.0258 1.0159 1.0324电压相角:0 0.1620 0.0814 -0.0387 -0.0696 -0.0644 0.0649 0.0127 0.0343节点有功:0.7164 1.6300 0.8500 0.0000 -1.2500 -0.9000 -0.0000 -1.0000 -0.0000节点无功:0.2705 0.0665 -0.1086 0.0000 -0.5000 -0.3000 -0.0000 -0.3500 -0.0000修正后的节点导纳矩阵Y:Columns 1 through 50 -20.6944i 0 0 0 +17.3611i 0 0 0 -19.3333i 0 0 0 0 0 0 -20.3982i 0 0 0 +17.3611i 0 0 3.3074 -39.3089i -1.3652 +11.6041i 0 0 0 -1.3652 +11.6041i 3.8716 -17.6627i 0 0 0 -1.9422 +10.5107i 0 0 0 +16.0000i 0 0 -1.1876 + 5.9751i0 0 0 0 0 0 0 0 +17.0648i 0Columns 6 through 90 0 0 00 0 +16.0000i 0 00 0 0 0 +17.0648i-1.9422 +10.5107i 0 0 00 -1.1876 + 5.9751i 0 04.1321 -16.0184i 0 0 -1.2820 +5.5882i0 2.8047 -35.4456i -1.6171 +13.6980i 00 -1.6171 +13.6980i 3.7323 -23.6669i -1.1551 + 9.7843i-1.2820 + 5.5882i 0 -1.1551 + 9.7843i 2.4371 -32.1539i节点阻抗矩阵Z的第4列:0.0463 + 0.1252i0.0329 + 0.0693i0.0316 + 0.0707i0.0552 + 0.1493i0.0589 + 0.1204i0.0562 + 0.1226i0.0397 + 0.0838i0.0416 + 0.0814i0.0378 + 0.0845i精确计算结果:短路电流:模值:6.4459相角:-71.9365节点电压模值:0.1831 0.5687 0.5427 0.0000 0.1466 0.1506 0.4537 0.44634 0 0.4495支路电流:i j Iij1 4 0.5779-3.1264i2 7 1.3702-1.4433i3 9 0.64294-1.4808i45 -0.77968+1.5248i 46 -0.6411+1.477i 57 -0.89528+1.6436i 6 9 -0.73353+1.5487i 78 0.50734+0.10234i 89 0.062766+0.056451i 近似计算结果:短路电流:模值:6.2838相角:-69.7198节点电压模值:0.1611 0.5214 0.51570.0000 0.1827 5 0.1675 0.4227 0.4348 0.4217五、程序流程图六、程序及输入文件 input_data.xls 文件:powerflow_cal.m 文件: l=9;%支路数 n=9;%节点数 m=6;%PQ节点数Yn=zeros(n);%初始化节点导纳矩阵YDATA1=xlsread('input_data.xls',1); %计算节点导纳矩阵Y for k=1:li=DATA1(k,1); j=DATA1(k,2); R=DATA1(k,3); X=DATA1(k,4); B2=DATA1(k,5); Yn(i,i)=Yn(i,i)+1i*B2+1/(R+1i*X); Yn(j,j)=Yn(j,j)+1i*B2+1/(R+1i*X);Yn(i,j)=Yn(i,j)-1/(R+1i*X); Yn(j,i)=Yn(j,i)-1/(R+1i*X);enddisp('节点导纳矩阵Yn:');disp(Yn);G=real(Yn);B=imag(Yn);DATA2=xlsread('input_data.xls',2);P=zeros(1,n);Q=zeros(1,n);U=ones(1,n);P(2:n)=DATA2(2:n,3);Q(4:n)=DATA2(4:n,4);U(1:3)=DATA2(1:3,5);%设置节点电压初值e(1)=DATA2(1,5);e(2:n)=1.0;f(1:n)=0.0;%设置迭代次数t=0;tmax=10;while t<=tmax%计算f(x)a(1:n)=0.0;c(1:n)=0.0;for i=2:nfor j=1:na(i)=a(i)+G(i,j)*e(j)-B(i,j)*f(j); c(i)=c(i)+G(i,j)*f(j)+B(i,j)*e(j); end endfor i=2:ndeltaP(i)=P(i)-e(i)*a(i)-f(i)*c(i); endfor j=4:ndeltaQ(j)=Q(j)-f(j)*a(j)+e(j)*c(j); endfor k=2:3deltaU2(k)=U(k)*U(k)-e(k)*e(k)-f(k)*f(k); endfx=[deltaP(2:n) deltaQ(4:n) deltaU2(2:3)]'; %计算雅克比矩阵J for i=2:nfor j=2:nif i~=jH(i,j)=-(G(i,j)*e(i)+B(i,j)*f(i)); 8N(i,j)=B(i,j)*e(i)-G(i,j)*f(i);elseH(i,j)=-a(i)-(G(i,i)*e(i)+B(i,i)*f(i));N(i,j)=-c(i)+(B(i,i)*e(i)-G(i,i)*f(i));endendendfor i=4:nfor j=2:nif i~=jM(i,j)=B(i,j)*e(i)-G(i,j)*f(i);L(i,j)=G(i,j)*e(i)+B(i,j)*f(i);elseM(i,j)=c(i)+(B(i,i)*e(i)-G(i,i)*f(i));L(i,j)=-a(i)+(G(i,i)*e(i)+B(i,i)*f(i));endendendfor i=2:3for j=2:nif i~=jR(i,j)=0;S(i,j)=0;elseR(i,j)=-2*e(i);S(i,j)=-2*f(i);endendendJ=[H(2:n,2:n) N(2:n,2:n);M(4:n,2:n) L(4:n,2:n);R(2:3,2:n) S(2:3,2:n)]; if max(abs(fx))<0.0001%输出结果break;else%求解修正方程获得dxdx=-J^(-1)*fx;dx=dx';e(2:n)=e(2:n)+dx(1:n-1);f(2:n)=f(2:n)+dx(n:2*(n-1));t=t+1;endendif t>tmaxstr='潮流计算不收敛';disp(str);elsea(1:n)=0.0;c(1:n)=0.0;for i=1:nfor j=1:na(i)=a(i)+G(i,j)*e(j)-B(i,j)*f(j); c(i)=c(i)+G(i,j)*f(j)+B(i,j)*e(j); end endfor i=1:nU(i)=e(i)+1i*f(i);amp(i)=abs(U(i));arg(i)=angle(U(i));P(i)=e(i)*a(i)+f(i)*c(i);Q(i)=f(i)*a(i)-e(i)*c(i);enddisp('电压幅值:');disp(amp);disp('电压相角:');disp(arg);disp('节点有功:');disp(P);disp('节点无功:');disp(Q);end%计算短路电流f=4;zf=0.0;%修正节点导纳矩阵Xd=DATA2(1:3,6);E=DATA2(1:3,7);for i=1:3Ii(i)=E(i)/(1i*Xd(i));endY=Yn;for i=1:3Y(i,i)=Y(i,i)+1/(1i*Xd(i));endfor j=4:nY(j,j)=Y(j,j)+(-P(j)+1i*Q(j))/(U(j)*U(j)); end disp('修正后的节点导纳矩阵Y:');disp(Y);Z=Y^(-1);disp('节点阻抗矩阵Z的第4列:');disp(Z(:,4));%精确计算disp('精确计算结果:');U0=U;If=U0(f)/(Z(f,f)+zf);amp=abs(If);arg=atand(imag(If)/real(If));disp('短路电流:');disp('模值:');disp(amp);disp('相角:');disp(arg);for i=1:nU(i)=U0(i)-Z(i,f)*If;amp=abs(U);enddisp('节点电压模值:');disp(amp);disp('支路电流: ');str=['i ' 'j ' ' Iij']; disp(str);for k=1:li=DATA1(k,1);j=DATA1(k,2);r=DATA1(k,3);x=DATA1(k,4);z=r+1i*x;I=(U(i)-U(j))/z;str=[num2str(i) ' ' num2str(j) disp(str); end%近似计算disp('近似计算结果:');U0(1:n)=1.0;If=U0(f)/(Z(f,f)+zf);amp=abs(If);arg=atand(imag(If)/real(If));disp('短路电流:');disp('模值:');disp(amp);11 num2str(I)];' 'disp('相角:');disp(arg);for i=1:nU(i)=U0(i)-Z(i,f)*If; amp=abs(U); enddisp('节点电压模值:'); disp(amp);。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言编写短路电流计算的程序初始条件:如图所示电力系统,最大运行方式时,两个电源同时送电,变压器并联运行,忽略线路电阻,线路电抗0.4Ω/km。

计算k1和k2点在最大运行方式时的三相短路电流。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.写出三相短路电流的计算方法;2.用C或FORTRAN语言实现三相短路电流的计算程序;3.调试程序并求出计算结果;4.撰写计算方法原理、计算流程文档及设计说明书;5.提供计算程序代码。

代码使用C++编写的,共有三个文件,请建立工程,一起编译。

这是Plural.hpp#ifndef PLURAL_HPP#define PLURAL_HPP//类名称:Plural//方法:GetR,GetI,SetRI,SetR,SetI//数据:m_pluralR,m_pluralIclass Plural{public:Plural();Plural(float pR, float pI);~Plural();float GetR() const;float GetI() const;void SetRI(float pR, float pI);void SetR(float pR);void SetI(float pI);private:float m_pluralR;float m_pluralI;};//名称: 复数乘法,PluralMul(Plural plural1, Plural plural2) //参数:复数plural1 plural2//返回值:复数Plural PluralMul(Plural plural1, Plural plural2);//函数名:复数除法,运算浮点数除以复数//参数:num,分子,是一个浮点数。

den,分母,是一个复数//返回值:结果的复数Plural PluralDiv(float num, Plural den);//函数名:复数求倒数//参数:den,分母,是一个复数//返回值:此复数的倒数Plural PluralDiv(Plural plu);//参数:mat为待变换的复数矩阵的数组名,n为阶数//返回值:无//说明:变换后的结果依旧保存在mat中void MatrixInv(Plural *mat, int n);#endif#include "plural.hpp"#include <stdio.h>#include <stdlib.h>#include <math.h>//类名称:Plural//方法:GetR,GetI,SetRI,SetR,SetI//数据:m_pluralR,m_pluralIPlural::Plural(){m_pluralR = 0;m_pluralI = 0;}Plural::Plural(float pR, float pI){m_pluralR = pR;m_pluralI = pI; }Plural::~Plural(){}float Plural::GetR() const{return m_pluralR;}float Plural::GetI() const{return m_pluralI;}void Plural::SetRI(float pR, float pI){m_pluralR = pR;m_pluralI = pI;}void Plural::SetR(float pR){m_pluralR = pR;}void Plural::SetI(float pI){m_pluralI = pI;}// 名称: 复数乘法,PluralMul(Plural plural1, Plural plural2)// 参数:复数plural1 plural2// 返回值:复数Plural PluralMul(Plural plural1, Plural plural2){Plural result;result.SetRI(plural1.GetR() * plural2.GetR() - plural1.GetI() * plural2.GetI(),plural1.GetR() * plural2.GetI() + plural1.GetI() * plural2.GetR());return result;}//函数名:复数除法,运算浮点数除以复数//参数:num,分子,是一个浮点数。

den,分母,是一个复数//返回值:结果的复数Plural PluralDiv(float num, Plural den){Plural result;float k;k = den.GetR() * den.GetR() + den.GetI() * den.GetI();result.SetR(num*den.GetR()/k);result.SetI(-1.0*num*den.GetI()/k);return result;}//函数名:复数求倒数//参数:den,分母,是一个复数//返回值:此复数的倒数Plural PluralDiv(Plural plu){Plural result;float k;k = plu.GetR() * plu.GetR() + plu.GetI() * plu.GetI();result.SetR(plu.GetR()/k);result.SetI(-1.0*plu.GetI()/k);return result;}//说明:以下3个函数组合用来求复数矩阵的逆。

double *inv(double *A,double *Ainv,int n);void mulAB(double *A,double *B,double *C,int am,int an,int bm,int bn);//参数:mat为待变换的复数矩阵的数组名,n为阶数//返回值:无//说明:变换后的结果依旧保存在mat中void MatrixInv(Plural *mat, int n);//矩阵求逆。

A为原矩阵,Ainv为求逆之后矩阵,n为阶数double *inv(double *A, double *Ainv, int n){int *is, *js, i, j, k, l, u, v;double d, p;for (i=0; i<n*n; i++)*(Ainv+i) = *(A+i);is = (int*)malloc(n*sizeof(int));js = (int*)malloc(n*sizeof(int));for (k=0; k<=n-1; k++) {d=0.0;for (i=k; i<=n-1; i++) for (j=k; j<=n-1; j++) {l = i*n+j;p = fabs(Ainv[l]);if (p>d){d = p;is[k] = i;js[k] = j;}}if (d + 1.0 == 1.0){free(is);free(js);return NULL;}if (is[k] != k)for (j=0; j<=n-1; j++) {u = k*n+j;v = is[k] * n + j;p = Ainv[u];Ainv[u] = Ainv[v]; Ainv[v] = p;}if (js[k] != k)for (i=0; i<=n-1; i++) {u = i * n + k;v = i * n + js[k];p = Ainv[u];Ainv[u] = Ainv[v]; Ainv[v] = p;}l = k * n + k;Ainv[l] = 1.0 / Ainv[l];for (j=0; j<=n-1; j++)if (j != k){u = k * n + j;Ainv[u] = Ainv[u] * Ainv[l];}for (i=0; i<=n-1; i++)if (i != k)for (j=0; j<=n-1; j++)if (j != k){u = i * n + j;Ainv[u] = Ainv[u] - Ainv[i*n+k] * Ainv[k*n+j]; }for (i=0; i<=n-1; i++)if (i != k){u = i * n + k;Ainv[u] = -Ainv[u] * Ainv[l];}}for (k=n-1; k>=0; k--){if (js[k]!=k)for (j=0; j<=n-1; j++){u = k*n+j;v = js[k] * n + j;p = Ainv[u];Ainv[u] = Ainv[v];Ainv[v] = p;}if (is[k] != k)for (i=0; i<=n-1; i++){u = i * n + k;v = i * n + is[k];p = Ainv[u];Ainv[u] = Ainv[v];Ainv[v] = p;}}free(is);free(js);return Ainv;}//参数:a为原矩阵,b为逆矩阵,c为结果。

其他在此都为nvoid mulAB(double *a, double *b, double *c, int am, int an, int bm, int bn){int i, j, l, u;if (an != bm){printf("不能完成原矩阵和其逆矩阵矩阵相乘\n");return;}for (i=0; i<am; i++)for (j=0; j<bn; j++){u=i*bn+j;c[u]=0.0;for (l=0; l<an; l++)c[u]=c[u]+a[i*an+l]*b[l*bn+j];}return;}//复数矩阵求逆。

参数:mat为待求矩阵,n为阶数void MatrixInv(Plural *mat,int n){int i, j;double pluralR[n][n], pluralI[n][n];double *a = NULL, *b = NULL, *c = NULL;double *resultR = NULL, *resultI = NULL;Plural result[n][n];for (i=0; i<n; i++){for(j=0; j<n; j++){pluralR[i][j] = mat[i*n+j].GetR();pluralI[i][j] = mat[i*n+j].GetI();}}printf("原始矩阵为:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%10.4f + j%0.4f\t",(*pluralR)[i*n+j],(*pluralI)[i*n+j]);printf("\n");}a = (double*)malloc(n*n*sizeof(double));b = (double*)malloc(n*n*sizeof(double));c = (double*)malloc(n*n*sizeof(double));resultR = inv(*pluralR,a,n);resultI = inv(*pluralI,b,n);if (resultI != NULL){printf("\n求逆之后虚部是:\n");if (n%2 == 0){for (i=0; i<n; i++){for (j=0; j<n; j++)printf("%10.4f + j%0.4f\t", resultR==NULL? 0:resultR[i*n+j], resultI==NULL ? 0:resultI[i*n+j]);printf("\n");}}else{for (i=0; i<n; i++){for (j=0; j<n; j++)printf("%10.4f + j%0.4f\t", resultR==NULL?0:resultR[i*n+j], resultI==NULL ? 0:-1.0*resultI[i*n+j]);printf("\n");}}// 测试所求实部逆矩阵// mulAB(*pluralR,a,c,n,n,n,n);// printf("\n\n求逆后原实部和现在的实部乘积是\n");// for(i=0;i<n;i++)// {// for(j=0;j<n;j++)// printf("%10.4f\t", c[i*n+j]);// printf("\n");// }// 测试用所求逆矩阵// mulAB(*pluralI,b,c,n,n,n,n);// printf("\n\n求逆之后原虚部和现在的虚部乘积是:\n");// for (i=0; i<n; i++)// {// for (j=0; j<n; j++)// printf("%10.4f\t", -1.0*c[i*n+j]);// printf("\n");// }}for (i=0; i<n; i++){for (j=0; j<n; j++)mat[i*n+j].SetRI(resultR == NULL ? 0:resultR[i*n+j], resultI == NULL ? 0:resultI[i*n+j]);}free(a);free(b);free(c);}#include <iostream>#include "plural.hpp"//#include "input.hpp"using namespace std;void NodInit(){float g1S, g1X, g2S, g2X, l1L, l1D, l2L, l2D, t1S, t1U, t2S, t2U; cout << "请输入发电机G1的容量S(无穷大请输入0):";cin >> g1S;cout << "请输入发电机G1的电抗Xd(没有请输入0):";cin >> g1X;cout << endl <<"******************************************" << endl << endl;cout << "请输入发电机G2的容量S(无穷大请输入0):";cin >> g2S;cout << "请输入发电机G2的电抗Xd(没有请输入0):";cin >> g2X;cout << endl <<"******************************************" << endl << endl;cout << "请输入线路1的长度L(KM):";cin >> l1L;cout << "请输入线路1每千米电抗值:";cin >> l1D;cout << endl <<"******************************************" << endl << endl;cout << "请输入线路2的长度L(KM):";cin >> l2L;cout << "请输入线路2每千米电抗值:";cin >> l2D;cout << endl <<"******************************************" << endl << endl;cout << "请输入变压器T1的容量S(MVA):";cin >> t1S;cout << "请输入变压器T1的Uk%:";cin >> t1U;cout << endl <<"******************************************" << endl << endl;cout << "请输入变压器T2的容量S(MVA):";cin >> t2S;cout << "请输入变压器T2的Uk%:";cin >> t2U;}int main(){NodInit();Plural matrix2[3][3];matrix2[0][0].SetRI(0,1);matrix2[0][1].SetRI(0,2);matrix2[1][0 ].SetRI(0,1);matrix2[1][1].SetRI(0,1);matrix2[0][2].SetRI(0,2);matrix2[1][2].SetRI(0,1);matrix2[2][0 ].SetRI(0,3);matrix2[2][1].SetRI(0,2);matrix2[2][2].SetRI(0,1); MatrixInv(*matrix2,3);printf("\n1点短路电流是\n");printf("%f + j%f",PluralDiv(matrix2[0][0]).GetR(),PluralDiv(matrix2[0][0]).GetI());printf("\n2点短路电流是\n");printf("%f + j%f",PluralDiv(matrix2[1][1]).GetR(), PluralDiv(matrix2[1][1]).GetI());printf("\n3点短路电流是\n");printf("%f + j%f",PluralDiv(matrix2[1][1]).GetR(), PluralDiv(matrix2[1][1]).GetI());getchar();return 0;}。

相关文档
最新文档