Разработка программы для определения зависимости скорости вала двигателя от времени
Для получения численного решения дифференциального уравнения уравнение заменяется уравнениями относительно значений функции y*(x). Эти уравнения называют разностными. Простейшие разностные уравнения для заданного дифференциального уравнения имеют вид. Решив задачу Коши на интервале аргумента методом Эйлера и Рунге-Кутта четвертого порядка точности, получим таблично заданную зависимость t (щ… Читать ещё >
Разработка программы для определения зависимости скорости вала двигателя от времени (реферат, курсовая, диплом, контрольная)
1. Постановка задачи
Двигатель из состояния покоя приводит в движение вал рабочей машины. Механическая характеристика двигателя состоит из двух прямолинейных участков: МД1=a1+b1щ при и МД2=a2+b2щ при. Приведенный к валу двигателя момент инерции вращающихся частей машины и двигателя J, момент сопротивления на том же валу равен МС.
Определить зависимость скорости вала двигателя от времени щ (t). Вычислить скорость щуст и время начала tуст установившегося движения вала. Построить графики зависимостей щ (t) и МД(t).
Исходные данные:
a1=96 Н*м
a2=2100 Н*м
b1=0,56 Н*м*с
b1=20 Н*м*с МС=60 Н*м
J=12 кг*м2
n=20
t=0,1 с е=0,1
2. Математическая модель решения задачи
В качестве математической модели задачи используем дифференциальное уравнение движения вала двигателя
Тогда на прямолинейном участке при задача Коши примет вид:
(1)
Значение щопр определим (см. рис. 1) из условия МД(щопр)=МД(щопр) или a1+b1щопр=a2-b2щопр.
Откуда
.
Решив задачу Коши на интервале аргумента методом Эйлера и Рунге-Кутта четвертого порядка точности, получим таблично заданную зависимость t (щ). Построенную таблицу можно рассматривать в качестве зависимости щ (t) и использовать для определения МД(t).
На прямолинейном участке при строим задачу Коши в виде
(2)
Для каждого значения аргумента ti=ti-1+t, начиная с i=n+2 и используя tопр=tn+1, щопр=щn+1, решаем задачу Коши (2) выбранным методом и получаем последовательность значений функции щn+2, щn+3, щn+4 и т. д. Процесс вычислений прекращаем при выполнении условия. Тогда в качестве щуст берем последнее вычисленное значение щi и tуст=ti.
Решение дифференциальных уравнений методом Эйлера.
Пусть задано дифференциальное уравнение первого порядка или y'=F (x, y)
На интервале [x0, xn] разобьём на n частей и получим X0,…,Xn.
Xi=X0+(i-1) h или Xi=Xi-1+h1, где .
Соответствующее значения y1=y*(xi), где y*(xi) — приближенное значение дифференциального уравнения.
Для получения численного решения дифференциального уравнения уравнение заменяется уравнениями относительно значений функции y*(x). Эти уравнения называют разностными. Простейшие разностные уравнения для заданного дифференциального уравнения имеют вид.
yi+1-yi=h*F (x, y)
yi+1=yi+h*F (x, y) — формула Эйлера.
Алгоритм метода Эйлера.
1) Ввод исходных данных (x0, xn,n, y0).
2)
3) x[0]=x0; y[0]=y0.
4) Для i=1, n
4.1.) x[i]=x [i-1]+h;
4.2) y[i]=y [i-1]+h*f (x[i-1], y [i-1]);
5) Для i=0, n
5.1) Вывод x[i], y[i].
3. Алгоритм решения задачи
1. Вводим исходные данные
a1, a2, b1, b2, Mc, J, n, dt, epsilon;
2. wopr:=(a2-a1)/(b1+b2); tn:=0; wn:=0; wk:=wopr;
Решаем дифференциальное уравнение с использованием процедуры EILER
3. EILER (n, wn, wk, tn, fun1, w, t)
Записываем в файл RESULTS. RES полученную табличную зависимость w (t) на промежутке 0<=w<=wopr;
4. Для i=1…n+1
4.1. writeln (t[i], w[i], Md[i]);
Записываем в файл RESULTS. RES topr и wopr
5. writeln (topr, wopr);
6. i:=n+2;
Определяем функцию w (t) на промежутке w>=wopr с использованием цикла с постусловием
7. repeat
7.1. t[i]: =t [i-1]+dt;
7.2. w[i]: =w [i-1]+dt*fun2 (w[i-1]);
7.3. m:=i; i:=i+1;
until abs (w[i-1] - w[i])<=epsilon;
Записываем в файл RESULTS. RES полученную табличную зависимость w (t) на промежутке w>=wopr
8. Для i=n+2…m
writeln (t[i], w[i], Md[i]).
Записываем в файл результатов tyst, wyst, Mdyst.
9. writeln (tyst, wyst, Mdyst).
Алгоритм процедуры EILER
1. t[1]: =tn; t [n+1]: =tk; v[1]: =vn; h:=(t [n+1] - t[1])/n;
2. Для i=2…n+1
2.1 t[i]: =t[1] +(i-1)*h;
2.2 v[i]: =v [i-1]+h*f (t[i-1]);
Алгоритм функции fun1
1. fun1:=12/(2100+0.56*w-60)
Алгоритм функции fun2
1. fun2:=(2100−20*w-60)/12
4. Схема алгоритма
Функция fun1
w:real
Функция fun2
w:real
Процедура EILER
n:integer; tn, tk, vn: real; f: fun;
Var t, v: vect
5. Таблица идентификаторов
Наименование | физический смысл | идентификатор | |
Время | t | t | |
Угловая скорость двигателя | щ | w | |
Постоянные коэффициенты | a1, a2, b1, b2 | a1, a2, b1, b2 | |
Момент сопротивления на валу двигателя | MC | Mc | |
Момент инерции двигателя | J | J | |
Шаг времени | t | dt | |
Относительная ошибка измерения | е | epsilon | |
Определенное и установленное время | tопр, щуст | topr, wopr | |
Определенная и установлена угловая скорость | щопр | wopr | |
Число интервалов разбиения | n | n | |
6. Текст программы
Program kyrsa4;
Uses crt;
TYPE fun=function (y:real):real;
vect=array [1.100] of real;
Var f1, f2: fun;
t, w: vect; f3, f4: text;
i, n, m: integer;
tn, wn, wk, Mc, a1, a2, b1, b2, dt, epsilon, j, topr, wopr: real;
{$F+}
function fun1 (w:real):real;
begin
fun1:=12/(2100+0.56*w-60)
end;
function fun2 (w:real):real;
begin
fun2:=(2100−20*w-60)/12
end;
{$F-}
Procedure EILER (n:integer; tn, tk, vn: real; f: fun; var t, v: vect);
Var i: integer; h: real;
begin
t[1]: =tn; t [n+1]: =tk; v[1]: =vn;
h:=(t [n+1] - t[1])/n;
for i:=2 to n+1 do begin
t[i]: =t[1]+(i-1)*h;
v[i]:=v [i-1]+h*f (t[i-1]);
end;
end;
begin ClrScr;
assign (f3,'results.res'); rewrite (f3);
assign (f4,'danie.dat'); reset (f4);
readln (f4, a1, a2, b1, b2, Mc, J, n, dt, epsilon);
wopr:=(a2-a1)/(b1+b2);
tn:=0; wn:=0; wk:=wopr;
EILER (n, wn, wk, tn, fun1, w, t);
writeln (f3,'3avisimost w (t) pri 0<=w<=wopr');
writeln (f3,'t w Md');
for i:=1 to n+1 do writeln (f3, t[i]: 5:2,' ', w[i]: 5:2,' ', a1+b1*w[i]: 5:2);
writeln (f3,'topr=', t [n+1]: 5:2,'s wopr=', w [n+1]: 5:2,'rad/s Mdopr=', a1+b1*w [n+1]: 5:2,'H*s');
writeln (f3,'3avisimost w (t) pri w>wopr');
writeln (f3,'t w Md');
i:=n+2;
repeat t[i]: =t [i-1]+dt;
w[i]: =w [i-1]+dt*fun2 (w[i-1]);
m:=i; i:=i+1;
until abs (w[i-1] - w [i-2])<=epsilon;
for i:=n+2 to m do
writeln (f3, t[i]: 5:2,' ', w[i]: 5:2,' ', a2-b2*w[i]: 5:2);
writeln (f3,'tyst=', w[m]: 5:2,'s wyst=', t[m]: 5:2,'rad/s Mdyst=', a2-b2*w[m]: 5:2,'H*s');
close (f3); close (f4);
repeat until keypressed
end.
7. Результаты работы программы
вал двигатель скорость программа
3avisimost w (t) pri 0<=w<=wopr
t w Md
0.00 0.00 96.00
0.03 4.87 98.73
0.06 9.75 101.46
0.09 14.62 104.19
0.11 19.49 106.92
0.14 24.37 109.65
0.17 29.24 112.38
0.20 34.11 115.10
0.23 38.99 117.83
0.26 43.86 120.56
0.28 48.74 123.29
0.31 53.61 126.02
0.34 58.48 128.75
0.37 63.36 131.48
0.40 68.23 134.21
0.43 73.10 136.94
0.45 77.98 139.67
0.48 82.85 142.40
0.51 87.72 145.13
0.54 92.60 147.85
0.57 97.47 150.58
topr= 0.57s wopr=97.47rad/s Mdopr=150.58H*s
3avisimost w (t) pri w>wopr
t w Md
0.67 98.23 135.49
0.77 98.85 122.91
0.87 99.38 112.42
0.97 99.82 103.68
1.07 100.18 96.40
1.17 100.48 90.34
1.27 100.74 85.28
1.37 100.95 81.07
1.47 101.12 77.56
1.57 101.27 74.63
1.67 101.39 72.19
1.77 101.49 70.16
1.87 101.58 68.47
tyst=101.58s wyst= 1.87rad/s Mdyst=68.47H*s
8. Графическая часть
9. Анализ результатов
В результате работы программы была получена зависимость скорости вала двигателя от времени щ (t) и установившиеся время tуст и скорость щуст.
За время t двигатель приобрел максимальную угловую скорость щ, которая в дальнейшей работе двигателя изменялась только в пределах заданной относительной погрешности измерений е.
1. Рапаков Г. Г., Ржеуцкая С. Ю. Тurbo Pascal для студентов и школьников. — СПБ.: БХВ — Петербург. 2004. — 352 с.
2. Анципорович П. П., Алейникова О. И., Булгак Т. И., Луцко Н. Я. Информатика. Учебно-метод. Пособие к лабораторным работам для студ. машиностроит. спец. В 4 ч. — Мн.: БНТУ, 2009.