ргр1
.docМинистерство образования РФ
ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ (ОМГТУ)
Кафедра
«Автоматизированные системы обработки информации и управления»
Расчетно-графическая работа
по курсу
«Электротехника и электроника»
|
Преподаватель |
|
Никонова Г. В. |
|
|
|
Разработал студент гр. Ас-212 Дударев А. В. |
|
|
|
|
|
|
Омск 2003
Аналитическое решение
Для последующего решения методом уравнений Кирхгофа расставим токи и зададим контуры тока на схеме, данной в задании, и отобразим это на рисунке 1.
R4 R6 I4
Рисунок 1 - Задание контуров обхода и токов в цепи
На основании схемы, показанной на рисунке 2, пользуясь Законом токов Кирхгофа и Законом напряжений Кирхгофа, принимая узел №4 за базовый, составим систему уравнений (1).
|
i1= i3+ i4; |
(1) |
i5= i2+ i3; |
||
i4= i6+ i2; |
||
i3R3+i5R5+i1R1-Uг1=0; |
||
i2R2-i3R3+i3R4+Uг1=0; |
||
i6R6-i5R5-i2R2-Uг2=0. |
Метод Гаусса основывается на методе замены переменных. Преобразуем полученную систему (1) в систему, пригодную для вычисления методом Гаусса (2).
|
i1+0i2+i3+i4+0i5+0i6 =0; |
(2) |
0i1+i2+i3+0i4-i5+0i6 =0; |
||
0i1+i2+0i3-i4+0i5+i6 =0; |
||
R1i1+0i2+R3i3+0i4+R5i5+0i6=U1; |
||
0i1+R2i2-R3i3+R4i4+0i5+0i6=-U2; |
||
0i1-R2i2+0i3+0i4-R5i5+R6i6=U2. |
Составим матрицу (3) на основании системы уравнений (2).
|
-1 |
0 |
1 |
1 |
0 |
0 |
0 |
|
(3) |
0 |
1 |
1 |
0 |
-1 |
0 |
0 |
|||
0 |
1 |
0 |
-1 |
0 |
1 |
0 |
|||
R1 |
0 |
R3 |
0 |
R5 |
0 |
U1 |
|||
0 |
R2 |
-R3 |
R4 |
0 |
0 |
-U2 |
|||
0 |
-R2 |
0 |
0 |
-R5 |
R6 |
U2 |
Подставим условия задания в матрицу (3).
R1=15 Ом; R2=100 Ом; R3=1000 Ом; R4=120 Ом R5=51 Ом; R6=2000 Ом; U1=1 В; U2=10 В, получим матрицу (4).
|
- i1 |
0 |
1 |
1 |
0 |
0 |
0 |
|
(4) |
|
0 |
1 |
1 |
0 |
-1 |
0 |
0 |
|
|
|
0 |
1 |
0 |
-1 |
0 |
1 |
0 |
|
|
|
15 |
0 |
1000 |
0 |
51 |
0 |
1 |
|
|
|
0 |
100 |
-1000 |
120 |
0 |
0 |
-10 |
|
|
|
0 |
-100 |
0 |
0 |
-51 |
2000 |
10 |
|
Для получения решения матрицы (4) была написаны программа на языке Delphi. Текст программы см. в приложении A.
В результате решения матрицы (4) методом Гаусса получаем ответы (5-10):
i1=-0,027836 А; i2=-0,033360 А; i3=0,002968 А; i4=-0,030803 А; i5=-0,030393 А; i6=0,002557 А. |
(5) (6) (7) (8) (9) (10) |
Знак «-» в ответах означает что я неправильно выбрал направление тока в схеме, показанной на рисунке 2. На основании этого утверждения можно сказать, что значения токов i1…i6 данной схемы равны токам (5-10) взятым по модулю.
Проверка решения
Проверку выполненного решения проведем, согласно заданию, с помощью ППП для моделирования схем MCAP.
Воспроизведя начальную схему, данную в задании, в MCAP 7.0 и произведя расчет токов в цепи, принимая узел № 4 за базовый, получим следующие данные (рисунок 2).
Рисунок 2 - Расчет токов в цепи, выполненный программой MCAP 7.0
Данная схема с помощью пакетом моделирования MCAP 7.0, и, как видно из рисунка 2, токи, полученные нами с помощью решения матрицы (4) примерно соответствуют численно токам, полученным в результате расчета программой MCAP: i1mcap=27,8358 мА; i2mcap =33,3603 мА; i3mcap =2,9676 мА; i4mcap =30,8034 мА; i5mcap =30,3928 мА; i6mcap =2,5570 мА.
Рассчитаем погрешность вычислений:
i1=i1-i1mcap=27,836-27,8358=0,0002
i2=i2-i2mcap=33,36-33,3603=-0,0003
i3=i3-i3mcap=2,968-2,9676=0,0004
i4=i4-i4mcap=30,803-30,8034=-0,0004
i5=i5-i5mcap=30,393-30,3928=0,0002
i6=i6-i6mcap=2,557-2,5570=0,0
Составим итоговую таблицу сравнения результатов.
Таблица 1 - Сравнение значений силы тока полученных разными методами расчета и расчет погрешностей
Ток |
Результат, полученный при расчете систем уравнений методом Гаусса (мА) |
Результат, полученный при расчете токов схемы в программе MCAP 7.0 (мА) |
Погрешность (i=Ii-Iimcap*100%) |
i1 |
27,836 |
27,8358 |
0,02 |
i2 |
33,36 |
33,3603 |
0,03 |
i3 |
2,968 |
2,9676 |
0,04 |
i4 |
30,803 |
30,8034 |
0,04 |
i5 |
30,393 |
30,3928 |
0,02 |
i6 |
2,557 |
2,5570 |
0,0 |
Столь малая погрешность обусловлена вычислением системы уравнений с помощью компьютера с точностью 10-3 для единицы измерения миллиампер.
Таким образом, решение, полученное мною, совпадает с решением пакета MCAP, и расчет токов в цепи выполнен правильно.
Приложение A
«Текст программы вычисления систем уравнений методом Гаусса»
{---ввод данных---}
procedure TForm1.Button4Click(Sender: TObject);
begin
SG1.Cells[0,0]:='-1'; // заполнение матрицы данными
SG1.Cells[1,0]:='0';
SG1.Cells[2,0]:='1';
SG1.Cells[3,0]:='1';
SG1.Cells[4,0]:='0';
SG1.Cells[5,0]:='0';
SG1.Cells[6,0]:='0';
SG1.Cells[0,1]:='0';
SG1.Cells[1,1]:='1';
SG1.Cells[2,1]:='1';
SG1.Cells[3,1]:='0';
SG1.Cells[4,1]:='-1';
SG1.Cells[5,1]:='0';
SG1.Cells[6,1]:='0';
SG1.Cells[0,2]:='0';
SG1.Cells[1,2]:='1';
SG1.Cells[2,2]:='0';
SG1.Cells[3,2]:='-1';
SG1.Cells[4,2]:='0';
SG1.Cells[5,2]:='1';
SG1.Cells[6,2]:='0';
SG1.Cells[0,3]:='15';
SG1.Cells[1,3]:='0';
SG1.Cells[2,3]:='1000';
SG1.Cells[3,3]:='0';
SG1.Cells[4,3]:='51';
SG1.Cells[5,3]:='0';
SG1.Cells[6,3]:='1';
SG1.Cells[0,4]:='0';
SG1.Cells[1,4]:='100';
SG1.Cells[2,4]:='-1000';
SG1.Cells[3,4]:='120';
SG1.Cells[4,4]:='0';
SG1.Cells[5,4]:='0';
SG1.Cells[6,4]:='-10';
SG1.Cells[0,5]:='0';
SG1.Cells[1,5]:='-100';
SG1.Cells[2,5]:='0';
SG1.Cells[3,5]:='0';
SG1.Cells[4,5]:='-51';
SG1.Cells[5,5]:='2000';
SG1.Cells[6,5]:='10';
end;
{---Метод Гаусса---}
procedure TForm1.Button2Click(Sender: TObject); // визуальное отображение матрицы на экране
var
max,x,free:Extended;
ii:Integer;
begin
Memo1.Lines.Clear;
Form2:=Tform2.create(self);
form2.SG2.Visible:=true;
form2.Button1.Visible:=false;
form2.Memo1.Visible:=false;
form2.SG2.RowCount:=SE1.Value;
form2.SG2.ColCount:=SE1.Value+1;
form2.SG2.Height:=30*SE1.Value;
form2.SG2.Width:=68*(1+SE1.Value);
for i:=1 to SE1.Value do // сортировка элементов матрицы, создание диагонали нулей.
for j:=1 to SE1.Value do
Matrix[i,j]:=strtofloat(SG1.Cells[j-1,i-1]);
for i:=1 to SE1.Value do
b[i]:=strtofloat(SG1.Cells[SE1.value,i-1]);
for j:=1 to SE1.Value-1 do
begin
k:=j;
max:=abs(Matrix[j,j]);
for i:=j to SE1.Value do
If abs(Matrix[i,j])>max then
begin
max:=abs(Matrix[i,j]);
k:=i;
end;
for i:=1 to SE1.Value do
begin
max:=Matrix[k,i];
Matrix[k,i]:=Matrix[j,i];
Matrix[j,i]:=max;
end;
free:=b[k];
b[k]:=b[j];
b[j]:=free;
for ii:=j+1 to SE1.Value do
begin
x:=-Matrix[ii,j]/Matrix[j,j];
b[ii]:=b[ii]+b[j]*x;
for i:=1 to SE1.Value do
begin
Matrix[ii,i]:=Matrix[ii,i]+Matrix[j,i]*x;
If abs(Matrix[ii,i])<1e-15 then Matrix[ii,i]:=0;
end;
end;
end;
for i:=1 to SE1.Value do
for j:=1 to SE1.Value do
begin // подстановка значений, расчет ответов
form2.SG2.Cells[j-1,i-1]:=floattostr(Matrix[i,j]);
form2.SG2.Cells[SE1.Value,i-1]:=floattostr(b[i]);
end;
for i:=1 to SE1.Value do answer[i]:=0;
for i:=SE1.Value downto 1 do
begin
for j:=1 to SE1.Value do
b[i]:=b[i]-Matrix[i,j]*answer[j];
answer[i]:=b[i]/Matrix[i,i];
end;
For j:=1 to SE1.Value do
begin
for i:=1 to SE2.Value+1 do
answer[j]:=answer[j]*10;
answer[j]:=round(answer[j]);
for i:=1 to SE2.Value+1 do
answer[j]:=answer[j]/10;
end;
for i:=1 to SE1.Value do
memo1.Lines.Add(floattostrf(answer[i],ffFixed,18,SE2.Value));
end;
end.