I get the answer negative!
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
i dont kow why but my Q is negative....this code is for gauss seidel method this line:
 Q(n,1)=-(Q(n,1)+ABS_Y_bus(n,m)*ABS_voltage_bus(n,1)*ABS_voltage_bus(m,1)*sind(ANGLE_Y_bus(n,m)+ANGLE_voltage_bus(m,1)-ANGLE_voltage_bus(n,1)));
clear all;
clc;
q=input('insert number of bus: ');
for n=1:q
    for m=1:q
        if n>m
            m=n;
            m=m+1;
        else
        disp('line')
        disp(n)
        disp(m)
        R(n,m)=input('insert resistance of between line= ');
        X(n,m)=input('insert reactance of between line= ');
        Z(n,m)=R(n,m)+i*X(n,m);
        if Z(n,m)==0
            Y(n,m)=0;
            Y(m,n)=0;
        else
        Y(n,m)=1/Z(n,m);
        Y(m,n)=Y(n,m);
    end
    end
    end
end
for n=1:q
    for m=1:q
        if n>m
            m=n;
            m=m+1;
        else
        if n~=m
            Y_bus(n,m)=-Y(n,m);
            Y_bus(m,n)=Y_bus(n,m);
        end
        end
    end
end
Y_bus(n,n)=0;
for n=1:q
    for m=1:q
    Y_bus(n,n)=Y_bus(n,n)+Y(n,m);
    end
end
for n=1:q
    disp('Number of bus =')
    disp(n)
    voltage_bus(n,1)=input('insert voltage of bus=');
end
disp('guide:')
disp('If bus is slack bus,insert 1,if bus is PV bus,insert 2,if bus is PQ bus,insert 3')
type_of_bus(n,1)=0;
for n=1:q
    disp('Number of bus=')
    disp(n)
    type_of_bus(n,1)=input('type_of_bus=');
end
ABS_Y_bus=abs(Y_bus);
ANGLE_Y_bus=angle(Y_bus);
P(n,1)=0;
for n=1:q
    if 1==type_of_bus(n,1)
        P(n,1)=0;
    else
    disp('insert active power of bus:')
    disp(n)
    P(n,1)=input('');
    if 3==type_of_bus(n,1)
        P(n,1)=-P(n,1);
    end
    end
end
Q(n,1)=0;
for n=1:q
    if 1==type_of_bus(n,1) | 2==type_of_bus(n,1)
        Q(n,1)=0;
    else
    disp('insert reactive power of bus:')
    disp(n)
    Q(n,1)=input('');
    if 3==type_of_bus(n,1)
        Q(n,1)=-Q(n,1);
    end
    end
end
%%%%%%%%%%%%%%%%%%
for k=1:10
for n=1:q
    if 1==type_of_bus(n,1)
        voltage_bus(n,1)=voltage_bus(n,1);
    else
    if 1~=type_of_bus(n,1)
        ABS_voltage_bus=abs(voltage_bus);
        ANGLE_voltage_bus=angle(voltage_bus);
    end
        if 2==type_of_bus(n,1)
            for m=1:q
                Q(n,1)=-(Q(n,1)+ABS_Y_bus(n,m)*ABS_voltage_bus(n,1)*ABS_voltage_bus(m,1)*sind(ANGLE_Y_bus(n,m)+ANGLE_voltage_bus(m,1)-ANGLE_voltage_bus(n,1)));
            end
        end
        A=0;
        for m=1:q
            if m~=n
                A=A+Y_bus(n,m)*voltage_bus(m,1);
            end
        end
        voltage_bus(n,1)=(1/Y_bus(n,n))*(((P(n,1)-i*Q(n,1))/conj(voltage_bus(n,1)))-A);
    end
    end
end
voltage_bus
ABS_voltage_bus=abs(voltage_bus)
ANGLE_voltage_bus=angle(voltage_bus)                
Q
P
댓글 수: 0
채택된 답변
  ProblemSolver
      
 2023년 6월 27일
        Hello Arian:
You mentioned that your Q value is negative. One possible reason for this issue is the usage of the sind function, which returns the sine of an angle in degrees. If the angles ANGLE_Y_bus and ANGLE_voltage_bus are in radians, you should use the sin function instead of sind.
To fix the issue, replace sind with sin in the line of code mentioned above:
Q(n,1)=-(Q(n,1)+ABS_Y_bus(n,m)*ABS_voltage_bus(n,1)*ABS_voltage_bus(m,1)*sin(ANGLE_Y_bus(n,m)+ANGLE_voltage_bus(m,1)-ANGLE_voltage_bus(n,1)));
댓글 수: 2
  ProblemSolver
      
 2023년 6월 29일
				
      편집: ProblemSolver
      
 2023년 6월 29일
  
			@arian hoseini The only problem then I can see is the conversion of the formula. I would suggest kindly revist it. The Gauss Seidel Method:
 where, Meaning that you are doing ci = - ( ci + Summation term), if you open the brackets, then the term becomes ci = -ci -summation term.
Q(n,1)=Q(n,1)-(ABS_Y_bus(n,m)*ABS_voltage_bus(n,1)*ABS_voltage_bus(m,1)*sin(ANGLE_Y_bus(n,m)+ANGLE_voltage_bus(m,1)-ANGLE_voltage_bus(n,1)));
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!