- •Министерство образования республики беларусь учреждение образования «барановичский государственный университет»
- •Оглавление
- •Введение
- •Постановка задачи
- •Математическая модель задачи.
- •Алгоритм решения задачи
- •Текст программы в средах Delphi и MathCad
- •Распечатка результатов
- •Графическое представление результатов
- •Анализ результатов
- •Заключение
- •Список используемой литературы
-
Алгоритм решения задачи
Вводим исходные данные : I0, Mo , Mc , φ p, n.
Элементарные участки при разгоне будут равны .
Для первого положения вводим φ1=0, ω1=0, t1=0, .
Для остальных положений при i=2,…,n+1 значение угла поворота будет равно : ;
Вычислим по формуле трапеций int
;
Угловая скорость будет равна:;
Вводим среднее значение скорости : ;
Значение времени найдём по формуле : ;
Вводим формулу для ускорения:.
Выводим параметры движения для разгона при i = 1,..., п + 1
Выводим φ i, ω i, ε i, ti
Выводим быстродействие для участка разгона
Для участка торможения алгоритм имеет следующий вид:
Элементарные участки торможения будут равны :;
Ускорение будет равно : ;
Далее алгоритм решения имеет вид, аналогичный участку разгона.
Элементарные участки при торможении будут равны .
Для первого положения вводим φ1=0, ω1=0, t1=0, .
Для остальных положений при i=2,…,n+1 значение угла поворота будет равно : ;
Вычислим по формуле трапеций int
;
Угловая скорость будет равна:;
Вводим среднее значение скорости : ;
Значение времени найдём по формуле : ;
Вводим формулу для ускорения:.
Выводим параметры движения для торможения при i = 1,..., п + 1
Выводим φ i, ω i, ε i, ti
-
Схема алгоритма решения задачи
-
Таблица идентификаторов
Таблица 2.1 – Таблица идентификаторов
Математическое обозначение |
Идентификатор |
Описание |
Jo |
I0 |
Момент инерции |
MД |
Md |
Движущий момент |
MС |
Mc |
Момент сопротивления |
Mо |
M0 |
Начальный момент |
С |
c |
Коэффициент |
N |
n |
Количество участков |
ω |
w |
Угловая скорость |
ω1 |
W[1] |
Начальное значение скорости |
ωср |
ws |
Среднее значение скорости |
t |
t |
Время |
t1 |
t[1] |
Начальное значение времени |
ε |
E |
Ускорение |
ε1 |
E[1] |
Начальное ускорение |
φ |
f |
Угол |
φр |
fp |
Угол разгона |
φ1 |
f[1] |
Начальное значение угла поворота |
Δφр |
fpd |
Элементарные участки при разгоне |
φТ |
ft |
Угол торможения |
ΔφТ |
dft |
Элементарные участки при торможении |
Тр |
Tp |
Быстродействие на участке разгона |
ТT |
Tt |
Быстродействие на участке торможения |
I |
i |
Счетчик |
Int |
int |
Интеграл |
-
Текст программы в средах Delphi и MathCad
var
Form1: TForm1;
// переменные объявленые глобально
Jo: double;
Mo: double;
Mc: double;
fip: double;
N: integer;
c: double;
//----------------
fi: array[1..100] of double; //угол поворота
w: array[1..100] of double; // угловая скорость
wcp: double; // средняя скорость на отрезке
t: array[1..100] of double; // время
e: array[1..100] of double; // ускорение
int: double; // значение интеграла
Tn: double; // быстродействие
dfi: double; // шаг угла
fit: double; // полный угол торможения
function M(fi:real):real;
begin
c:=0.4;
M := Mo+Exp(fi*ln(c))+sqrt(fi);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
tmp: double;
begin
Memo1.Clear;
Memo1.Lines.Add('Разгон');
// считывание переменныъ из едитов
Jo := StrToFloat(Edit1.Text);
Mo := StrToFloat(Edit2.Text);
Mc := StrToFloat(Edit3.Text);
fip := StrToFloat(Edit5.Text);
N := 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
begin
fi[i] := fi[i-1] + dfi;
int := (M(fi[i])-Mc+M(fi[i-1])-Mc)/2*dfi;
w[i] := sqrt(2/Jo*(Jo*sqr(w[i-1])/2+int));
wcp := (w[i]+w[i-1])/2;
t[i] := t[i-1]+dfi/wcp;
e[i] := (w[i]-w[i-1])/(t[i]-t[i-1]);
end;
fit := Jo*sqr(w[N+1])/(2*Mc);
e[N+1] := -Mc/Jo;
dfi := fit/N;
for i:=1 to N do
Memo1.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));
Tn := t[N+1];
Memo1.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
begin
fi[i] := fi[i-1]+dfi;
tmp := 2/Jo*(Jo*sqr(w[i-1])/2-Mc*dfi);
if tmp<0 then tmp:=0;
w[i] := sqrt(tmp);
wcp := (w[i]+w[i-1])/2;
t[i] := t[i-1]+(fi[i]-fi[i-1])/wcp;
e[i] := (w[i]-w[i-1])/(t[i]-t[i-1]);
end;
for i:=N+1 to 2*N+1 do
Memo1.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));
Tn := t[2*N+1]-t[N+1];
Memo1.Lines.Add('Tт='+FloatToStrF(Tn,ffFixed,5,2));
Button3.Enabled := true;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
Chart1.BottomAxis.Minimum := -0.1;
Chart1.BottomAxis.Maximum := fi[2*N+1]+0.1;
Chart1.LeftAxis.Minimum := e[2*N+1]-0.1;
Chart1.LeftAxis.Maximum := e[1] + 0.1;
for i:=1 to 2*N+1 do
begin
Series1.AddXY(fi[i],w[i],'',clTeeColor);
Series2.AddXY(fi[i],e[i],'',clTeeColor);
Series3.AddXY(fi[i],t[i],'',clTeeColor);
end;
end;
end.
MathCad