д:
Елементарні ділянки гальмування будуть рівні:
;
Прискорення дорівнюватиме:
;
Далі алгоритм вирішення має вигляд, аналогічний ділянці розгону.
Елементарні ділянки при гальмуванні будуть рівні
.
Для першого положення вводимо? 1=0,? 1=0, t1=0,
.
Для інших положень при i=2, ..., n + 1 значення кута повороту дорівнюватиме:
;
Обчислимо за формулою трапецій int
;
Кутова швидкість буде рівна:
;
Вводимо середнє значення швидкості:
;
Значення часу знайдемо за формулою:
;
Виводимо параметри руху для гальмування при i=1, ..., п + 1
Виводимо? i,? i,? i, ti
Схема алгоритму розв'язання задачі
4. Таблиця ідентифікаторів
Таблиця 4.1 - Таблиця ідентифікаторів
Математичне обозначеніеІдентіфікаторОпісаніеJ o I0Момент інерцііM Д MdДвіжущій моментM З McМомент сопротівленіяM про M0Начальний моментСcКоеффіціентNnКолічество ділянок? wУгловая швидкість? 1 W [1] Початкове значення швидкості? ср wsСреднее значення скоростіttВремяt 1 t [1] Початкове значення часу? EУскореніе? 1 E [1] Початкове прискорення? fУгол? р fpУгол розгону? 1 f [1] Початкове значення кута повороту ?? р fpdЕлементарние ділянки при розгоні? Т ftУгол гальмування ?? Т dftЕлементарние ділянки при гальмуванні р TpБистродействіе на ділянці разгонаТ T TtБистродействіе на ділянці торможеніяIiСчетчікIntintІнтеграл
. Текст програми в середовищах Delphi і MathCad
var
Form1: TForm1;
//змінні оголошені глобально
Jo: double ;: double ;: double ;: double ;: integer ;: double;
//----------------: array [1..100] of double;// кут повороту: array [1..100] of double;// Кутова швидкість
wcp: double;// Середня швидкість на відрізку
t: array [1..100] of double;// Час: array [1..100] of double;// Прискорення: double;// Значення інтеграла
Tn: double;// Швидкодію
dfi: double;// Крок кута
fit: double;// Повний кут гальмування
function M (fi: real): real;:=0.4;:=Mo + Exp (fi * ln (c)) + sqrt (fi) ;; TForm1.Button1Click (Sender: TObject) ; i: integer ;: double; .Clear; .Lines.Add ( Розгін );
//зчитування переменни' з Едіт
Jo:=StrToFloat (Edit1.Text);
Mo:=StrToFloat (Edit2.Text);:=StrToFloat (Edit3.Text);:=StrToFloat (Edit5.Text);:=StrToInt (Edit6.Text);
//розрахунок кроку
dfi:=fip/N;
//перше положення
fi [1]:=0;
w [1]:=0;
t [1]:=0;
e [1]:=(M (fi [1]) - Mc)/Jo;
//положення з 2 і до N + 1
for i:=2 to N + 1 do [i]:=fi [i - 1] + dfi;:=(M (fi [i]) - Mc + M (fi [i- 1]) - Mc)/2 * dfi; [i]:=sqrt (2/Jo * (Jo * sqr (w [i - 1])/2 + int));:=(w [i] + w [i - 1])/2; [i]:=t [i - 1] + dfi/wcp; [i]:=(w [i] -w [i - 1])/(t [i]-t [i - 1]) ;;:=Jo * sqr (w [N + 1])/(2 * Mc); [N + 1]:=-Mc/Jo;:=fit/N; i: =1 to N do.Lines.Add ( i= + IntToStr (i) + ф= + FloatToStrF (fi [i], ffFixed, 5,2)
+ w= + FloatToStrF (w [i], ffFixed, 5,2) + e= + FloatToStrF (e [i], ffFixed, 5,2)
+ t= + FloatToStrF (t [i], ffFixed, 5,2));:=t [N + 1] ;. Lines.Add ( Tp=T [N + 1]= + FloatToStrF ( Tn, ffFixed, 5,2));
//гальмування
Memo1.Lines.Add ( Гальмування );
Memo1.Lines.Add ( фт= + FloatToStrF (fit, ffFixed, 5,2));
//кроки гальмування з N + 2 до 2N + 1
for i:=N + 2 to 2 * N + 1 do [i]:=fi [i - 1] + dfi;:=2/Jo * (Jo * sqr (w [i- 1])/2-Mc * dfi); tmp lt; 0 then tmp:=0; [i]:=sqrt (tmp);:=(w [i] + w [i - 1])/2; [ i]:=t [i - 1] + (fi [i] -fi [i - 1])/wcp; [i]:=(w [i] -w [i - 1])/(t [i ] -t [i - 1]) ;; i:=N + 1 to 2 * N + 1 do.Lines.Add ( i= + IntToStr (i) + ф= + FloatToStrF ( fi [i], ffFixed, 5,2)
+ w= + FloatToStrF (w [i], ffFixed, 5,2) + e= + FloatToStrF (e [i], ffFixed, 5,2)
+ t= + FloatToStrF (t [i], ffFixed, 5,2));:=t [2 * N + 1] -t [N + 1] ;. Lines.Add ( Tт= + FloatToStrF (Tn, ffFixed, 5,2)) ;. Enabled:=true ;; TForm1.Button3Click (Sender: TOb...