Расчет электрической цепи в Матлаб и Simulink
В курсовой работе рассчитываются токи в электрической цепи методом узловых потенциалов и методом контурных токов, вычисляются напряжения на элементах, находится ток через r4 методом эквивалентного генератора тока, проверяется баланс мощностей и строятся векторные диаграммы токов в узле и напряжений в контуре.
В Simulink моделируются электрические цепи тремя способами: с блоком PowerGui, с блоком Multimeter и с использованием Амперметров, Вольтметров.
Введение
Очень сложно представить современную жизнь без электрических приборов. Для того, чтобы проектировать и использовать электрические цепи, необходимо уметь рассчитывать ее параметры, а именно, токи и напряжения. Инженерное дело, как область интеллектуальной деятельности человека, не может быть реализовано без математического аппарата. [1] Благодаря этому значительно упрощается процесс длительных расчетов, увеличивается эффективность инженерной деятельности.
При расчете электрических цепей часто мы сталкиваемся с решением сложных систем линейных уравнений, приходится работать с комплексными числами. Рассмотрим, как поможет решить эти проблемы среда Matlab, какие различные методы решения мы сможем реализовать с помощью этой среды. Также интерес представляет Simulink, который позволяет самим создавать интерактивные схемы цепей. Попробуем построить модель электрической цепи из основных блоков SimScape и сравнить результаты, полученные этими двумя инструментами.
Глава 1. Расчет электрической цепи в matlab
Задание содержит 5 пунктов, в первых двух необходимо рассчитать токи и напряжения во всех ветвях методом узловых потенциалов(МУП) и методом контурных токов(МКТ), в третьем необходимо рассчитать ток через r4, используя метод эквивалентного генератора тока, в четвертом проверить баланс мощностей и в пятом построить векторные диаграммы токов в узле и напряжений в контуре.
Исходные данные:
E1=sqrt(-1)*25 ;
I1=2;
r2=5;
E3=40;
I2=sqrt(-1)*2;
r4=30;
C2=200e-6;
L3=20e-3;
w=500;
ishod_dan = [ E1; I1 ; r2; E3; I2; r4; C2; L3; w];
disp('Ishodnie dannie:')
disp( 'E1=; I1=; r2=; E3=; I2=; r4=; C2=; L3=; w=');
disp(vpa(ishod_dan),6);
Результат:
Ishodnie dannie:
E1=; I1=; r2=; E3=; I2=; r4=; C2=; L3=; w=
25.0i
2.0
5.0
40.0
2.0i
30.0
0.0002
0.02
500.0
1.1.2 Метод узловых потенциалов
Рассчитаем сопротивления на заданной частоте:
rC2=-sqrt(-1)/(w*C2);
rL3=sqrt(-1)*w*L3;
Обозначим узлы в цепи (рис.1.1).
За базисный узел мы принимаем узел 0. И составляем систему линейных алгебраических уравнений для первого и второго потенциалов.
Составляем матрицу токов(J) и проводимости(Y):
Y = [1/r4+1/rL3,-1/rL3;-1/rL3,1/rL3+1/(r2+rC2)];
J = [(-I1-E3/rL3+E1/r4) ; (-I2+E3/rL3)];
Если A - матрица размера nхn, а B – вектор-столбец с n компонентами или матрица с несколькими подобными столбцами, тогда X=A\B – решение уравнения AX=B, которое находится методом Гаусса [2].
fi=Y\J;
Еще один метод, которым можно решить систему – этот метод обратной матрицы:
fi=inv(Y)*J;
Результат:
Решаем методом Гаусса:
-60.0000 - 5.0000i
-10.0000 - 5.0000i
Решаем систему методом обратной матрицы:
-60.0000 - 5.0000i
-10.0000 - 5.0000i
Теперь определяем токи в ветвях по закону Ома:
I=[(fi(2))/(r2+rC2),(fi(2))/(r2+rC2),(fi(1)-fi(2)+E3)/(rL3),(fi1-fi(1))/(r4)];
где fi1=E1;
Напряжения:
R=[r2,rC2,rL3,r4];
U=I.*R;
MUP:
I:
-0.0000 - 1.0000i
-0.0000 - 1.0000i
-0.0000 + 1.0000i
2.0000 + 1.0000i
U:
-0.0000 - 5.0000i
-10.0000 + 0.0000i
-10.0000 - 0.0000i
60.0000 +30.0000i
Сравним время выполнения решения системы методом гаусса и методом обратной матрицы :
disp('Gauss method:');
tic
fi = Y\ J;
toc
disp('Inverse matrix method:');
tic
fix=inv(Y)*J;
toc
Результат:
Inverse matrix method:
Elapsed time is 0.443826 seconds.
Gauss method:
Elapsed time is 0.023847 seconds.
Система метод обратной матрицы выполняет медленнее чем метод Гаусса.
Посмотрим разницу вычислений между 2 этими методами:
delta_Gauss.inv=fi(1)-fix(1);
disp('delta tokov raznih metodov:');
disp(delta_Gauss.inv);
Результат:
delta tokov raznih metodov:
1.0e-13 *
0.2132 + 0.0977i
0.0533 + 0.0711i
Снова можно заметить, что значения токов, полученные через разные методы решения СЛАУ можно считать одинаковыми, потому что разность представляет собой значение близкое к нулю.
За основные неизвестные величины в методе контурных токов принимают контурные токи, которые замыкаются по независимым контурам. Контурные токи находим, решая систему уравнений, составленную по второму закону Кирхгофа для каждого контура. По нaйденым контурным токам определяем токи ветвей схемы.
Зададимся направлением токов ветвей и обозначим их на схеме рис. 1.2. Определяем независимые контура и выбираем направления контурных токов Y, I1, I2. Так как в схеме имеются ветви, содержащая источники тока I1, I2, контурный ток I1 = I1, I2=I2, чтобы найти контурный ток Y:
r=rL3+r4+r2+rC2;
E=E1-I1*r4-I2*(rL3+r4)+E3;
Методом Гаусса:
Yg=r\E;
Методом обратной матрицы:
Yom=inv(r)*E;
Методом решения напрямую:
Yn=(-I1*r4-I2*(XL3+r4)+E1+E3)/(XL3+r4+r2+XC2);
Теперь определяем токи в ветвях:
i1=I1+Y;
I_k=[Y, Y, Y+I2, Y+I2+I1];
Посмотрим разницу между методом контурных токов и методом обратной матрицы:
delta_MUP.MKT=I-I_k;
disp('delta MUP_MKT:');
disp(delta_MUP.MKT);
Результат:
delta_MUP.MKT:
1.0e-15 *
-0.0711 - 0.2220i
-0.0711 - 0.2220i
-0.0888 - 0.6661i
-0.2220 + 0.0000i
Видно, что результат получается одинаковым в обоих случаях, так как разность полученных разными методами значений тока представляет собой величину близкую к нулю. Значит расчет электрической цепи не зависит от выбранного метода.
Полная мощность источника энергии:
P1=-fi(1)*conj(I1);
P2=(E1-fi(2))*conj(I2);
Pe1=conj(i1)*E1;
Pe3=conj(I(3))*E3;
PA=P1+P2+Pe1+Pe3;
Полная мощность нагрузки:
Pr2=I(1)*conj(I(1))*R(1);
Pc2=I(2)*conj(I(2))*R(2);
Pl3=I(3)*conj(I(3))*R(3);
Pr4=I(4)*conj(I(4))*R(4);
PP=Pr2+Pr4+Pc2+Pl3;
Результат:
power balance:
-2.8422e-14 - 4.6185e-14i
Полученное значение можно считать равным нулю, то токи в ветвях найдены верно.
1.1.5 Векторные диаграммы токов в узле I и напряжений в контуре II
Будем использовать функцию compass() для построения векторных диаграмм токов в узле I и напряжений на контуре II . Команда compass() изображает на полярной сетке векторы, выходящие из начала координат. Расположение наконечника каждой стрелки относится к основанию, определяемому действительной и мнимой компонентами напряжений и токов. Для того чтобы векторы не выходили за диаграмму необходимо пронормировать их, найдя максимальный вектор из массива. Затем каждый элемент массива поделить на модуль максимального вектора. С помощью функции set можно каждому вектору задать цвет. Чтобы подписать оси и озаглавить диаграммы , используем функцию text. Для того чтобы убрать лишние цифры использовали delete. Векторные диаграммы для токов в узле I и напряжений в контуре II:
f1=figure(1);
maxIm=max([i1,I2,I(4)]);
a=compass([i1/abs(maxIm),I2/abs(maxIm),I(4)/abs(maxIm)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
n=['r','g','b'];
for i=1:length(a)
set(a(i),'color', n(i));
end
text(-0.16,0.3,'I2','color','g');
text(0.26,-0.3,'i1','color','r');
text(0.26,0.3,'I4','color','b');
text(-0.2,1.25,'Токи в узле I');
f2=figure(2);
maxU=max([E3,U(1),U(4),E1,U(3),U(2)]);
b=compass([E3/abs(maxU), U(1)/abs(maxU),U(4)/abs(maxU),E1/abs(maxU),U(3)/abs(maxU),U(2)/abs(maxU)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
c=['m', 'k', 'c', 'b', 'g', 'r'];
for i=1:length(b)
set(b(i),'color', c(i));
end
text(-0.15,0.25,'E1','color','b');
text(-0.26,0.1,'UC2','color','r');
text(0.4,0.40,'Ur4','color','c');
text(-0.2,-0.08,'UL3','color','g');
text(0,-0.10,'Ur2','color','k');
text(0.4,-0.10,'E3','color','m');
text(-0.35,1.3,'Напряжения в контуре II');
1.2 Расчёт электрической цепи с использованием символьных вычислений
Составляем систему уравнений с неизвестными переменными Fi2 и Fi3.
syms fi2 fi3
clear w;
syms w
rC2=-sqrt(-1)/(w*C2);
rL3=sqrt(-1)*w*L3;
Y=[1/r4+1/rL3;-1/rL3;1/rL3+1/(r2+rC2)];
J=[(-I1-E3/rL3+E1/r4) ; (-I2+E3/rL3)];
f1=fi2*Y(1)+fi3*Y(2)+I1+E3/rL3-E1/r4;
f2=fi2*Y(2)+fi3*Y(3)+I2-E3/rL3;
s=solve(f1,f2,fi2,fi3);
disp('Naidem zavisimost porentiala 2 ot w=const');
disp(s.fi2);
delta_sym=fi(2)-subs(s.fi3, w, 500);
disp('delta_sym:')
disp(delta_sym);
С помощью функции solve() находим потенциалы узлов.
Найдем разницу между fi, который нашли в 1.1.2 и полученным с использованием символьных вычислений:
Результат:
delta_sym:
0
Найдем зависимость значений узловых потенциалов от произвольно выбранного зафиксированного параметра (частоты):
Результат:
Naidem zavisimost porentiala 2 ot w=const
-(5*(w^2*(5 + 12i) + w*(15000 + 1750i) + (1750000 - 3000000i)))/(w^2*1i + 1750*w - 250000i)
Построим график зависимости модулей узловых потенциалов от частоты (рис.1.5):
x = 0:10:600;
subplot(1,2,1)
plot(x,(abs(subs(s.fi2,w,x))));
hold on;
plot(500,abs(subs(s.fi2,w,500)),'*r');
grid on;
ylabel('abs(fi2)');xlabel('w');
subplot(1,2,2)
plot(x,(abs(subs(s.fi3,w,x))));
hold on;
plot(500,abs(subs(s.fi3,w,500)),'*r');
grid on;
ylabel('abs(fi3)');xlabel('w');
1.3 Реализация функций
1.3.1 Метод узловых потенциалов
Создаем функцию для расчёта тока и напряжения, входными параметрами которой являются исходные данные:
function [fi,toki]=calculation_current_fi(ishod_dan)
rC2=-sqrt(-1)/(ishod_dan(9)*ishod_dan(8));
rL3=sqrt(-1)*ishod_dan(9)*ishod_dan(4);
Y = [1/ishod_dan(7)+1/rL3,-1/rL3;-… 1/rL3,1/rL3+1/(ishod_dan(3)+rC2)];
J = [(-ishod_dan(2)-… ishod_dan(5)/rL3+ishod_dan(1)/ishod_dan(7)) ;(-… ishod_dan(6)+ishod_dan(5)/rL3)];
[fi] = Y\ J;
r=rL3+ishod_dan(7)+ishod_dan(3)+rC2;
E=ishod_dan(1)-ishod_dan(2)*ishod_dan(7)-… ishod_dan(6)*(rL3+ishod_dan(7))+ishod_dan(5);
Y=r\E;
i1=ishod_dan(2)+Y; toki=[(fi(2))/(ishod_dan(3)+rC2),(fi(2))/(ishod_dan(3)… +rC2) ,(fi(1)-fi(2)+ishod_dan(5))/(rL3),(ishod_dan(1)… -fi(1))/(ishod_dan(7)) , ishod_dan(2)+Y];
fi=[fi(1),fi(2)];
end
На выходе две матрицы (ток и потенциал):
toki=[(fi(2))/(ishod_dan(3)+rC2),(fi(2))/(ishod_dan(3)… +rC2) ,(fi(1)-fi(2)+ishod_dan(5))/(rL3),(ishod_dan(1)… -fi(1))/(ishod_dan(7)) , ishod_dan(2)+Y];
fi=[fi(1),fi(2)];
end
Создаём функцию для проверки баланса мощностей, входными параметрами которой являются исходные значения, токи и потенциалы
function [P] = power_balance(ishod_dan,toki,fi)
Проверяем баланс мощностей:
rC2=-sqrt(-1)/(ishod_dan(9)*ishod_dan(8));
rL3=sqrt(-1)*ishod_dan(9)*ishod_dan(4);
pi1=-fi(1)*conj(ishod_dan(2));
pi2=(ishod_dan(1)-fi(2))*conj(ishod_dan(6));
pe1=conj(toki(5))*ishod_dan(1);
pe3=conj(toki(3))*ishod_dan(5);
pr2=toki(1)*conj(toki(1))*ishod_dan(3);
pc2=toki(2)*conj(toki(2))*rC2;
pl3=toki(3)*conj(toki(3))*rL3;
pr4=toki(4)*conj(toki(4))*ishod_dan(7);
PA=pi1+pi2+pe1+pe3;
PP=pr2+pr4+pc2+pl3;
P=PP-PA;
На выходе разность между мощностью источника энергии и нагрузки.
1.3.3 Векторные диаграммы токов в узле I и напряжений в контуре II
Создаём функцию, которая будет выводить векторные диаграммы на экран.
function [a,b] = Diagram(ishod_dan,toki)
f1=figure(1);
rC2=-sqrt(-1)/(ishod_dan(9)*ishod_dan(8));
rL3=sqrt(-1)*ishod_dan(9)*ishod_dan(4);
maxIm=max([toki(5),ishod_dan(6),toki(4)]);
a=compass([toki(5)/abs(maxIm),ishod_dan(6)/abs(maxIm),toki(4)/abs(maxIm)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
n=['r','g','b'];
for i=1:length(a)
set(a(i),'color', n(i));
end
text(-1.3,0,'------I2','color','g');
text(-1.3,0.2,'------i1','color','r');
text(-1.3,-0.2,'------I4','color','b');
text(-0.2,1.2,'Токи в узле I');
f2=figure(2);
R=[ishod_dan(3),rC2,rL3,ishod_dan(7)];
I=toki(1:4);
U=I.*R;
maxU=max([ishod_dan(5),U(1),U(4),ishod_dan(1),U(3),U(2)]);
b=compass([ishod_dan(5)/abs(maxU), U(1)/abs(maxU),U(4)/abs(maxU),ishod_dan(1)/abs(maxU),U(3)/abs(maxU),U(2)/abs(maxU)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
c=['m', 'k', 'c', 'b', 'g', 'r'];
for i=1:length(b)
set(b(i),'color', c(i));
end
text(-1.4,0,'------E1','color','b');
text(-1.4,0.2,'------UC2','color','r');
text(-1.4,-0.2,'------Ur4','color','c');
text(-1.4,-0.4,'------UL3','color','g');
text(-1.4,0.4,'------Ur2','color','k');
text(-1.4,0.6,'------E3','color','m');
text(-0.4,1.3,'Напряжения в контуре II');
end
1.4 Вызов функций с различными входными параметрами
Тестирование с исходными параметрами:
[ishod_dan]=[sqrt(-1)*25,2,5,20e-3,40,sqrt(-… 1)*2,30,200e-6,500];
[fi,toki]=calculation_current_fi(ishod_dan);
d=[fi,toki]';
disp(d)
P=power_balance(ishod_dan,toki,fi)
Diagram(ishod_dan,toki);
Результат:
-60.0000 + 5.0000i
-10.0000 + 5.0000i
-0.0000 + 1.0000i
-0.0000 + 1.0000i
-0.0000 - 1.0000i
2.0000 - 1.0000i
2.0000 + 1.0000
P =
-2.8422e-14 - 4.6185e-14i
Рис. 1.6. Векторная диаграмма при тестировании функции для исходных данных
Рис. 1.7. Векторная диаграмма при тестировании функции для исходных данных
[ishod_dan]=[1,2,3,30e-3, sqrt(-1)*80,1,30,200e-… 6,500];
[fi,toki]=calculation_current_fi(ishod_dan);
d=[fi,toki]';
disp(d)
P=power_balance(ishod_dan,toki,fi)
Diagram(ishod_dan,toki);
Результат:
-18.6589 +69.7487i
16.2154 -30.4219i
-2.3447 - 2.3250i
-2.3447 - 2.3250i
-1.3447 - 2.3250i
0.6553 - 2.3250i
-0.3447 - 2.3250i
P =
-8.5265e-14 - 1.5632e-13i
Глава 2. Расчет электрической цепи в simulink
2.1 Схема электрической цепи с использованием блока PowerGui
Для того, чтобы задать параметры Е1 и I2, которые заданы в комплексной форме, необходимо записать их через фазу и амплитуду по формуле (2.1).
, (2.1)
где - амплитуда, а - фаза.
Покажем, как записать I2=2*j. По формуле (2.1): I2=2(cos(pi/2)+j*sin(pi/2))=2(0+j)=2j. Получаем, что 2 – амплитуда, а pi/2 – фаза.
Режим Steady-State позволяет выполнить расчет схемы на постоянном токе. Расчет производится для состояния схемы в момент времени t =0. В этом режиме расчета в окне блока Powergui отображаются значения переменных состояния модели, а также измеряемых переменных источников и нелинейных элементов. Расчет проводится для частоты источников схемы. При расчете на переменном напряжении будут показаны также фазовые сдвиги соответствующих переменных. [3]
Полученные данные в PowerGui – это амплитуды и фазы сигналов в тригонометрическом виде, чтобы перевести их в алгебраический вид, нужно воспользоваться формулой Эйлера (2.1).
Рассчитаем напряжение Ur2 по формуле (2.1):
cos(-90°)=0, sin(-90°)=-1
Подставляем в формулу (2.1): Ur2=0-1*j. Полученное значение сходится с значением полученном в MATLAB.
2.2 Схема электрической цепи с использованием блока Multimeter
Прежде чем запустить Simulink, нужно настроить Multimeter для вывода значений напряжений и токов. (рис.2.2) После получения результатов, можно вывести их на цифровой дисплей, как и показано на рисунке (2.3). Multimeter выполняет измерение токов и напряжений блоков библиотеки SimPowerSystem, для которых в их окне диалога установлен параметр Measurements (измеряемые переменные).
2.3 Cхема электрической цепи с использованием Амперметров, Вольтеметров
На рисунке 2.3 показан вывод токов и напряжений с использованием Вольтметров и Амперметров.
Для измерения мгновенного значения напряжения между двумя узлами схемы используем Voltage Measurement. Current Measurement выполняет измерение мгновенного значения тока, протекающего провод.
Результаты, полученные в данной модели совпадают с результатами, полученными ранее.
2.4 Сравнение расчётов в Simulink и Matlab
В модели Simulink с помощью блока To Workspace полученные результаты выводятся в Matlab в отдельные матрицы.
Сравним значения из Simulink с полученными ранее в Matlab:
deltac_sim.matlab=I(1)-current(1);
disp('deltac_sim.matlab:');
disp(deltac_sim.matlab);
deltav_sim.matlab=U(1)-voltage(1);
disp('deltav_sim.matlab:');
disp(deltav_sim.matlab);
Результат:
deltac_sim.matlab:
-7.1054e-17 - 3.3307e-16i
deltav_sim.matlab:
-3.5527e-16 - 1.7764e-15i
Заключение
В ходе данной работы была рассчитана электрическая цепь в Matlab и разработана её модель в Simulink. В результате сравнения значений, полученных в MATLAB и Simulink было выявлено, что расхождение результатов пренебрежимо мало (различие в 16 знаке), что говорит о том, что расчеты проведены верно.
В результате решения системы линейных уравнений двумя методами оказалось, что при помощи метода Гаусса программа работает эффективнее, так как решение СЛАУ программа выполняет быстрее.
Преимуществом Simulink является простота использования, он позволяет визуально видеть результат и не углубляться в язык программирования.
Список использованных источников
1.Агафонов М.В. РАСЧЕТ ЭЛЕКТРИЧЕСКИХ ЦЕПЕЙ С ИСПОЛЬЗОВАНИЕМ МАТРИЦЫ И ЕЕ ДЕТЕРМИНАНТА //Молодежный научный форум: Технические и математические науки: электр. сб. ст. по мат. XIII междунар. студ. науч.-практ. конф. № 6(13). URL: https://nauchforum.ru/archive/MNF_tech/6(13).pdf (дата обращения: 12.12.2018)
2.Зайцев Э.Ф., Черепанов А.С., Ферсман Г.Ф. Электротехника и электроника. Теория электрических цепей. Ч.1: Учеб.пособие. СПб.: изд. СПбГПУ,2002 .204с.
3. Черных И.В. Моделирование электрических устройств в MATLAB, SimPowerSystems и Simulink, 2008 – изд. Питер, -288с.
ПРИЛОЖЕНИЕ 1
ПРИЛОЖЕНИЕ 2
%% 1.Рассчитать токи во всех ветвях методом узловых потенциалов.
E1=sqrt(-1)*25 ;
I1=2;
r2=5;
E3=40;
I2=sqrt(-1)*2;
r4=30;
C2=200e-6;
L3=20e-3;
w=500;
ishod_dan = [ E1; I1 ; r2; E3; I2; r4; C2; L3; w];
disp('Ishodnie dannie:')
disp( 'E1=; I1=; r2=; E3=; I2=; r4=; C2=; L3=; w=');
disp(vpa(ishod_dan),6);
rC2=-sqrt(-1)/(w*C2);
rL3=sqrt(-1)*w*L3;
fi1=E1;
Y = [1/r4+1/rL3,-1/rL3;-1/rL3,1/rL3+1/(r2+rC2)];
J = [(-I1-E3/rL3+E1/r4) ; (-I2+E3/rL3)];
disp('Inverse matrix method:');
tic
% метод обратной матрицы
fix=inv(Y)*J;
toc
disp('Gauss method:');
tic
% метод Гаусса
fi = Y\ J;
toc
delta_gauss.inv=fi-fix;
disp('delta tokov raznih metodov:');
disp(delta_gauss.inv);
I=[(fi(2))/(r2+rC2),(fi(2))/(r2+rC2),(fi(1)-fi(2)+E3)/(rL3),(fi1-fi(1))/(r4)];
R=[r2,rC2,rL3,r4];
U=I.*R;
disp('M.U.P:');
disp('I:');
disp(I.');
disp('U:');
disp(U.');
%% 2. Рассчитать токи во всех ветвях методом контурных токов.
r=rL3+r4+r2+rC2;
E=E1-I1*r4-I2*(rL3+r4)+E3;
% метод Гаусса
Yg=r\E;
% метод напрямую
Yn=(-I1*r4-I2*(rL3+r4)+E1+E3)/(rL3+r4+r2+rC2);
% метод обратной матрицы
Yom=inv(r)*E;
delta_metod=Yg-Yn;
disp('delta_metod:');
disp(delta_metod);
i1=I1+Yg;
I_k=[Yg, Yg, Yg+I2, Yg+I2+I1];
delta_MUP.MKT=I-I_k;
disp('delta MUP_MKT:');
disp(delta_MUP.MKT);
%% 3.Составить баланс мощностей.
pi1=-fi(1)*conj(I1);
pi2=(E1-fi(2))*conj(I2);
pe1=conj(i1)*E1;
pe3=conj(I(3))*E3;
pr2=I(1)*conj(I(1))*R(1);
pc2=I(2)*conj(I(2))*R(2);
pl3=I(3)*conj(I(3))*R(3);
pr4=I(4)*conj(I(4))*R(4);
PA=pi1+pi2+pe1+pe3;
PP=pr2+pr4+pc2+pl3;
P=PP-PA;
disp('power balance:');
disp(P)
%% 4.Построить в масштабе векторные диаграммы
f1=figure(1);
maxIm=max([i1,I2,I(4)]);
a=compass([i1/abs(maxIm),I2/abs(maxIm),I(4)/abs(maxIm)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
n=['r','g','b'];
for i=1:length(a)
set(a(i),'color', n(i));
end
text(-0.16,0.3,'I2','color','g');
text(0.26,-0.3,'i1','color','r');
text(0.26,0.3,'I4','color','b');
text(-0.2,1.25,'Токи в узле I');
%%
f2=figure(2);
maxU=max([E3,U(1),U(4),E1,U(3),U(2)]);
b=compass([E3/abs(maxU),… U(1)/abs(maxU),U(4)/abs(maxU),E1/abs(maxU),U(3)/abs… (maxU),U(2)/abs(maxU)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
m = b(1);
c=['m', 'k', 'c', 'b', 'g', 'r'];
for i=1:length(b)
set(b(i),'color', c(i));
end
text(-0.15,0.25,'E1','color','b');
text(-0.26,0.1,'UC2','color','r');
text(0.4,0.40,'Ur4','color','c');
text(-0.2,-0.08,'UL3','color','g');
text(0,-0.10,'Ur2','color','k');
text(0.4,-0.10,'E3','color','m');
text(-0.35,1.3,'Напряжения в контуре II');
ПРИЛОЖЕНИЕ 3
syms fi2 fi3
E1=sqrt(-1)*25 ;
I1=2;
r2=5;
E3=40;
I2=sqrt(-1)*2;
r4=30;
C2=200e-6;
L3=20e-3;
clear w;
syms w
rC2=-sqrt(-1)/(w*C2);
rL3=sqrt(-1)*w*L3;
Y=[1/r4+1/rL3;-1/rL3;1/rL3+1/(r2+rC2)];
J=[(-I1-E3/rL3+E1/r4) ; (-I2+E3/rL3)];
f1=fi2*Y(1)+fi3*Y(2)+I1+E3/rL3-E1/r4;
f2=fi2*Y(2)+fi3*Y(3)+I2-E3/rL3;
s=solve(f1,f2,fi2,fi3);
disp('Naidem zavisimost porentiala 2 ot w=const');
disp(s.fi2);
delta_sym=fi(2)-subs(s.fi3, w, 500);
disp('delta_sym:')
disp(delta_sym);
x = 0:10:600;
subplot(1,2,1)
plot(x,(abs(subs(s.fi2,w,x))));
hold on;
plot(500,abs(subs(s.fi2,w,500)),'*r');
grid on;
ylabel('abs(fi2)');xlabel('w');
subplot(1,2,2)
plot(x,(abs(subs(s.fi3,w,x))));
hold on;
plot(500,abs(subs(s.fi3,w,500)),'*r');
grid on;
ylabel('abs(fi3)');xlabel('w');
ПРИЛОЖЕНИЕ 4
function [fi,toki]=calculation_current_fi(ishod_dan)
rC2=-sqrt(-1)/(ishod_dan(9)*ishod_dan(8));
rL3=sqrt(-1)*ishod_dan(9)*ishod_dan(4);
Y = [1/ishod_dan(7)+1/rL3,-1/rL3;-1/rL3,1/rL3+1/(ishod_dan(3)+rC2)];
J = [(-ishod_dan(2)-… ishod_dan(5)/rL3+ishod_dan(1)/ishod_dan(7)) ;…
(-ishod_dan(6)+ishod_dan(5)/rL3)];
[fi] = Y\ J;
r=rL3+ishod_dan(7)+ishod_dan(3)+rC2;
E=ishod_dan(1)-ishod_dan(2)*ishod_dan(7)-… ishod_dan(6)*(rL3+ishod_dan(7))+ishod_dan(5);
Y=r\E;
i1=ishod_dan(2)+Y;
toki=[(fi(2))/(ishod_dan(3)+rC2),(fi(2))/(ishod_dan(3)…+rC2) ,(fi(1)-fi(2)+ishod_dan(5))/(rL3),(ishod_dan(1)-… fi(1))/(ishod_dan(7)) , ishod_dan(2)+Y];
fi=[fi(1),fi(2)];
end
function [P] = power_balance(ishod_dan,toki,fi)
rC2=-sqrt(-1)/(ishod_dan(9)*ishod_dan(8));
rL3=sqrt(-1)*ishod_dan(9)*ishod_dan(4);
pi1=-fi(1)*conj(ishod_dan(2));
pi2=(ishod_dan(1)-fi(2))*conj(ishod_dan(6));
pe1=conj(toki(5))*ishod_dan(1);
pe3=conj(toki(3))*ishod_dan(5);
pr2=toki(1)*conj(toki(1))*ishod_dan(3);
pc2=toki(2)*conj(toki(2))*rC2;
pl3=toki(3)*conj(toki(3))*rL3;
pr4=toki(4)*conj(toki(4))*ishod_dan(7);
PA=pi1+pi2+pe1+pe3;
PP=pr2+pr4+pc2+pl3;
P=PP-PA;
end
function [a,b] = Diagram(ishod_dan,toki)
f1=figure(1);
rC2=-sqrt(-1)/(ishod_dan(9)*ishod_dan(8));
rL3=sqrt(-1)*ishod_dan(9)*ishod_dan(4);
maxIm=max([toki(5),ishod_dan(6),toki(4)]);
a=compass([toki(5)/abs(maxIm),ishod_dan(6)/abs(maxIm),toki(4)/abs(maxIm)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
n=['r','g','b'];
for i=1:length(a)
set(a(i),'color', n(i));
end
text(-1.3,0,'------I2','color','g');
text(-1.3,0.2,'------i1','color','r');
text(-1.3,-0.2,'------I4','color','b');
text(-0.2,1.2,'Токи в узле I');
f2=figure(2);
R=[ishod_dan(3),rC2,rL3,ishod_dan(7)];
I=toki(1:4);
U=I.*R;
maxU=max([ishod_dan(5),U(1),U(4),ishod_dan(1),U(3)…
,U(2)]);
b=compass([ishod_dan(5)/abs(maxU),… U(1)/abs(maxU),U(4)/abs(maxU),ishod_dan(1)/abs(maxU)…
,U(3)/abs(maxU),U(2)/abs(maxU)]);
delete(findall(gcf,'type','text'));
text(1.1,0,'1');
text(0,1.1,'i');
set(gcf, 'Color', 'w');
c=['m', 'k', 'c', 'b', 'g', 'r'];
for i=1:length(b)
set(b(i),'color', c(i));
end
text(-1.4,0,'------E1','color','b');
text(-1.4,0.2,'------UC2','color','r');
text(-1.4,-0.2,'------Ur4','color','c');
text(-1.4,-0.4,'------UL3','color','g');
text(-1.4,0.4,'------Ur2','color','k');
text(-1.4,0.6,'------E3','color','m');
text(-0.4,1.3,'Напряжения в контуре II');
end
ПРИЛОЖЕНИЕ 5
[ishod_dan]=[sqrt(-1)*25,2,5,20e-3,40,sqrt(-1)*2,30,200e-6,500];
[ishod_dan]=[1,2,3,30e-3, sqrt(-1)*80,1,30,200e-6,500];
[fi,toki]=calculation_current_fi(ishod_dan);
d=[fi,toki]';
disp(d)
P=power_balance(ishod_dan,toki,fi)
Diagram(ishod_dan,toki);
%%
deltac_sim.matlab=I(1)-current(1);
disp('deltac_sim.matlab:');
disp(deltac_sim.matlab);
deltav_sim.matlab=U(1)-voltage(1);
disp('deltav_sim.matlab:');
disp(deltav_sim.matlab);
Комментарии