Смекни!
smekni.com

Розробка програми розрахунку параметрів підшипника та швидкісної характеристики автомобіля (стр. 4 из 5)

У сучасних двигунах АТЗ коефіцієнти пристосовності неоднакові і залежно від конструкції змінюються:

= 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,910-39 до 1,71038 Точність 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;