有关前推回代法的放射形配电网三相潮流计算MATLAB程序

Bus=[1,0,0;
2,100, 60;
3,90,40;
4,120,80;
5,60,30;
6,60,20;
7, 200, 100 ;
8,200, 100 ;
9, 60, 20;
10,60, 20;
11,45,30;
12,60, 35;
13,60, 35;
14,120,80;
15,60, 10;
16,60, 20;
17,60, 20;
18,90, 40;
19,90, 40;
20,90, 40;
21,90, 40;
22,90, 40;
23,90, 40;
24,420, 200;
25,420, 200 ;
26,60, 25;
27,60 ,25;
28,60, 20;
29,120, 70;
30,200,600 ;
31,150, 70;
32,210, 100 ;
33,60,40;];
Branch=[1 ,1 ,2 ,0.0922,0.0407;
2 ,2 ,3 ,0.4930,0.2511;
3 ,3 ,4 ,0.3660,0.1864;
4 ,4 ,5 ,0.3811,0.1941;
5 ,5 ,6 ,0.8190,0.7070;
6 ,6 ,7 ,0.1872,0.6188;
7 ,7 ,8 ,0.7144,0.2351;
8 ,8 ,9 ,1.0300,0.7400;
9 ,9 ,10,1.0440,0.7400;
10,10,11,0.1966,0.065;
11,11,12,0.3744,0.1238;
12,12,13,1.4680,1.1550;
13,13,14,0.5416,0.7129;
14,14,15,0.5910,0.5260;
15,15,16,0.7463,0.5450;
16,16,17,1.2890,1.7210;
17,17,18,0.7320,0.5740;
18,2, 19,0.1640,0.1565;
19,19,20,1.5042,1.3554;
20,20,21,0.4095,0.4784;
21,21,22,0.7089,0.9373;
22,3, 23,0.4512,0.3083;
23,23,24,0.8980,0.7091;
24,24,25,0.8960,0.7011;
25,6, 26,0.2030,0.1034;
26,26,27,0.2842,0.1447;
27,27,28,1.0590,0.9337;
28,28,29,0.8042,0.7006;
29,29,30,0.5075,0.2585;
30,30,31,0.9744,0.9630;
31,31,32,0.3105,0.3619;
32,32,33,0.3410,0.5302;];
[busnum,row]=size(Bus);
[branchnum,row]=size(Branch);
soubus=Branch(:,2);
mobus=Branch(:,3);
Vbus=ones(busnum,1);
Vbus(:,1)=12.66;
Vbus1=Vbus;
Ploss=zeros(busnum,1);
Qloss=zeros(busnum,1);
e=1;
k=0;
Branch1=Branch;
n=1;
while ~isempty(Branch1)
m=1;
[s,row]=size(Branch1);
while s>0
t=find(Branch1(:,2)== Branch1(s,3));
if isempty(t)
T1(n,:)= Branch1(s,:);
n=n+1;
else
T2(m,:)= Branch1(s,:);
m=m+1;
end;
s=s-1;
end;
Branch1=T2;
T2=[];
end;
while e>1.0e-05
P=zeros(busnum,1);
Q=zeros(busnum,1);
for s=1:branchnum
i=T1(s,2);
j=T1(s,3);
R=T1(s,4);
X=T1(s,5);
Pload=Bus(j,2);
Qload=Bus(j,3);
II=((Pload+P(j))2+(Qload+Q(j))2)/(Vbus(j)^21000);
Ploss(i,j)=II
R;
Qloss(i,j)=II*X;
P(i,j)=Pload+Ploss(i,j)+P(j);
Q(i,j)=Qload+Ploss(i,j)+Q(j);
P(i)=P(i)+P(i,j);
Q(i)=Q(i)+Q(i,j);
end;
for s=branchnum?1
i=T1(s,2);
j=T1(s,3);
R=T1(s,4);
X=T1(s,5);
Vbus(j)=(Vbus(i)-(P(i,j)*R+Q(i,j)*X)/(Vbus(i)*1000))2+((P(i,j)*X-Q(i,j)*R)/(Vbus(i)*1000))2;
Vbus(j)=sqrt(Vbus(j));
end;
e=max(abs(Vbus1-Vbus));
Vbus1=Vbus;
k=k+1;
end

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,我可以帮你解答这个问题。 首先,气体扩散方程和放射性气体扩散方程是不同的方程,需要分别处理。这里我以气体扩散方程为例。 气体扩散方程可以表示为: $$\frac{\partial c}{\partial t} = D \frac{\partial^2 c}{\partial x^2}$$ 其中,$c$ 是气体浓度,$t$ 是时间,$x$ 是空间位置,$D$ 是扩散系数。 为了求解上述方程,我们可以采用有限差分法。具体来说,我们可以将时间和空间分别离散化,然后采用显式欧拉法进行迭代。 具体步骤如下: 1. 将时间区间 $[0,T]$ 分成 $N$ 个小区间,每个小区间的长度为 $\Delta t = \frac{T}{N}$。 2. 将空间区间 $[0,L]$ 分成 $M$ 个小区间,每个小区间的长度为 $\Delta x = \frac{L}{M}$。 3. 定义一个 $M \times N$ 的矩阵 $c$,表示气体浓度在不同时间和空间位置的取值。 4. 根据初始条件,初始化 $c$ 矩阵的第一行,即 $c_{i,0}$。 5. 根据边界条件,初始化 $c$ 矩阵的第一列和最后一列,即 $c_{0,j}$ 和 $c_{M,j}$。 6. 利用显式欧拉法进行迭代,即对于时间步 $j=1,2,\ldots,N$,计算 $c_{i,j}$ 的值: $$c_{i,j} = c_{i,j-1} + \frac{D \Delta t}{\Delta x^2} (c_{i+1,j-1} - 2c_{i,j-1} + c_{i-1,j-1})$$ 7. 重复步骤 6 直到 $j=N$,得到 $c$ 矩阵的最后一列,即气体浓度在时间 $T$ 时的分布。 下面是 MATLAB 代码实现: ```matlab % 气体扩散方程的有限差分法求解 % 输入参数:D 扩散系数,L 空间区间长度,T 时间区间长度,M 空间区间划分数,N 时间区间划分数 % 输出参数:c 气体浓度分布矩阵,每行表示不同空间位置,每列表示不同时刻 function c = diffusion(D, L, T, M, N) % 计算离散化步长 dx = L / M; dt = T / N; % 初始化气体浓度分布矩阵 c = zeros(M+1, N+1); % 初始化初始条件 c(:,1) = 1-exp(-(0:M).^2/(2*10^2)); % 初始化边界条件 c(1,:) = 0; c(M+1,:) = 0; % 迭代求解 for j = 2:N+1 for i = 2:M c(i,j) = c(i,j-1) + D*dt/dx^2*(c(i+1,j-1)-2*c(i,j-1)+c(i-1,j-1)); end end end ``` 其中,我定义了一个名为 `diffusion` 的函数,输入参数为扩散系数 $D$、空间区间长度 $L$、时间区间长度 $T$、空间区间划分数 $M$ 和时间区间划分数 $N$,输出参数为气体浓度分布矩阵 $c$。在函数内部,我按照上述步骤进行求解,并将最终结果存储在 $c$ 矩阵中。 你可以在 MATLAB 中调用这个函数,并输入相应的参数进行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值