Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вариант 7. Кустышева. гр РЕ-01.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
423.42 Кб
Скачать

3.Скрины программы

4.Интегрирование дифференциального уравнения.

Сравнение с расчетами, выполненными в Turbo Delpi

> restart;

> with(linalg):with(plots):

pp:=(x,y)->[x,y];

Задаем модельный сигнал.

Это финитная функция единичной амплитуды, заданная на единичном отрезке-носителе.

> fun:= proc(t) local z ;z:=piecewise(t<0,0,t<1/2,2*t,t<=1,2-2*t,0); evalf(z);end;

> plot(fun(t),t=-1..2,thickness=2,color=brown);

Полином

Первый положительный корень полинома определяет период T управляющего сигнала и коэффициент его усиления.

Величина определяет длительность сигнала на участке периода.

> p(x):=x^5-7*x-6;

> Koeff:=fsolve(p(x),x,0..2);

> T:=Koeff;

> tau:=1;

Процедура Period(t,t0,tau,T,f) строит периодическое продолжение сигнала на всю действительную ось, где T - период, - длительность сигнала f(t), t0 -- начальный сдвиг (который можно интерпретировать как запаздывание).

> Period:=proc(t,t0,tau,T,f) local x,z;

x:=evalf(t-t0-floor((t-t0)/T)*T);

z:=fun(x/tau);evalf(z);

end;

> plot(Period(x,0,tau,T,fun),x=-1..3,thickness=2,color=brown);

> #==================================================================

Решаем задачу интегрирования входного сигнала

Экспериментально так, чтобы выходной сигнал был близким к стационарному.

> Koc:=1;Nzac:=7;

> ur:=diff(U(t),t);

> F:=Nzac*(cos((4+Nzac/10)*t+U(t))+Koeff*Period(t,0,tau,T,f)-Koc*U(t));

> RK:=dsolve({ur=F,U(0)=0.25},U(t),type=numeric,output=listprocedure);

> fU:=subs(RK,U(t));

> T0:=5;Nt:=50;h:=T0/Nt;

> Tx:=array(0..Nt):U:=array(0..Nt):U_map:=array(0..Nt);

> for j from 0 to Nt do

x:=j*h;z:=fU(x);Tx[j]:=x;U[j]:=z;U_map[j]:=z;

#print(x,z);

od:

> RisU:=zip(pp,Tx,U):

> RU:=plot(RisU):

> display(RU);

> #====================================

> RisU:=zip(pp,Tx,U):

> whattype([RisU]);

> RU0:=plot(RisU,style=point,symbol=cross):

> display(RU0);

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

> fn:=`D:\\wrem\\сава.txt`;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

> L:=readdata(fn,2);

Nstrok:=vectdim(L);

> U_n:=array(1..Nstrok);:

T_n:=array(1..Nstrok);

> for j from 1 to Nstrok do

T_n[j]:=L[j,1];

U_n[j]:=L[j,2];

#print(j,T_n[j],U_n[j]);

od:

> u1:=zip(pp,T_n,U_n):

> RU1:=plot(u1,style=point,symbol=cross,color=black):

> display(RU,RU1);

Сравнение результатов на одинаковых сетках

> printf("%s",` № t U_map U_pas разн \n`);

for k from 0 to Nt do t:=Tx[k]:del:=U_map[k]-U_n[k+1];

printf("% 3.0f % 6.2f % 8.4f % 8.4f % 8.4f \n",k,t,U_map[k],U_n[k+1],del):

end:;

№ t U_map U_pas разн

0 0.00 0.2500 0.2500 0.0000

1 0.10 0.5902 0.5429 0.0473

2 0.20 0.6686 0.5954 0.0732

3 0.30 0.6499 0.5914 0.0585

4 0.40 0.6294 0.5946 0.0348

5 0.50 0.6687 0.6538 0.0149

6 0.60 0.6394 0.5972 0.0422

7 0.70 0.5007 0.4635 0.0372

8 0.80 0.3497 0.3170 0.0327

9 0.90 0.2349 0.2033 0.0316

10 1.00 0.1875 0.1557 0.0318

11 1.10 0.3274 0.3055 0.0219

12 1.20 0.6228 0.6312 -0.0084

13 1.30 0.7754 0.7561 0.0193

14 1.40 0.7168 0.6719 0.0449

15 1.50 0.5445 0.5026 0.0419

16 1.60 0.3284 0.2978 0.0306

17 1.70 0.0986 0.0785 0.0201

18 1.80 -0.1312 -0.1435 0.0123

19 1.90 -0.2576 -0.2278 -0.0298

20 2.00 -0.2713 -0.2425 -0.0288

21 2.10 -0.1574 -0.1330 -0.0244

22 2.20 0.2102 0.2274 -0.0172

23 2.30 1.0514 1.0792 -0.0278

24 2.40 1.7867 1.7752 0.0115

25 2.50 1.8327 1.6999 0.1328

26 2.60 1.5513 1.4331 0.1182

27 2.70 1.1729 1.0939 0.0790

28 2.80 0.7690 0.7202 0.0488

29 2.90 0.4490 0.4590 -0.0100

30 3.00 0.1933 0.2083 -0.0150

31 3.10 -0.0450 -0.0339 -0.0111

32 3.20 -0.2728 -0.2650 -0.0078

33 3.30 -0.4857 -0.4793 -0.0064

34 3.40 -0.6743 -0.6681 -0.0062

35 3.50 -0.8233 -0.8163 -0.0070

36 3.60 -0.9029 -0.8972 -0.0057

37 3.70 -0.7202 -0.7068 -0.0134

38 3.80 -0.0655 -0.0543 -0.0112

39 3.90 0.9012 0.9790 -0.0778

40 4.00 1.3895 1.2936 0.0959

41 4.10 1.4820 1.3657 0.1163

42 4.20 1.2741 1.1247 0.1494

43 4.30 0.9205 0.8169 0.1036

44 4.40 0.5293 0.4679 0.0614

45 4.50 0.1288 0.0950 0.0338

46 4.60 -0.2709 -0.2909 0.0200

47 4.70 -0.5622 -0.5425 -0.0197

48 4.80 -0.7563 -0.7355 -0.0208

49 4.90 -0.8764 -0.8591 -0.0173

50 5.00 -0.8943 -0.8795 -0.0148