ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 94
Скачиваний: 10
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
14 30.
double
R4 = storage[3].value;
31.
double
E = storage[4].value;
32.
double
L = storage[5].value;
33.
double
C = storage[6].value;
34.
35. m_Factor factor;
// Make an object of structure m_Factor
36. factor.A11 = -1/(C*(R2+R3));
37. factor.A12 = R2/(C*(R2+R3));
38. factor.B1 = E/(C*(R2+R3));
39. factor.A21 = -(R1*R2 + R2*R4)/((R1*R2+R1*R3+R2*R4+R3*R4)*L);
40. factor.A22 = -(R1*R2*R3+R1*R2*R4+R1*R3*R4+R2*R3*R4)/(L*(R1*R2+R1*R3+R2*R4+R3*R4));
41. factor.B2 = (E*(R1*R2+R2*R4))/(L*(R1*R2+R1*R3+R2*R4+R3*R4));
42. printf(
"A11 = %lf\nA12 = %lf\nB1 = %lf\n"
, factor.A11,factor.A12,factor.B1);
43. printf(
"A21 = %lf\nA22 = %lf\nB2 = %lf\n"
, factor.A21,factor.A22,factor.B2);
44.
45.
double
y3;
46.
double
y1,y2;
47.
double
Re_y, Im_y;
48.
double
tau1, tau2, tau3;
49.
double
tau_max;
50.
double
tn;
51.
double
D = (factor.A11+factor.A22)*(factor.A11+factor.A22)-4*1*(factor.A11*factor.A22- factor.A21*factor.A12);
52.
if
(D>0) {
53. y1 = ((factor.A11+factor.A22)+sqrt(D))/2;
54. y2 = ((factor.A11+factor.A22)-sqrt(D))/2;
55. printf(
"The eigenvalues of the matrix:\n"
);
56. printf(
"y1 = %lf\ny2 = %lf\n"
,y1,y2);
57. tau1 = 1/(fabs(y1));
58. tau2 = 1/(fabs(y2));
59. tau_max = max_value(&tau1,&tau2);
//Use method max_value() to find the tau(max)
60. tn = 5*tau_max;
61. printf(
"Transient process - periodic.\n"
);
62. printf(
"Transient time:\n"
);
63. printf(
"tau1 = %lf\ntau2 = %lf\n"
,tau1, tau2);
64. printf(
"tn = %lf\n"
,tn);
65.
}
else
if
(D<0) {
66.
Re_y = (factor.A11+factor.A22)/2;
67.
Im_y = (sqrt(D*(-1)))/2;
68. printf(
"The eigenvalues of the matrix:\n"
);
69. printf(
"y1 = %lf + %lfj\ny2 = %lf - %lfj\n"
,Re_y,Im_y,Re_y,Im_y);
70. tau1 = 1/(fabs(Re_y));
71. tau2 = 1/(fabs(Re_y));
72. tau_max = max_value(&tau1, &tau2);
73. tn = 5*tau_max;
74. printf(
"Transient process - oscillatory.\n"
);
75. printf(
"Transient time:\n"
);
76. printf(
"tau1 = %lf\ntau2 = %lf\n"
,tau1, tau2);
77. printf(
"tn = %lf\n"
,tn);
78.
}
else
if
(D==0){
79. y3 = (factor.A11+factor.A22)/2;
80. printf(
"The eigenvalues of the matrix:\n"
);
81. printf(
"y = %lf\n"
, y3);
82. printf(
"Transient process - periodic.\n"
);
83. tau3 = 1/(fabs(y3));
84. tau_max = tau3;
85. tn = 5*tau_max;
86. printf(
"Transient time:\n"
);
87. printf(
"tau = %lf\n"
,tau3);
88. printf(
"tn = %lf"
, tn);
89.
}
90. printf(
"\n"
);
91. printf(
"time\t\tUc\t\tiL\n"
);
15 92.
// If there is no files "UC.txt" and "iL.txt" they will be created in the path:
93.
// {Path_to_this_project}//RK4//Output//MingW//...
94.
FILE
*fileUC;
95. fileUC = fopen(
"UC.txt"
,
"w"
);
96.
FILE
*fileiL;
97. fileiL = fopen(
"iL.txt"
,
"w"
);
98.
double
k1, k2, k3, k4, l1, l2, l3, l4, T[1000], Y0[1000], Y1[1000], t0;
99. t0=0.0;
100.
double
h = tn/1000.0;
101.
T[0]=t0; Y0[0]=0.0; Y1[0]=0.0;
// Uc(0) = 0, iL(0) = 0, t = 0 102.
103. printf(
"%f\t"
,T[0]);
104. printf(
"%f\t"
,Y0[0]);
105. printf(
"%f\n"
,Y1[0]);
106. fprintf(fileUC,
"%f\t%f\n"
,T[0],Y0[0]);
107. fprintf(fileiL,
"%f\t%f\n"
,T[0],Y1[0]);
108.
109.
int
i;
// The algorithm of Runge-Kutta
110.
for
(i=0; i<1000; i++)
111.
{
112. k1=h*U(Y0[i], Y1[i],&factor);
113. l1=h*I(Y0[i],Y1[i],&factor);
114.
115. k2=h*U(Y0[i]+k1/2.0,Y1[i]+l1/2.0,&factor);
116. l2=h*I(Y0[i]+k1/2.0, Y1[i]+l1/2.0,&factor);
117.
118. k3=h*U(Y0[i]+k2/2.0,Y1[i]+l2/2.0,&factor);
119. l3=h*I(Y0[i]+k2/2.0,Y1[i]+l2/2.0,&factor);
120.
121. k4=h*U(Y0[i]+k3, Y1[i]+l3,&factor);
122. l4=h*I(Y0[i]+k3, Y1[i]+l3,&factor);
123.
// Find the value in the point and write to the file and console
124.
T[i+1]=T[i]+h;
125.
Y0[i+1]=Y0[i]+(k1+2.0*k2+2.0*k3+k4)/6.0;
126.
Y1[i+1]=Y1[i]+(l1+2.0*l2+2.0*l3+l4)/6.0;
127. printf(
"%f\t"
,T[i+1]);
128. printf(
"%f\t"
,Y0[i+1]);
129. printf(
"%f\t"
,Y1[i+1]);
130. printf(
"\n"
);
131. fprintf(fileUC,
"%f\t%f\n"
,T[i+1],Y0[i+1]);
132. fprintf(fileiL,
"%f\t%f\n"
,T[i+1],Y1[i+1]);
133.
}
134. fclose(fileUC);
// Close files what we created/used
135. fclose(fileiL);
136. fclose(file);
137.
138. system(
"pause"
);
139.
return
EXIT_SUCCESS;
140.
}
16
2.3
Проведение тестирования полученной программы
Для проверки результатов, полученных программой, воспользуемся системой моделирования электронных схем ASIMEC.
Для численного расчета апериодического переходного режима при
R
1=100 Ом, R2=50 Ом, R3=50 Ом, R4 = 150 Ом, E=100 В, L=0.01 Гн, C=0.00001 Ф построим исходную схему замещения электрической цепи (рисунок 2.3.1) в программе ASIMEC.
Рисунок 2.3.1 - Схема замещения электрической цепи, построенная в программе ASIMEC
Подключим осциллограф к конденсатору (рисунок 2.3.2). С помощью пиктограммы запустим моделирование и увидим график апериодического переходного режима для конденсатора (рисунок 2.3.3). С помощью пиктограммы запишем численные значения графика в текстовый файл, рассчитанные программой ASIMEC.
17
Рисунок 2.3.3 – График апериодического переходного режима для конденсатора, построенный программой ASIMEC
Рисунок 2.3.2 – Исследование апериодического переходного режима на конденсаторе
18
Результаты численного расчета, полученного программой, для апериодичес- кого переходного режима при R1 = 100 Ом, R2 = 50 Ом, R3 = 50 Ом, R4 = 150 Ом,
E
=
100 В, L
=
0.01 Гн, C
=
0.00001 Ф представлены на рисунке 2.3.4.
Рисунок 2.3.4 – Результаты расчета апериодического переходного процесса для конденсатора (а) и для катушки индуктивности (б), полученные программой
19
На рисунке 2.3.5 представлены результаты сравнения численных расчетов апериодического переходного процесса, полученные программой и системой моделирования электронных схем ASIMEC, для конденсатора.
Рисунок 2.3.5 - Результаты сравнения численных расчетов апериодического переходного процесса, сделанных программой и системой моделирования электронных схем ASIMEC
На рисунке 2.3.5 видно, что численный расчет, сделанный программой, совпадает с численным расчетом, сделанным системой моделирования электронных схем ASIMEC. Следовательно, программа правильно выполняет численный расчет апериодического переходного процесса для исходной цепи.
Анализ полученных зависимостей. В момент времени
0
t
= по цепи потечет ток и конденсатор начинает заряжаться. По мере накопления заряда на обкладках конденсатора появится напряжение
C
U .
Как накопление заряда, так и изменение напряжения на обкладках конденсатора происходят не мгновенно, а за некоторый конечный промежуток времени. Напряжение на конденсаторе растет по
20 экспоненциальному закону и растет до тех пор, пока не станет равному напряжению на источнике, то есть пока не сравняется с ЭДС источника
E
Как только это произойдет, разность потенциалов между источником и конденсатором станет равной нулю, и ток в цепи перестанет течь – произойдет зарядка конденсатора и напряжение на конденсаторе станет равным 100 В (рисунок 2.3.4, а).
В катушке индуктивности ток
L
i сначала постепенно нарастает. Это объясняется правилом Ленца, согласно которому дополнительные токи, возникающие вследствие самоиндукции, направлены так, чтобы противодействовать изменению основного тока в цепи. Ток
L
i в катушке будет нарастать до тех пор, пока заряжается конденсатор. После зарядки конденсатор будет эквивалентен разрыву цепи. В контуре перестанет течь ток, а сила тока на индуктивности
L
i будет убывать по экспоненциальному закону (рисунок 2.3.4, б).
Для получения колебательного режима следует выделить контур (рисунок
2.3.6
), в котором последовательно расположены источник постоянного напряжения, катушка индуктивности и конденсатор.
Рисунок 2.3.6 - Контур, содержащий источник постоянного напряжения, катушку индуктивности и конденсатор
21
При этом следует уменьшить сопротивления на этом контуре и увеличить сопротивления вне этого контура так, чтобы большая часть тока протекала по выделенному контуру. В нашем случае R1 = 500 Ом, R2 = 500 Ом, R3 = 5 Ом, R4 =
5 Ом, E = 100 В, L = 0.01 Гн, C = 0.00001 Ф.
Поменяем данные для компонентов исходной цепи в программе ASIMEC и проделаем ту же работу, что мы делали при исследовании апериодического переходного процесса. Результаты приведены на рисунке 2.3.7 и рисунке 2.3.8.
Рисунок 2.3.7 - Исследование колебательный переходного режима на конденсаторе
22
Рисунок 2.3.8 - График колебательного переходного режима для конденсатора, построенный программой ASIMEC
Результаты численного расчета, полученного программой, для колебатель- ного переходного режима при R1 = 500 Ом, R2 = 500 Ом, R3 = 5 Ом, R4 = 5 Ом,
E
=
100 В, L
=
0.01 Гн, C
=
0.00001 Ф представлены на рисунке 2.3.9.
23
Рисунок 2.3.9 - Результаты расчета колебательного переходного процесса для конденсатора (а) и для катушки индуктивности (б), полученные программой
24
На рисунке 2.3.10 представлены результаты сравнения численных расчетов колебательного переходного процесса, полученные программой и системой моделирования электронных схем ASIMEC, для конденсатора.
На рисунке 2.3.10 видно, что численный расчет, сделанный программой, совпадает с численным расчетом, сделанным системой моделирования электронных схем ASIMEC. Следовательно, программа правильно выполняет численные расчеты колебательного переходного процесса для исходной цепи.
Анализ полученных зависимостей. При
0
t
= в цепи потечет ток, что вызовет в катушке электродвижущую силу (ЭДС) самоиндукции, направленную на уменьшение тока в цепи. Ток, вызванный этой ЭДС, в начальный момент будет
Рисунок 2.3.10 - Результаты сравнения численных расчетов колебательного переходного процесса, сделанных программой и системой моделирования электронных схем ASIMEC
25 равен току заряда конденсатора, то есть результирующий ток будет равен нулю.
Затем результирующий ток в цепи будет возрастать, а энергия из конденсатора будет переходить в катушку и обратно, то есть начнётся перезарядка конденсатора.
Перезарядка будет проходить до тех пор, пока магнитная энергия катушки не перейдёт в электрическую энергию конденсатора. Конденсатор в этом случае будет заряжен до напряжения 100 В. В результате в цепи возникают колебания силы тока на индуктивности
L
i и напряжения на конденсаторе
C
U
(рисунок 2.3.9, а, б).
26
3 Заключение
1
Таким образом, в ходе выполнения курсовой работы была написана вычислительная программа на языке Си для расчета переходных процессов в электрической цепи для заданного варианта.
2
Полученные численные расчеты периодического и колебательного переходного режимов с помощью программы совпадают с численным расчетом, сделанным в системе моделирования электронных схем ASIMEC.
27
Список использованных источников
1
Метод Рунге-Кутта для системы дифференциальных уравнений первого проядка [электронный ресурс]. – Режим доступа: https://vunivere.ru/work4559/page4 2
Переходные процессы в линейных электрических цепях [электронный ресурс]. – Режим доступа: http://toe.samgtu.ru/sites/toe.samgtu.ru/files/p.pr.pdf
3
Система моделирования электронных схем ASIMEC [электронный ресурс].
–
Режим доступа: http://asimec.com
4
Каханер Д. Численные методы и программное обеспечение : пер. с англ. / Д.
Каханер, К. Моулер, С. Нэш. – 2-е изд., стер. – М. : Мир, 2001. – 575 c.
5
Калиткин Н. Н. Численные методы : учеб. пособие / Н. Н. Калиткин. – 2-е изд., исправленное. – СПб. : БХВ-Петербург, 2011. – 592 с.