У сучасних двигунах АТЗ коефіцієнти пристосовності неоднакові і залежно від конструкції змінюються:
= 1,06 ... 1,35; = 2,25 ... 1,4Для практичних розрахунків та наукових досліджень треба характеристику двигуна виразити математично. Зовнішня швидкісна характеристика з достатньою точністю описується параболами другого або третього порядків:
де й, b, c — емпіричні константи.
Зазначимо, що параметри параболи можна визначати різними методами залежно від потрібної точності. Так, експериментальну криву можна описати перекинутою параболою, або параболою, що проходить по характерним точкам, наприклад по
, або просто відрізками прямих ліній з координатами і . Здебільшого використовується перекинута парабола. У такому разі її коефіцієнти визначаються звичайним способом аналітичної геометрії:3.2 Необхідні початкові дані
– максимальна потужність двигуна
, кВт;– максимальний крутний момент двигуна
, Н·м;– питома витрата палива
, г/кВт·год;– кількість обертів двигуна при максимальній потужності
;– кількість обертів двигуна при максимальному моменті
;– табличні дані з графіків зовнішньої швидкісної характеристики.
3.3 Формалізація задачі
Для вирішення даної задачі необхідно за даними графіків зовнішньої швидкісної характеристики двигуна J6R створити математичні моделі його механічних характеристик.
Апроксимування функцій будемо виконувати за допомогою методу найменших квадратів.
Функція
на відрізку [а, в] задана системою N точок , , … ,Потрібно так підібрати коефіцієнти
поліномащоб сума квадратів відхилення полінома від заданих значень функції
була мінімальною.
Використовуючи умову екстремуму функції кількох змінних:
можна скласти систему лінійних алгебраїчних рівнянь, відносно коефіцієнтів
.Якщо в якості апроксимуючого полінома вибрати степеневий поліном виду
та
то система рівнянь буде мати вигляд (3.15).
Ця система рівнянь лінійна відносно
коефіцієнта полінома і розв'язується будь-яким відомим методом (методом Гаусса з послідовним включенням, методом Гаусса за схемою Халецького і т.п.).Таким чином, алгоритм МНК включає три етапи:
1. Формування системи рівнянь.
2. Розв"язання системи лінійних алгебраїчних рівнянь та знаходження коефіцієнтів апроксимуючого полінома
3. Вибір "оптимального" (найкращого) степеня
апроксимуючого полінома, за заданою припущеною похибкою метода .При розробці алгоритма і програми формування системи рівнянь необхідно скористатись тим, що в матриці коефіцієнтів знаходяться суми
від
до ;від
до :3.4 Розробка алгоритмів розв’язання задачі
Рис.10 – схема алгоритму метода найменших квадратів для знаходження коефіцієнтів степеневого апроксимуючого полінома
3.5 Вибір типу та структури оброблюваних даних
В процесі розв’язку поставленої задачі оброблюються дані наступного типу:
Таблиця 3.1
Тип | Область значень | Фізичний формат |
Integer | від –2147483648 до 2147483647 | 32 розряди, зі знаком |
Real | від 2,910-39 до 1,71038 | Точність 11-12 розрядів, розмір в байтах – 6 |
З метою збереження і обробки в пам’яті ЕОМ прийнята така система ідентифікаторів:
Таблиця 3.2
Назва параметра | Позначення | |
у формулі | у програмі | |
Масив даних крутного момента | с[i] | |
Масив даних питомої витрати паливаа | b[i] | |
Масив даних кількості обертів колінчастого валу | n[i] | |
Масив коефіцієнтів полінома | a[i] | |
Кількість коефіцієнтів | m | |
Інші | – | n1, e1, t, h, a1, b1, b2, eps, s, s0, i, j, k, k2, n2, i1, i3, i2, j1, j3, j2, m1, z1, f, e |
3.6 Програмування задачі на мові програмування pascal 7.0
Program Aproksimatsia;
Uses CRT;
Type mas= array[1..25,1..25] of real;
mas1= array[1..25] of real;
Var
a: mas;
c,b,x,x1,y1: mas1;
n,n1,i1,i3,i2,j1,j3,j2,m1: integer;
e1: real;
t,h,a1,b1,b2,eps,s,s0:real;
i,j,k,n2:integer;
Procedure MNK(n1:integer;x1,y1:mas1;var a:mas);
Var
k2:integer; z1,f,e : real;
BEGIN
for k2:=1 to n1 do
begin
z1:=x1[k2]; f:=y1[k2]; e:=1;
for i2:=1 to 2*m1+1 do
begin
c[i2]:=c[i2]+e;
if i2<=m1+1 then b[i2]:=b[i2]+e*f;
e:=e*z1
end;
end;
for i2:=1 to m1+1 do
begin
for j2:=1 to m1+1 do
a[i2,j2]:=c[i2+j2-1];
end;
END;
Procedure Gaus(n:integer;a:mas; b:mas1; var x:mas1);
Var
i,j,k,l:integer; max,z,s,m : real;
BEGIN
writeln('**** Vixidna sistema rivnyan ****');
for i:=1 to n do
begin
for j:=1 to n do write(' ',a[i,j]:5:2); write(' ',b[i]:5:2);
WRITELN;
end;
WRITELN;
for k:=1 to n-1 do
begin
max:=abs(a[k,k]); l:=k;
for i:=k+1 to n do
begin
if abs(a[i,k])>max then
begin l:=i; max:=abs(a[i,k]); end;
end;
if l<>k then begin
for j:=k to n do
begin
z:=a[l,j]; a[l,j]:=a[k,j]; a[k,j]:=z;
end;
z:=b[l]; b[l]:=b[k]; b[k]:=z;
end;
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k];
for j:=k to n do a[i,j]:=a[i,j]-m*a[k,j];
b[i]:=b[i]-m*b[k];
a[i,k]:=0;
end;
end;
Writeln('*** trikytna sistema rivnayn ***');
for i:=1 to n do
begin
for j:=1 to n do write(' ',a[i,j]:5:2); write(' ',b[i]:5:2);
WRITELN;
end;
writeln;
(*** xod nazad ***)
x[n]:=b[n]/a[n,n];
for i:=n-1 downto 1 do
begin
s:=0;
for j:=i+1 to n do s:=s+x[j]*a[i,j];
x[i]:=(b[i]-s)/a[i,i];
end;
END;