资源简介
在数学上是多元非线性方程组的求解问题,求解的方法有很多种。牛顿—拉夫逊法是数学上解非线性方程式的有效方法,有较好的收敛性。将牛顿法用于潮流计算是以导纳矩阵为基础的,由于利用了导纳矩阵的对称性、稀疏性及节点编号顺序优化等技巧,使牛顿法在收敛性、占用内存、计算速度等方面都达到了一定的要求。 本文以一个具体例子分析潮流计算的具体方法,并运用牛顿—拉夫逊算法求解线性方程
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
vector < vector > mtxBranchList;//支路参数
vector < vector > mtxNodeList;//节点参数
vector < vector > mtxTransList;//变压器参数
vector < vector > mtxSusList;//并联导纳参数
vector verTemp;
FILE *fp;
void RealMatrixInvert(vector < vector >& mtxZ);
int i j;
void main(void)
{
if ((fopen_s(&fp “input.txt“ “r“)) != 0)
{
cout << endl;
cout << “出错!!!(“input.txt”不存在)“ << endl << endl;
exit(1);
}
//输入节点数据
int n1 n2 nNodeNumber = 0 nSwingNodeNumber = 0 nPQNodeNumber = 0 nPVNodeNumber = 0 Branch = 0;
float fVol fPg fQg fPl fQl;
float fR fX fG fB;
float fK;
while (1)
{
verTemp.clear();
fscanf_s(fp “%d %d“ &n1 &n2);
if (n1 == -1) break;
fscanf_s(fp “%f %f %f %f %f“ &fVol &fPg &fQg &fPl &fQl);
verTemp.push_back(n1);
verTemp.push_back(n2);
verTemp.push_back(fVol);
verTemp.push_back(fPg);
verTemp.push_back(fQg);
verTemp.push_back(fPl);
verTemp.push_back(fQl);
mtxNodeList.push_back(verTemp);
nNodeNumber++;//统计节点个数
if (n1 == 0)
nSwingNodeNumber++;//统计平衡节点个数
if (n1 == 1)
nPQNodeNumber++;//统计PQ节点个数
if (n1 == 2)
nPVNodeNumber++;//统计PV节点个数
}
//输入支路数据
while (1)
{
verTemp.clear();
fscanf_s(fp “%d %d“ &n1 &n2);
if (n1 == -1) break;
fscanf_s(fp “%f %f %f %f“ &fR &fX &fG &fB);
verTemp.push_back(n1);
verTemp.push_back(n2);
verTemp.push_back(fR);
verTemp.push_back(fX);
verTemp.push_back(fG);
verTemp.push_back(fB);
mtxBranchList.push_back(verTemp);
Branch++;//统计支路数
}
//输入变压器数据
while (1)
{
verTemp.clear();
fscanf_s(fp “%d %d“ &n1 &n2);
if (n1 == -1) break;
fscanf_s(fp “%f %f %f“ &fR &fX &fK);
verTemp.push_back(n1);
verTemp.push_back(n2);
verTemp.push_back(fR);
verTemp.push_back(fX);
verTemp.push_back(fK);
mtxTransList.push_back(verTemp);
}
//输入并联电容电纳数据
while (1)
{
verTemp.clear();
fscanf_s(fp “%d“ &n1);
if (n1 == -1) break;
fscanf_s(fp “%f“ &fB);
verTemp.push_back(n1);
verTemp.push_back(fB);
mtxSusList.push_back(verTemp);
}
//没问题
//形成节点导纳矩阵
//考虑支路
int nSize nSize1 nSize2;
float dR=0 dX=0 dB=0 dRX=0 dG1=0 dB1=0;
float k;
vector < vector> Y1;
vector < vector> Y2;//节点导纳矩阵
verTemp.resize(nNodeNumber);
for (i = 0; i < nNodeNumber; i++)
{
Y1.push_back(verTemp);
Y2.push_back(verTemp);
}
nSize = mtxBranchList.size();
for (i = 0; i < nSize; i++)
{
n1 = int(mtxBranchList[i][0] - 1);
n2 = mtxBranchList[i][1] - 1;
dR = mtxBranchList[i][2];
dX = mtxBranchList[i][3];
dB = mtxBranchList[i][5];
dRX = dR*dR + dX*dX;
dG1 = dR / dRX;
dB1 = -dX / dRX;
Y1[n1][n1] += dG1;
Y1[n1][n2] = -dG1;
Y2[n1][n1] += dB1 ;
Y2[n1][n2] = -dB1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-12 20:46 牛顿拉夫逊法原本\
目录 0 2017-10-11 09:42 牛顿拉夫逊法原本\Project1\
目录 0 2017-09-15 19:06 牛顿拉夫逊法原本\Project1\Debug\
文件 168448 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Debug\Project1.exe
文件 1360256 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Debug\Project1.ilk
文件 1813504 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Debug\Project1.pdb
目录 0 2017-10-09 08:55 牛顿拉夫逊法原本\Project1\Project1\
文件 8060928 2017-10-11 09:42 牛顿拉夫逊法原本\Project1\Project1.sdf
文件 970 2017-08-14 20:49 牛顿拉夫逊法原本\Project1\Project1.sln
文件 44544 2017-10-11 09:42 牛顿拉夫逊法原本\Project1\Project1.v12.suo
目录 0 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\
文件 5301 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.log
目录 0 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\
文件 466 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\cl.command.1.tlog
文件 12882 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\CL.read.1.tlog
文件 336 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\CL.write.1.tlog
文件 972 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\li
文件 2488 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\li
文件 320 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\li
文件 164 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\Project1.tlog\Project1.lastbuildstate
文件 281600 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\vc120.idb
文件 413696 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\vc120.pdb
文件 579535 2017-09-15 19:57 牛顿拉夫逊法原本\Project1\Project1\Debug\源.obj
文件 349 2017-09-15 19:39 牛顿拉夫逊法原本\Project1\Project1\input.txt
文件 590 2017-10-09 17:59 牛顿拉夫逊法原本\Project1\Project1\output.txt
文件 3378 2017-08-14 21:32 牛顿拉夫逊法原本\Project1\Project1\Project1.vcxproj
文件 944 2017-08-14 21:32 牛顿拉夫逊法原本\Project1\Project1\Project1.vcxproj.filters
目录 0 2017-10-09 08:55 牛顿拉夫逊法原本\Project1\Project1\Release\
文件 704 2017-09-15 20:04 牛顿拉夫逊法原本\Project1\Project1\Release\Project1.Build.CppClean.log
文件 4629 2017-10-09 08:55 牛顿拉夫逊法原本\Project1\Project1\Release\Project1.log
目录 0 2017-10-09 08:55 牛顿拉夫逊法原本\Project1\Project1\Release\Project1.tlog\
............此处省略13个文件信息
- 上一篇:在线试衣间
- 下一篇:广东工业大学模电试卷部分附答案.zip
评论
共有 条评论