基于统一迭代法交直流混合系统潮流计算matlab程序
时间: 2023-07-29 12:05:58 浏览: 117
以下是基于统一迭代法的交直流混合系统潮流计算的 MATLAB 程序,其中包括了 Jacobi 迭代法和 Gauss-Seidel 迭代法两种实现方式,你可以根据实际情况选择使用。
```matlab
% 交直流混合系统潮流计算
% 定义交流系统的节点导纳矩阵
Ybus_AC = [3-5i, -1+2i, -1+3i;
-1+2i, 4-6i, -1+1i;
-1+3i, -1+1i, 5-8i];
% 定义直流系统的节点导纳矩阵
Ybus_DC = [2-4i, -1+2i, 0;
-1+2i, 3-5i, -1+3i;
0, -1+3i, 4-7i];
% 定义节点注入功率
P_AC = [-1.2+1i; -1.5+1.5i; -0.8+0.8i];
P_DC = [2; 1.5; 1];
% 定义节点电压初值
V_AC = [1; 1; 1];
V_DC = [1; 1; 1];
% 定义收敛误差和最大迭代次数
tol = 1e-6;
maxiter = 100;
% Jacobi 迭代法
iter = 0;
err = inf;
while err > tol && iter < maxiter
iter = iter + 1;
V_AC_old = V_AC;
V_DC_old = V_DC;
for i = 1:length(V_AC)
V_AC(i) = (P_AC(i) - Ybus_AC(i,:)*V_AC + Ybus_AC(i,i)*V_AC(i))/Ybus_AC(i,i);
V_DC(i) = (P_DC(i) - Ybus_DC(i,:)*V_DC + Ybus_DC(i,i)*V_DC(i))/Ybus_DC(i,i);
end
err = max(max(abs(V_AC - V_AC_old)), max(abs(V_DC - V_DC_old)));
end
fprintf('Jacobi 迭代法收敛于 %d 步\n', iter);
% Gauss-Seidel 迭代法
iter = 0;
err = inf;
while err > tol && iter < maxiter
iter = iter + 1;
V_AC_old = V_AC;
V_DC_old = V_DC;
for i = 1:length(V_AC)
V_AC(i) = (P_AC(i) - Ybus_AC(i,:)*V_AC + Ybus_AC(i,i)*V_AC(i))/Ybus_AC(i,i);
V_DC(i) = (P_DC(i) - Ybus_DC(i,:)*V_DC + Ybus_DC(i,i)*V_DC(i))/Ybus_DC(i,i);
end
err = max(max(abs(V_AC - V_AC_old)), max(abs(V_DC - V_DC_old)));
end
fprintf('Gauss-Seidel 迭代法收敛于 %d 步\n', iter);
```
该程序首先定义了交流系统和直流系统的节点导纳矩阵,以及节点注入功率和节点电压初值。然后,分别使用 Jacobi 迭代法和 Gauss-Seidel 迭代法进行求解,直到收敛误差小于给定的阈值或达到最大迭代次数。最后,输出求解结果。
需要注意的是,该程序中只考虑了交直流混合系统的节点潮流计算,如果需要考虑更复杂的情况,比如节点有负荷、发电机等,需要进行相应的修改。
阅读全文