Блок-схема решения системы дифференциальных уравнений
Реализация алгоритма на языке программирования высокого уровня Pascal
Program DIFFERENTSIAL;
uses wincrt;
var R1,R2,R3,R4,R5,R6,L,C,E0,h,w,f,fi,t,A,B,D,G,
Ik1,Ik2,Uk1,Uk2,Ik3,Uk3,Ik4,Uk4,It, Ut, dIt, dUt: real;
j:integer;
y: text;
Begin
clrscr;
assign(y,'c:\rezyltat.txt');
rewrite(y);
R1:=30; R2:=25; R3:=50; R4:=1.88; R5:=15; R6:=50;
L:=0.00557; C:=0.00002;
A:=(R5+R6)/(R5+R6+R3); G:=1/(R5+R6+R3); B:=R2/(R1+R2);
D:=R4+(R1*R2/(R1+R2))+R3*((R5+R6)/(R5+R6+R3));
h:=0.0002; f:=50; fi:=5; w:=2*pi*f;
E0:=15; It:=0; Ut:=0; t:=0; j:=0;
While t<=0.0202 do
begin
Ik1:=h*(1/L)*(B*(E0+E0*sin(w*t+fi))-D*It-A*Ut);
UK1:=h*(1/C)*(A*It-G*Ut);
Ik2:=h*((1/L)*(B*(E0+E0*sin(w*(t+h/2)+fi))-D*(It+Ik1/2)-A*(Ut+Uk1/2)));
Uk2:=h*(1/C)*(A*(It+Ik1/2)-G*(Ut+UK1/2));
Ik3:=h*((1/L)*(B*(E0+E0*sin(w*(t+h/2)+fi))-D*(It+Ik2/2)-A*(Ut+Uk2/2)));
Uk3:=h*(1/C)*(A*(It+Ik2/2)-G*(Ut+UK2/2));
Ik4:=h*((1/L)*(B*(E0+E0*sin(w*(t+h)+fi))-D*(It+Ik3)-A*(Ut+Uk3)));
Uk4:=h*(1/C)*(A*(It+Ik3)-G*(Ut+UK3));
dIt:=(Ik1+2*Ik2+2*Ik3+Ik4)/6;
dUt:=(Uk1+2*Uk2+2*Uk3+Uk4)/6;
if j mod 5=0 then
Writeln(y,'t=',t:6:4,' It=',It:9:6,' Ut=',Ut:6:5);
Writeln('j=',j:3,' t=',t:6:4,' It=',It:9:6,' Ut=',Ut:6:5);
It:=It+dIt; Ut:=Ut+dUt; j:=j+1; t:=t+h;
if t>0.01 then E0:=0;
end;
Close(y);
readln;
End.
Таблица результатов
t | I | U |
0.000 | 0.000000 | 0.000000 |
0.001 | 0.021116 | 0.28271 |
0.002 | 0.045202 | 0.95006 |
0.003 | 0.074067 | 1.99946 |
0.004 | 0.104367 | 3.36451 |
0.005 | 0.132911 | 4.92721 |
0.006 | 0.156807 | 6.54132 |
0.007 | 0.173674 | 8.05172 |
0.008 | 0.181844 | 9.31183 |
0.009 | 0.180509 | 10.19881 |
0.010 | 0.169796 | 10.62609 |
0.011 | -0.074194 | 5.16433 |
0.012 | -0.032145 | 2.22256 |
0.013 | -0.013829 | 0.95612 |
0.014 | -0.005949 | 0.41131 |
0.015 | -0.002559 | 0.17694 |
0.016 | -0.001101 | 0.07612 |
0.017 | -0.000474 | 0.03275 |
0.018 | -0.000204 | 0.01409 |
0.019 | -0.000088 | 0.00606 |
0.020 | -0.000038 | 0.00261 |
Решение дифференциальных уравнений в пакете MathCAD
|
|
Графики зависимости I(t) и U(t).
Результаты значений I и U в зависимости от времени t
Решение интерполяции в пакете Excel
t | I |
0,001 | 0.021116 |
0,002 | 0.045202 |
0,003 | 0.074067 |
0,004 | 0.104367 |
0,005 | 0.132911 |
0,006 | 0.156807 |
0,007 | 0.173674 |
Численное интегрирование
Блок-схема для нахождения выделившийся теплоты на резисторе R4
Реализация алгоритма на языке программирования высокого уровня Pascal
Program teplota;
uses wincrt;
var R4,Q,f,f1,f2,hx,t,t1,t2,S,Int,a2,a1,a0,b2,b1,b0,c2,c1,c0,fn,fk:Real;
n:Integer;
begin
R4:=1.88;
t1:=0.001;
t2:=0.007;
n:=100;
hx:=(t2-t1)/n;
a2:=2170;a1:=17.98;a0:=0.0007;
b2:=-880; b1:=36.38;b0:=-0.027;
c2:=-3515;c1:=62.485;c0:=-0.0917;
t:=t1;
S:=0;
fn:=sqr(a2*t1*t1+a1*t1+a0);
fk:=sqr(c2*t2*t2+c1*t2+c0);
Repeat
if t<=0.003 then
f:=sqr(a2*t*t+a1*t+a0)
else if t<=0.005 then
f:=sqr(b2*t*t+b1*t+b0)
else f:=sqr(c2*t*t+c1*t+c0);
S:=S+f;
t:=t+hx;
until t>=t2;
S:=S-(fn+fk);
Int:=hx*(((fn+fk)/2)+S);
Q:=R4*Int;
writeln(' Int=',Int:2:8,' Q=',Q:2:7);
End.
Результат: Int =0.00007562
Q =0.0001422
Вычисление количества теплоты в пакете MathCAD
Заключение
В данной курсовой работе преследовалась цель - провести аналитический анализ работы электрической схемы (получить графики зависимости тока и напряжения), а так же количество теплоты, выделяющейся на резисторе за указанный промежуток времени.
Эти расчеты проводились в три этапа:
· выводы системы дифференциальных уравнений.
|
|
· аппроксимация полученных результатов.
· нахождение количества теплоты, выделяющейся на резисторе R4.
Все расчеты и вычисления осуществлялись на языке программирования Pascal и в пакете Excel, входящем в семейство Microsoft Office. Параллельно этому производились такие же вычисления в специальном математическом пакете MathCad, но координально другими методами.
Решение системы дифференциальных уравнений:
· метод Рунге-Кутта (Pascal)
· модифицированный метод Эйлера (MathCad)
Количество теплоты, выделяющееся на резисторе:
· методом трапеций (Pascal)
· методом трапеций (MathCad)
После сравнения результатов сделали вывод: что они аналогичны.