资源简介
使用C++编写高斯赛德尔法的潮流计算程序,将实虚部用一个复数类处理

代码片段和文件信息
#include
#include
using namespace std;
class complex
{
public:
complex(float r=0float i=0){real=r;imag=i;}
void set(float rfloat i){real=r;imag=i;}
void setimag(float i){imag=i;}
float getimag(){return imag;}
void show(){cout< float absc(){return sqrt(real*real+imag*imag);}
float rad(){return atan(imag/real);}
float ai(){return atan(imag/real)*180/3.14159;}
int jud(){if(real!=0||imag!=0)return 1;else return 0;}
complex conj(){return complex(real-imag);}
complex operator + (complex c2){return complex(real+c2.realimag+c2.imag);}
complex operator - (complex c2){return complex(real-c2.realimag-c2.imag);}
complex operator * (complex c2){return complex(real*c2.real-imag*c2.imagimag*c2.real+real*c2.imag);}
complex operator / (complex c2){return complex((real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag)(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));}
~complex() {}
private:
float real;
float imag;
};
main()
{
int ijkn=5pv=4maxIter=500;
static float ybr[5][5]={{0}{01.3787-0.6240-0.75740}{0-0.6241.4539-0.82990}{0-0.7547-0.82991.58460}{0}};
static float ybi[5][5]={{-33.33330031.74600}{0-6.29173.90022.64150}{03.9002-66.98083.112063.4921}{31.74602.64153.1120-35.73790}{0063.49210-66.6667}};
static float y0r[5][5]={0};
static float y0i[5][5]={{000-1.587300}{000.2500}{00.2500.253.0234}{1.511700.2500}{00-3.174600}};
float epsdd1theta;
static float u4=1.05;
complex u[5]={complex(1.050)complex(10)complex(10)complex(10)complex(u40)};
complex s[5]={complex(00)complex(-1.6-0.8)complex(-2-1)complex(-3.7-1.3)complex(50)};
complex const c0(00);
complex c1c2c3;
complex yb[5][5]y0[5][5]sl[5][5]delta_s[5][5];
for(i=0;i {
for(j=0;j {
yb[i][j].set(ybr[i][j]ybi[i][j]);
y0[i][j].set(y0r[i][j]y0i[i][j]);
}
}
eps=0.0001;
k=0;
do{
d=0;
k++;
for(i=1;i {
if(i==pv)
{
c2=c0;
for(j=0;j {
c2=yb[i][j]*u[j]+c2;
}
c3=u[i]*c2.conj();
s[i].setimag(c3.getimag());
}
c1=s[i]/u[i];
c3=c0;
for(j=0;j if(j != i)
{
c3=yb[i][j]*u[j]+c3;
}
c2=c1.conj()-c3;
c1=c2/yb[i][i];
c3=c1-u[i];
d1=c3.absc();
if(d d=d1;
if(i==pv)
{
theta=c1.rad();
u[i].set(u4*cos(theta)u4*sin(theta));
}
else
u[i]=c1;
}
} while(d > eps && k < maxIter);
cout<<‘k‘<<‘=‘< for(i=0;i {
cout<<‘u‘< cout<
if(i==pv)
{
cout<<‘S‘< s[i].show();
cout< }
}
c2=c0;
for(j=0;j {
c2=y
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6416 2013-01-08 21:15 ld class.plg
文件 3638 2013-01-08 21:15 ld class.cpp
文件 3427 2013-01-08 21:03 ld class.dsp
文件 524 2013-01-08 21:15 ld class.dsw
文件 41984 2013-01-08 21:15 ld class.ncb
文件 48640 2013-01-08 21:15 ld class.opt
----------- --------- ---------- ----- ----
104629 6
- 上一篇:RPP算法-RobustPlanarPose-C++
- 下一篇:点扩散函数PSF
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论