Добавил:
LuPuS
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:3 семестр / Лабораторные работы компьютерные / 2 лаба / код / cod_LR1
.mclc
clear all
%% Ввод личных данных
gr = 14; % Введите номер группы
br = 10; % Введите номер бригады
fprintf(' Группа № %2.0f \n Бригада № %2.0f \n', gr, br)
%% Задайте Т-список в формате [1;2;3]
begin_nodes = [2;1;6;3;4;6;5;]; % Пример [4;1;1;2;3;3...]
end_nodes = [1;3;2;6;3;5;4;]; % Пример [1;4;2;3;2;4...]
Gv = [1;2.2;1;1;1;1;2];% Пример [1;1;2.2;0;2...]
Jv = [1;0;0;0;0;0;1];% Пример [1;0;0;0;2.2...]
N = length(Gv);
branch = (linspace(1,N,N))';
table(branch, begin_nodes, end_nodes,Gv, Jv)
%% Формирование расширенных (полных) матрицы узловых проводимостей и %вектора задающих токов
m=max(max(begin_nodes),max(end_nodes)); %всего узлов
N=length(Gv); %всего ветвей
% Вывод Т-списка
branch = (linspace(1,N,N))';
table(branch, begin_nodes, end_nodes,Gv, Jv)
%-------------------------------------------------------------------------
% введите размерность матриц Gp и Jp
%-------------------------------------------------------------------------
Gp = zeros(m,m); % см. описание
Jp = zeros(m,1); % см. описание
Ap = zeros(m,N); % см. описание
for i=1: N; % сколько раз должен отработать цикл for?
k=begin_nodes(i);
l=end_nodes(i);
%-------------------------------------------------------------------------
% введите выражение для пошагового расчета матрицы узловых проводимостей,
% вектора задающих токов, матрицы соединений
%-------------------------------------------------------------------------
Gp(k,k) = Gp(k,k)+Gv(i);
Gp(l,l) = Gp(l,l)+Gv(i);
Gp(k,l) = Gp(k,l)-Gv(i);
Gp(l,k) = Gp(l,k)-Gv(i);
Jp(k) = Jp(k)-Jv(i);
Jp(l) = Jp(l)+Jv(i);
Ap(k,i) = 1;
Ap(l,i) = -1;
end
%% Удаление строки и столбца последнего узла (базисного)
G=Gp;
G(m,:)=[];
G(:,m)=[];
J=Jp;
J(m,:)=[];
A=Ap;
A(m,:)=[];
G
J
A
%% Решение
%-------------------------------------------------------------------------
% выражение для расчета узловых напряжений
%-------------------------------------------------------------------------
U = G^(-1)*J;
%-------------------------------------------------------------------------
% выражение для расчета токов ветвей
%-------------------------------------------------------------------------
I = diag(Gv)*A'*U+Jv;
%-------------------------------------------------------------------------
% вывод результатов в командное окно
%-------------------------------------------------------------------------
fprintf('\nРасчёт потенциалов:\n\n');
for i=1:length(U)
fprintf('fi%1.0f = %0.3f В\n',i,U(i))
end
fprintf('\n\nРасчёт токов:\n\n');
for i=1:length(I);
fprintf('I%1.0f = %0.3f A\n',i,I(i))
end