?????????????? ?????? ? ????????? ?????????? ??????? ?????
?????????????? ?????? ? ????????? ?????????? ??????? ?????
?????????????? ?????? ? ????????? ?????????? ??????? ?????
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Z(i,i)=newshema(k+1); e(i)=newshema(k+2);<br />
J(i)=newshema(k+3); k=k+5;<br />
end;<br />
//определение числа узлов. Число узлов должно быть равно наибольшему номеру узла<br />
//наибольший номер узла принимается за общий узел<br />
yzlov1=max (ta);yzlov2=max (he);yzlov=max (yzlov1,yzlov2);<br />
//создание направленного графа g по введенной информации<br />
g = make_graph ('cep1', 1, yzlov, ta', he');<br />
//создание ненаправленного графа g0 по введенной информации<br />
g0 = make_graph ('cep1', 0, yzlov, ta', he');<br />
g('node_x')=[200 100 150 250 ]; //ввод х-координат узлов<br />
g('node_y')=[200 200 100 100 ]; //ввод у-координат узлов<br />
// show _ graph (g);<br />
yzlov = node_number (g); //определение числа узлов введенного графа<br />
//формирование матрицы инциденций "узел-ветвь" для введенного графа g<br />
A=full (graph_2_mat (g,'node-arc'));<br />
//формирование дерева графа<br />
derevo= min _ weight _ tree(yzlov,g0);<br />
//формирование расширенной узловой матрицы<br />
at=zeros(arc,arc); //объявление матрицы At;<br />
at(1:yzlov-1, 1:arc)=A(1:yzlov-1, 1:arc); //заполнение узловой части At;<br />
hord=setdiff (1:arc,derevo); //формирование массива хорд;<br />
size_hord=size(hord); //определения числа хорд;<br />
for ii=1:size_hord(2) //заполнение контурной<br />
at(yzlov-1+ii, hord(ii))=1; //части расширенной узловой<br />
end; //матрицы;<br />
c=at^(- 1); //вычисление контурной матрицы;<br />
er=c'*e; Jr=at*J; //вычисление векторов источников схемы;<br />
Zr=c'*Z*c; //вычисление матрицы сопротивлений схемы;<br />
Yk=Zr(yzlov:arc, yzlov:arc)^(- 1); //вычисление матрицы контурных проводимостей<br />
//вычисление матриц взаимных сопротивлений узловых и контурных координат<br />
zok=Zr(1:yzlov-1,yzlov:arc); zko=Zr(yzlov:arc,1:yzlov-1);<br />
//вычисление узловых матриц сопротивлений<br />
zo =Zr(1:yzlov-1,1:yzlov-1); zor=zo-zok*Yk*zko;<br />
//вычисление контурных и узловых источников напряжений<br />
ek=er(yzlov:arc); eo=er(1:yzlov-1);<br />
//вычисление контурных и узловых источников тока<br />
Jk=Jr(yzlov:arc); Jo=Jr(1:yzlov-1);<br />
//вычисление контурных токов и узловых потенциалов<br />
ik=Yk*ek−Yk*zko*Jo-Jk; Uo=zor*Jo+zok*Yk*ek−eo;<br />
//вычисление токов и напряжений ветвей<br />
iv= c(1:arc,yzlov:arc)* ik; Uv= at(1:yzlov−1,1:arc)'* Uo;<br />
//вычисление суммарной мощности источников схемы<br />
P= J'* Uv // P= e'* iv<br />
Для того, что бы вывести в диалоговое окно нужный вектор или матрицу,<br />
достаточно заменить в конце соответствующего выражения точку<br />
с запятой на запятую.<br />
В приведенном алгоритме можно выделить следующие части:<br />
(1) Ввод данных;<br />
(2) Перевод введенных данных во внутреннюю форму;<br />
(3) Вычисления;<br />
77