php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 362|回复: 0

IEEE30节点系统潮流计算

[复制链接]

3138

主题

3148

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7946
贡献
0
注册时间
2021-4-14
最后登录
2024-11-21
在线时间
763 小时
QQ
发表于 2023-11-25 14:17:29 | 显示全部楼层 |阅读模式

  1. // 30节点系统潮流计算程序.cpp : Defines the entry point for the console application.
  2. #include "stdafx.h"

  3. //*************************************************************************************************************//
  4. //IEEE-30节点系统潮流计算程序

  5. #include<stdio.h>
  6. #include<math.h>

  7. #define N 30              //节点数
  8. #define n_PQ 24            //PQ节点数
  9. #define n_PV 5            //PV节点数
  10. #define n_br 41           //串联支路数
  11. #define n_C 2             //装有并联电容节点数
  12. //#define n_L 1

  13. #define PI 3.1415926
  14. double K1,K2,K3,K4;          //变压器变比
  15. double Yc1,Yc2;
  16. //double Xmcr;

  17. void main()
  18. {
  19.         //void disp_matrix(double *disp_p,int disp_m,int disp_n);                                       //矩阵显示函数

  20.         //节点电压赋初值,PV节点电压幅值已知,相角置0;平衡节点电压幅值和相角均已知;PQ节点电压幅值设1,相角设0.
  21.         //                                  1        2        3        4        5        6        7        8        9        10
  22.         /*double Us[2*N]={1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,
  23.                                         1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,
  24.                                         1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0338,0,1.0058,0,1.0230,0,1.0913,0,1.0883,0,1.0500,0
  25.                                         }; */
  26.         /*double Us[2*N]={1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,
  27.                                         1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,
  28.                                         1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0500,0,1.0500,0,1.0500,0,1.0500,0,1.0500,0,1.0500,0
  29.                                         };*/
  30.         double Us[2*N]={1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,
  31.                                         1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,
  32.                                         1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0000,0,1.0500,0
  33.                                         };
  34.    
  35.         //PV节点发电机有功赋初值(除平衡节点外)
  36.         //                            1      2      3      4      5      6      7      8      9      10
  37.         double Ps[N]={0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,
  38.                                   0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,
  39.                                   0.0000,0.0000,0.0000,0.0000,0.5756,0.2456,0.3500,0.1793,0.1691
  40.                                 };
  41.         //发电机无功初值置0
  42.         double Qs[N]={0};                                                                                          

  43.         //各节点有功负荷赋值
  44.         //                            1     2     3     4     5     6     7     8     9     10
  45.         double PL[N]={0.024,0.076,0.000,0.228,0.000,0.058,0.112,0.062,0.082,0.035,
  46.                                   0.090,0.032,0.095,0.022,0.175,0.000,0.032,0.087,0.000,0.035,
  47.                                   0.000,0.000,0.024,0.106,0.217,0.942,0.300,0.000,0.000
  48.                                 };  
  49.        
  50.         //各节点无功负荷赋值
  51.         //                            1     2     3     4     5     6     7     8     9     10
  52.         double QL[N]={0.012,0.016,0.000,0.109,0.000,0.020,0.075,0.016,0.025,0.018,
  53.                                   0.058,0.009,0.034,0.007,0.112,0.000,0.016,0.067,0.000,0.023,
  54.                                   0.000,0.000,0.009,0.019,0.127,0.190,0.300,0.000,0.000
  55.                                 };   

  56.         //double K1=1.0155;K2=0.9629;K3=1.0129;K4=0.9581;          //变压器当前变比
  57.         //double Yc1=0.19;Yc2=0.04;
  58.         double K1=1;K2=1;K3=1;K4=1;          //变压器当前变比
  59.         double Yc1=0;Yc2=0;
  60.         //Xmcr=8.0;
  61.         //double Y[N][N],G[N][N],B[N][N],B1[N-1][N-1],B2[n_PQ][n_PQ],invB1[N-1][N-1],invB2[n_PQ][n_PQ];      //阻抗参数  
  62.         double G[N][N],B[N][N],B1[N-1][N-1],B2[n_PQ][n_PQ],invB1[N-1][N-1],invB2[n_PQ][n_PQ];      //阻抗参数  

  63.         //结构体定义线路参数
  64.         struct                                                                                                                                               
  65.                 {
  66.                         int nl;             //左节点
  67.                         int nr;            //右节点
  68.                         double R;          //串联电阻值
  69.                         double X;          //串联电抗值
  70.                         double Bl;          //左节点充电电纳
  71.                         double Br;          //右节点充电电纳
  72.                 }ydata[n_br+n_C]={          // 左 右    R     X     B/2     B/2
  73.                                         /*1*/                {29,24,0.0192,0.0575,0.0264,0.0264},      //一般支路参数
  74.                                         /*2*/                {29,0,0.0452,0.1852,0.0204,0.0204},
  75.                                         /*3*/                {24,1,0.0570,0.1737,0.0184,0.0184},
  76.                                         /*4*/                {0,1,0.0132,0.0379,0.0042,0.0042},
  77.                                         /*5*/                {24,25,0.0472,0.1983,0.0209,0.0209},
  78.                                         /*6*/                {24,2,0.0581,0.1763,0.0187,0.0187},
  79.                                         /*7*/                {1,2,0.0119,0.0414,0.0045,0.0045},
  80.                                         /*8*/                {25,3,0.0460,0.1160,0.0102,0.0102},
  81.                                         /*9*/                {2,3,0.0267,0.0820,0.0085,0.0085},
  82.                                         /*10*/                {2,26,0.0120,0.0420,0.0045,0.0045},
  83.                                         /*11*/                {4,27,0.0000,0.2080,0.0000,0.0000},
  84.                                         /*12*/                {4,5,0.0000,0.1100,0.0000,0.0000},
  85.                                         /*13*/                {6,28,0.0000,0.1400,0.0000,0.0000},
  86.                                         /*14*/                {6,7,0.1231,0.2559,0.0000,0.0000},
  87.                                         /*15*/                {6,8,0.0662,0.1304,0.0000,0.0000},
  88.                                         /*16*/                {6,9,0.0945,0.1987,0.0000,0.0000},
  89.                                         /*17*/                {7,8,0.2210,0.1997,0.0000,0.0000},
  90.                                         /*18*/                {9,10,0.0824,0.1932,0.0000,0.0000},
  91.                                         /*19*/                {8,11,0.1070,0.2185,0.0000,0.0000},
  92.                                         /*20*/                {11,12,0.0639,0.1292,0.0000,0.0000},
  93.                                         /*21*/                {12,13,0.0340,0.0680,0.0000,0.0000},
  94.                                         /*22*/                {5,13,0.0936,0.2090,0.0000,0.0000},
  95.                                         /*23*/                {5,10,0.0324,0.0845,0.0000,0.0000},
  96.                                         /*24*/                {5,14,0.0348,0.0749,0.0000,0.0000},
  97.                                         /*25*/                {5,15,0.0727,0.1499,0.0000,0.0000},
  98.                                         /*26*/                {14,15,0.0116,0.0236,0.0000,0.0000},
  99.                                         /*27*/                {8,16,0.1000,0.2020,0.0000,0.0000},
  100.                                         /*28*/                {15,17,0.1150,0.1790,0.0000,0.0000},
  101.                                         /*29*/                {16,17,0.1320,0.2700,0.0000,0.0000},
  102.                                         /*30*/                {17,18,0.1885,0.3292,0.0000,0.0000},
  103.                                         /*31*/                {18,19,0.2554,0.3800,0.0000,0.0000},
  104.                                         /*32*/                {18,20,0.1093,0.2087,0.0000,0.0000},
  105.                                         /*33*/                {20,22,0.2198,0.4153,0.0000,0.0000},
  106.                                         /*34*/                {20,23,0.3202,0.6027,0.0000,0.0000},
  107.                                         /*35*/                {22,23,0.2399,0.4533,0.0000,0.0000},
  108.                                         /*36*/                {26,21,0.0636,0.2000,0.0214,0.0214},
  109.                                         /*37*/                {2,21,0.0169,0.0599,0.0065,0.0065},
  110.                                         /*38*/                {2,4,0.0000,K1*0.2080,(K1-1)/(K1*0.2080),(1-K1)/(K1*K1*0.2080)},      //变压器支路参数
  111.                                         /*39*/                {2,5,0.0000,K2*0.5560,(K2-1)/(K2*0.5560),(1-K2)/(K2*K2*0.5560)},
  112.                                         /*40*/                {1,6,0.0000,K3*0.2560,(K3-1)/(K3*0.2560),(1-K3)/(K3*K3*0.2560)},
  113.                                         /*41*/                {21,20,0.0000,K4*0.3960,(K4-1)/(K4*0.3960),(1-K4)/(K4*K4*0.3960)},
  114.                                                                                
  115.                                                                 {5,5,0.0000,Yc1,0.0000,0.0000},       //5号节点有并联电容,电纳标幺值为0.19
  116.                                                                 {17,17,0.0000,Yc2,0.0000,0.0000},       //17号节点有并联电容,电纳标幺值为0.02       
  117.                                         };

  118.         double Z2;                                                              //Z^2=R^2+X^2  各串联阻抗值的平方
  119.         double U_amp[N],U_ang[N];                                    //电压幅值和相角        
  120.         double dU_amp[N],dU_ang[N];                                    //电压幅值和相角修正值
  121.         double mid1[N],mid2[N],dP[N-1],dQ[n_PQ];     //mid1、mid2存储计算雅克比行列式对角线元素的中间值,dS存储PQU的不平衡量
  122.         double MIN=0.00001;                          //PQU不平衡量最大值
  123.         double dPQU;                                 //PQU不平衡量

  124.         double Ploss;
  125.        
  126.         //double S[2*n_br];                          //线路功率
  127.         double P[n_br][n_br];
  128.         double Q[n_br][n_br];
  129.         double Ps_total,Qs_total;               //发电机总有功、总无功
  130.         double PL_total,QL_total;               //负荷总有功、总无功

  131.         //double Pc;                                 //电容器的功率
  132.         int kk=0;                                   //迭代次数
  133.         int kkmax=60;                               //最大迭代次数
  134.         int i,j,k;                                                                              
  135.         double t;                                                                              
  136.         //形成导纳矩阵--------------------------------------------------------------------------------------------------
  137.         for(i=0;i<N;i++)
  138.                 for(j=0;j<N;j++)     //各节点导纳赋初值为
  139.                 {
  140.                         G[i][j]=0;
  141.                         B[i][j]=0;
  142.                 }
  143.         for(i=0;i<n_br+n_C;i++)
  144.         {
  145.                 if(ydata[i].nl!=ydata[i].nr)      //左节点号与右节点号不同
  146.                 {
  147.                         Z2=(ydata[i].R)*(ydata[i].R)+(ydata[i].X)*(ydata[i].X);   //阻抗的平方
  148.                         //串联阻抗等效导纳值
  149.                         //非对角元素
  150.                         G[ydata[i].nl][ydata[i].nr]=(-ydata[i].R)/Z2;
  151.                         B[ydata[i].nl][ydata[i].nr]=ydata[i].X/Z2;
  152.                         G[ydata[i].nr][ydata[i].nl]=(-ydata[i].R)/Z2;
  153.                         B[ydata[i].nr][ydata[i].nl]=ydata[i].X/Z2;
  154.                         //对角元素
  155.                         G[ydata[i].nl][ydata[i].nl]+=ydata[i].R/Z2;
  156.                         G[ydata[i].nr][ydata[i].nr]+=ydata[i].R/Z2;
  157.                         B[ydata[i].nl][ydata[i].nl]+=(-ydata[i].X/Z2);
  158.                         B[ydata[i].nr][ydata[i].nr]+=(-ydata[i].X/Z2);
  159.                         //节点自导纳需加上充电导纳值
  160.                         B[ydata[i].nl][ydata[i].nl]+=ydata[i].Bl;
  161.                         B[ydata[i].nr][ydata[i].nr]+=ydata[i].Br;
  162.                 }
  163.                 else           //左节点号=右节点号,即节点有并联阻抗的情况
  164.                 {
  165.                         B[ydata[i].nl][ydata[i].nl]+=ydata[i].X;
  166.                 }
  167.         }
  168.         //输出节点导纳矩阵
  169.         //printf("Y=\n");
  170.         //for(i=0;i<N;i++)
  171.         //{
  172.         //        for(j=0;j<N;j++)
  173.         //        {
  174.         //                printf("%.6f+j%.6f ",G[i][j],B[i][j]);
  175.         //        }
  176.         //        printf("\n");
  177.         //}
  178.         ////printf("\n");
  179.         //printf("G=\n");      //矩阵G
  180.         //disp_matrix(*G,N,N);
  181.         //printf("B=\n");      //矩阵B
  182.         //disp_matrix(*B,N,N);


  183.         //形成B',B''矩阵
  184.         for(i=0;i<N-1;i++)
  185.                 for(j=0;j<N-1;j++)
  186.                 {
  187.                         B1[i][j]=B[i][j];
  188.                         if(i<n_PQ&&j<n_PQ)
  189.                                 B2[i][j]=B[i][j];
  190.                 }
  191.         /*printf("B1=\n");           //输出B1矩阵
  192.         disp_matrix(*B1,N-1,N-1);
  193.         printf("B2=\n");             //输出B2矩阵
  194.         disp_matrix(*B2,n_PQ,n_PQ);*/

  195.         //B'求逆-----------------------------------------------------------------------------------
  196.         for(i=0;i<N-1;i++)
  197.                 for(j=0;j<N-1;j++)
  198.                 {
  199.                         if(i!=j)
  200.                                 invB1[i][j]=0;    //B'的逆矩阵,非对角线元素初值置0
  201.                         else
  202.                                 invB1[i][j]=1;    //B'的逆矩阵,对角线元素初值置1
  203.                 }
  204.         for(i=0;i<N-1;i++)
  205.         {
  206.                 for(j=0;j<N-1;j++)
  207.                 {
  208.                         if(i!=j)
  209.                         {
  210.                                 t=B1[j][i]/B1[i][i];
  211.                                 for(k=0;k<N-1;k++)
  212.                                 {
  213.                                         B1[j][k]-=B1[i][k]*t;
  214.                                         invB1[j][k]-=invB1[i][k]*t;
  215.                                 }
  216.                         }
  217.                 }
  218.         }
  219.         for(i=0;i<N-1;i++)
  220.                 if(B1[i][i]!=1)
  221.                 {
  222.                         t=B1[i][i];
  223.                         for(j=0;j<N-1;j++)
  224.                                 invB1[i][j]=invB1[i][j]/t;
  225.                 }

  226.         //printf("invB1=\n");
  227.         //disp_matrix(*invB1,N-1,N-1);

  228.         //B''求逆
  229.         for(i=0;i<n_PQ;i++)
  230.                 for(j=0;j<n_PQ;j++)
  231.                 {
  232.                         if(i!=j)
  233.                                 invB2[i][j]=0;
  234.                         else
  235.                                 invB2[i][j]=1;
  236.                 }
  237.         for(i=0;i<n_PQ;i++)
  238.         {
  239.                 for(j=0;j<n_PQ;j++)
  240.                 {
  241.                         if(i!=j)
  242.                         {
  243.                                 t=B2[j][i]/B2[i][i];
  244.                                 for(k=0;k<n_PQ;k++)
  245.                                 {
  246.                                         B2[j][k]-=B2[i][k]*t;
  247.                                         invB2[j][k]-=invB2[i][k]*t;
  248.                                 }
  249.                         }
  250.                 }
  251.         }
  252.         for(i=0;i<n_PQ;i++)
  253.                 if(B2[i][i]!=1)
  254.                 {
  255.                         t=B2[i][i];
  256.                         for(j=0;j<n_PQ;j++)
  257.                                 invB2[i][j]=invB2[i][j]/t;
  258.                 }
  259.         /*printf("invB2=\n");
  260.         disp_matrix(*invB2,n_PQ,n_PQ);*/



  261.         //分离并输出U,δ
  262.         for(i=0;i<N;i++)
  263.         {
  264.                 U_amp[i]=Us[2*i];     //电压幅值
  265.                 U_ang[i]=Us[2*i+1];   //电压相角
  266.         }
  267. /*        //printf("U_amp=");
  268.         for(i=0;i<N;i++)
  269.                 printf("U[%d]=%.4f  ",i,U_amp[i]);
  270.         printf("\n");
  271.         //printf("\nU_ang=");
  272.         for(i=0;i<N;i++)
  273.                 printf("δ[%d]=%.2f  ",i,U_ang[i]);
  274.         printf("\n\n");
  275. */

  276.         //主程序=====================================================================================================
  277.         for(kk=0;kk<kkmax;kk++)
  278.         {
  279.                 for(i=0;i<N-1;i++)
  280.                 {
  281.                         mid1[i]=0;       //中间变量,初值置
  282.                         mid2[i]=0;
  283.                         for(j=0;j<N;j++)   //
  284.                         {
  285.                                 mid1[i]+=U_amp[j]*(G[i][j]*cos(U_ang[i]-U_ang[j])+B[i][j]*sin(U_ang[i]-U_ang[j]));        //计算Pi
  286.                                 mid2[i]+=U_amp[j]*(G[i][j]*sin(U_ang[i]-U_ang[j])-B[i][j]*cos(U_ang[i]-U_ang[j]));         //计算Qi
  287.                         }
  288.                         dP[i]=Ps[i]-PL[i]-U_amp[i]*mid1[i];      //计算△Pi
  289.                         if(i<n_PQ)
  290.                                 dQ[i]=Qs[i]-QL[i]-U_amp[i]*mid2[i];
  291.                 }
  292.                 //printf("kk=%d\n",kk);
  293.                 //printf("dP=");     //第k次迭代dP
  294.                 //for(i=0;i<N-1;i++)
  295.                 //        printf("%9.6f  ",dP[i]);
  296.                 //printf("\ndQ=");
  297.                 //for(i=0;i<n_PQ;i++)
  298.                 //        printf("%9.6f  ",dQ[i]);

  299.                 //求不平衡量dP、dQ的最大值
  300.                 dPQU=0;
  301.                 for(i=0;i<N-1;i++)
  302.                 {       
  303.                         if(fabs(dP[i])>dPQU)
  304.                                 dPQU=fabs(dP[i]);
  305.                 }
  306.                 for(i=0;i<n_PQ;i++)
  307.                 {
  308.                         if(fabs(dQ[i])>dPQU)
  309.                                 dPQU=fabs(dQ[i]);
  310.                 }
  311.                 //printf("\ndPQU=%9.6f",dPQU);
  312.                 //printf("\n");
  313.                 if(dPQU<MIN)
  314.                         break;
  315.                 else
  316.                 {
  317.                         //求P,δ修正值
  318.                         for(i=0;i<N-1;i++)
  319.                         {
  320.                                 dP[i]=dP[i]/U_amp[i];        //△Pi/Vi
  321.                         }
  322.                         for(i=0;i<N-1;i++)
  323.                                 dU_ang[i]=0;        //△δ初值置0
  324.                         for(i=0;i<N-1;i++)
  325.                         {
  326.                                 for(j=0;j<N-1;j++)
  327.                                         dU_ang[i]+=-invB1[i][j]*dP[j];      //求Vi*△δi
  328.                                 dU_ang[i]=dU_ang[i]/U_amp[i];          //求△δ
  329.                         }       
  330.                         for(i=0;i<N-1;i++)
  331.                                 U_ang[i]+=dU_ang[i];           //修正δi
  332.                        

  333.                         //Q,U修正值
  334.                         for(i=0;i<n_PQ;i++)
  335.                                 dQ[i]=dQ[i]/U_amp[i];      //△Qi/Vi
  336.                         for(i=0;i<n_PQ;i++)
  337.                                 dU_amp[i]=0;               //dU初值置0
  338.                         for(i=0;i<n_PQ;i++)
  339.                                 for(j=0;j<n_PQ;j++)
  340.                                         dU_amp[i]+=-invB2[i][j]*dQ[j];
  341.                         for(i=0;i<n_PQ;i++)
  342.                                 U_amp[i]+=dU_amp[i];      //修正Ui
  343.                 }
  344.         }
  345.        
  346.        
  347. //循环结束---------------------------------------------------------------------------------------------------------------
  348.         //求平衡节点功率---------------------------------------------------------------------------------------------------
  349.         mid1[N-1]=0;      //平衡节点编号为第N-1号
  350.         mid2[N-1]=0;
  351.         for(j=0;j<N;j++)
  352.         {
  353.                 mid1[N-1]+=U_amp[j]*(G[N-1][j]*cos(U_ang[N-1]-U_ang[j])+B[N-1][j]*sin(U_ang[N-1]-U_ang[j]));
  354.                 mid2[N-1]+=U_amp[j]*(G[N-1][j]*sin(U_ang[N-1]-U_ang[j])-B[N-1][j]*cos(U_ang[N-1]-U_ang[j]));
  355.         }
  356.         Ps[N-1]=U_amp[N-1]*mid1[N-1];
  357.         Qs[N-1]=U_amp[N-1]*mid2[N-1];
  358.        
  359.          //PV节点的无功出力-------------------------------------------------------------------------------------------------
  360.         for(i=n_PQ;i<N-1;i++)   
  361.                 Qs[i]=U_amp[i]*mid2[i]+QL[i];          //发电机的等效注入无功

  362.         //总发电机有功、无功计算和总负荷有功、无功计算-------------------------------------------------------------------------------------------------
  363.         Ps_total=0;Qs_total=0;               //发电机总有功、总无功初值置0
  364.         PL_total=0;QL_total=0;               //负荷总有功、总无功初值置0
  365.         for(i=0;i<N;i++)
  366.         {
  367.                 Ps_total+=Ps[i];
  368.                 Qs_total+=Qs[i];
  369.                 PL_total+=PL[i];
  370.                 QL_total+=QL[i];
  371.         }

  372.         //全部线路功率-------------------------------------------------------------------------------------------------
  373.         for(i=0;i<n_br;i++)  
  374.         {
  375.                         int a,b;    //定义两个中间变量,表示首末节点
  376.                         a=ydata[i].nl;      
  377.                         b=ydata[i].nr;
  378.                         double angle=PI/2-atan(ydata[i].X/ydata[i].R);
  379.                         double Z=sqrt(ydata[i].R*ydata[i].R+ydata[i].X*ydata[i].X);
  380.                         //printf("%d,%d,%10.6f,%10.6f,%10.6f,%10.6f\n",a,b,U_amp[a],U_amp[b],Z,angle/PI*180);
  381.                         P[a][b]=U_amp[a]*U_amp[a]*sin(angle)/Z+U_amp[a]*U_amp[b]*sin(U_ang[a]-U_ang[b]-angle)/Z;
  382.                         P[b][a]=U_amp[b]*U_amp[b]*sin(angle)/Z+U_amp[a]*U_amp[b]*sin(U_ang[b]-U_ang[a]-angle)/Z;
  383.                         Q[a][b]=U_amp[a]*U_amp[a]*cos(angle)/Z-U_amp[a]*U_amp[b]*cos(U_ang[a]-U_ang[b]-angle)/Z-U_amp[a]*U_amp[a]*ydata[i].Bl;
  384.                         Q[b][a]=U_amp[b]*U_amp[b]*cos(angle)/Z-U_amp[a]*U_amp[b]*cos(U_ang[b]-U_ang[a]-angle)/Z-U_amp[b]*U_amp[b]*ydata[i].Br;
  385.                         /*printf("S[%d][%d]=%10.6f+j%.6f\n",a,b,P[a][b],Q[a][b]);
  386.                         printf("S[%d][%d]=%10.6f+j%.6f\n",b,a,P[b][a],Q[b][a]);*/
  387.                
  388.         }
  389.         //并联电容器输出功率-------------------------------------------------------------------------------------------------
  390.         //Pc=-U_amp[6]*U_amp[6]/ydata[n_br+n_C-1].X;        //输出功率用负号表示
  391.         //printf("Pc=%.4f\n",Pc);

  392.         //有功损耗--------------------------------------------------------------------------------------------------------------
  393.         Ploss=0;
  394.         for(i=0;i<N;i++)
  395.         {
  396.                 Ploss+=Ps[i]-PL[i];
  397.         }

  398.         //电压平均值--------------------------------------------------------------------------------------------------------------
  399.         double U_average=0;            //所有节点的平均电压
  400.         double U_average2=0;           //PQ节点的平均电压
  401.         for(i=0;i<N;i++)
  402.         {
  403.                 U_average+=U_amp[i];
  404.         }
  405.         U_average=U_average/N;
  406.         for(i=0;i<n_PQ;i++)
  407.         {
  408.                 U_average2+=U_amp[i];
  409.         }
  410.         U_average2=U_average2/n_PQ;

  411. //---------------------------------------------------------------------------------------------------------------------------
  412.         // 输出结果
  413.         printf("K1=%.4f, K2=%.4f, K3=%.4f, K4=%.4f, Yc1=%.2f, Yc2=%.2f",K1,K2,K3,K4,Yc1,Yc2);            //输出各变压器变比、电容器电纳值

  414.         printf("\n\nkk=%d",kk);    //最大迭代次数

  415.         printf("\n电压幅值=");          //电压幅值
  416.         for(i=0;i<N;i++)
  417.                 printf("%10.4f",U_amp[i]);
  418.         printf("\n电压相角=");         //电压相角
  419.         for(i=0;i<N;i++)
  420.                 printf("%10.4f",U_ang[i]/PI*180);      //弧度转换成°

  421.         //输出发电机总有功、无功和负荷的总有功、无功
  422.         printf("\n\n发电机总有功=%.4f, 发电机总无功=%.4f, 负荷总有功=%.4f, 负荷总无功=%.4f",Ps_total,Qs_total,PL_total,QL_total);
  423.         printf("\n\n各发电机的注入功率");
  424.         printf("\nPs=");           //各发电机注入有功功率
  425.         for(i=n_PQ;i<N;i++)
  426.                 printf("%10.4f",Ps[i]);
  427.         printf("\nQs=");           //各发电机注入无功功率
  428.         for(i=n_PQ;i<N;i++)
  429.                 printf("%10.4f",Qs[i]);

  430.         printf("\n\n网损=%.4f, 所有节点平均电压=%.4f, PQ节点平均电压=%.4f",Ploss,U_average,U_average2);

  431.         printf("\n\n");   

  432.         //getchar();
  433. }

  434. //========================================================================================================
  435. /*void disp_matrix(double *A,int m,int n)            //矩阵显示函数
  436. {
  437.         int i,j;
  438.         for(i=0;i<m;i++)
  439.         {
  440.                 for(j=0;j<n;j++)
  441.                         printf("%10.6f ",*(A+i*m+j));
  442.                 printf("\n");
  443.         }
  444.         printf("\n");
  445. }*/

复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-21 21:44 , Processed in 0.990549 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表