% Лабораторная работа к курсу прикладная теория трения, износа и смазки ТС
% Новиков А.Д. Фомин М.И. Пернунков И.И.
% СМ9-91
clc
clear all; %#ok<CLALL>
% Исходные данные
D1 = 40 / 1000; % Диаметр верхнего ролика, м.
D2 = 35 / 1000; % Диаметр нижнего ролика, м.
b_s = 5 / 1000; % Ширина контакта, мм.
N = [140, 200]; % Моменты потерь в конутарх, Кгс.
n = [800,1400]; % Обороты роликов, об/мин.
t_m = 25; % Температура масла ТС3п-8, град. С.
g = 9.81; % Ускорение свободного падения.
gamma = 4; % Количество экспериментов.
% Используется нелинейная модель

% Полученные в ходе эксперимента данные
M_3 = [0.2, 0.2, 0.28, 0.23; % 800 об/мин.
0.22, 0.2, 0.28, 0.28]; % 1400 об/мин.
M_2 = [0.1, 0.15, 0.1, 0.17; % 800 об/мин.
0.2, 0.25, 0.20, 0.25]; % 1400 об/мин.
M_i_1 = [3.85, 3.75, 3.73, 3.7; % 800 об/мин.
3.43, 3.4, 3.43, 3.4]; % 1400 об/мин.
M_1_1 = [2.25, 2.0, 2.0, 1.95; % 800 об/мин.
2.65, 2.5, 2.45, 2.4]; % 1400 об/мин.
M_i_2 = [5.3, 5.28, 5.25, 5.25; % 800 об/мин.
4.73, 4.72, 4.7, 4.65]; % 1400 об/мин.
M_1_2 = [2.3, 2.25, 2.25, 2.2; % 800 об/мин.
2.7, 2.65, 2.8, 2.7]; % 1400 об/мин.

% Обработка результатов эксперимента
nx0 = (n(1)+n(2))/2; % Основной уровень n, об/мин.
Nx0 = (g*N(1)+g*N(2))/2; % Основной уровень N, Нм.
delta_n = (n(2)-n(1))/2; % Интервал варьирования n.
delta_N = (g*N(2)-g*N(1))/2; % Интервал варьирования N.

% Определение коэффициентов трения, получение матрицы планирования
a = D1 / (D1+D2);
R2 = D2 / 2;
X1 = [0,1,0,1]+1; % Фактор оборотов.
X2 = [0,0,1,1]+1; % Фактор момента.
M = zeros (4,4);
M(1,:) = M_i_1(1,:); % n = 800, N = 140.
M(2,:) = M_i_1(2,:); % n = 1400, N = 140.
M(3,:) = M_i_2(1,:); % n = 800, N = 200.
M(4,:) = M_i_2(2,:); % n = 1400, N = 200.
M1(1:4) = [sum(M_1_1(1,:))/4, sum(M_1_1(2,:))/4, sum(M_1_2(1,:))/4, sum(M_1_2(2,:))/4]; % Среднее значение результата эксперимента.
M2(1:4) = [sum(M_2(1,:))/4, sum(M_2(2,:))/4, sum(M_2(1,:))/4, sum(M_2(2,:))/4]; % Среднее значение момента сопротивления ХХ в тарировке.
M3(1:4) = [sum(M_3(1,:))/4, sum(M_3(2,:))/4, sum(M_3(1,:))/4, sum(M_3(2,:))/4]; % Среднее значение момента сопротивления ХХ в эксперименте.
f = zeros (4,4);
f_avg = zeros(4,1);
for i = 1 : 4
for j = 1 : 4
f(i,j) = (M(i,j) - (M3(i) + 2 * a * (M1(i) - M2(i)))) / (R2 * N(X2(i)) * g);
end
end
for i = 1 : 4
f_avg(i) = sum(f(i,:)) / gamma;
end

hold on;
grid on;
plot(n, [f_avg(1) f_avg(2)]);
plot(n, [f_avg(3) f_avg(4)]);

% Воспроизводимость опытов
S2 = zeros (4,1);
for i = 1 : 4
S2(i) = (((f(i,1) - f_avg(1)) ^ 2) + (f(i,2) - f_avg(2)) ^ 2 + ((f(i,3) - f_avg(3)) ^ 2) + ((f(i,4) - f_avg(4)) ^ 2)) / (gamma - 1); % Квадрат дисперсии.
end
G_p = max(S2) / sum(S2); % расчетное значение критерия Кохрена.
f_c = gamma - 1; % Число степеней свободы.
P = 0.95; % Надежность опытов.
G_t = 0.6841; % Критическое значение критерия Кохрена для f_c степеней свободы и надежности опыта P.
if G_p < G_t
fprintf('Проверка воспроизводимости опыта пройдена, G_p = %.3f < G_t = %.3f.\n', G_p, G_t);
end

% Вычисление коэффициентов уравнения регрессии
X1 = X1 - 1;
X2 = X2 - 1;
for i=1:4
if X1(i)==0
X1(i) = -1;
end
if X2(i)==0
X2(i) = -1;
end
end
b_0 = sum(f_avg) / 4;
b_1 = (X1(1) * f_avg(1) + X1(2) * f_avg(2) + X1(3) * f_avg(3) + X1(4) * f_avg(4)) / gamma;
b_2 = (X2(1) * f_avg(1) + X2(2) * f_avg(2) + X2(3) * f_avg(3) + X2(4) * f_avg(4)) / gamma;
b_12 = ((X1(1)+X2(1)) * f_avg(1) + (X1(2)+X2(2)) * f_avg(2) + (X1(3)+X2(3)) * f_avg(3) + (X1(4)+X2(4)) * f_avg(4)) / gamma;

%Проверка на значимость коэффициентов
S_y2 = sum(S2)/gamma; % Квадрат дисперсии единичного измерения.
S_y2_mean = S_y2/gamma; % Квадрат дисперси среднего значения.
S_y_mean = sqrt(S_y2_mean); % Дисперсия среднего значения/ошибка эксперимента.
t_t = 2.1788; % Критерий Стьюдента для P = 0.95 и f_c = 4 * (4-1).
t_p_0 = (abs(b_0) * sqrt(gamma)) / S_y_mean
t_p_1 = (abs(b_1) * sqrt(gamma)) / S_y_mean
t_p_2 = (abs(b_2) * sqrt(gamma)) / S_y_mean
t_p_12 = (abs(b_12) * sqrt(gamma)) / S_y_mean
if (t_p_0 >= t_t) && (t_p_1 >= t_t) && (t_p_2 >= t_t) && (t_p_12 >= t_t)
fprintf('Все значения t_p критериев Стьюдента больше табличного\nt_t = %.4f, следовательно все коэффициенты значимы.\n\n', t_t)
end

% Предположим, что зависимость имеет вид f = b_0 + b_1 * x_1 + b_2 * x_2 + b_12 * x_1 * x_2;
disp('Искомое уравнение можно записать следующим образом: ')
fprintf('y = %.3f + %.3f*x1 + %.3f*x2 + %.3f*x1x2.\n\n', b_0, b_1, b_2, b_12);
f_teor = zeros(2,2);
for i = 1:2
for j = 1:2
f_teor(i,j) = b_0 + b_1 * X1(i) + b_2 * X2(j+1);
end
end

P_p = [275 275 392 392];
V_sk = [0.6 1.1 0.6 1.1];
V_sum = [2.3 4 2.3 4];
f_dz = (0.044 .* P_p.^0.1 * (10 + log(5800 * 0.2 / (1.98*10^5*9.3))))./(1^0.06 .* V_sk .^ 0.07 .* V_sum .^ 0.21 * (100*9.3)^0.187);
plot(n, [f_teor(1) f_teor(2)]);
plot(n, [f_teor(3) f_teor(4)]);
plot(n, [f_dz(1) f_dz(2)]+0.02);
plot(n, [f_dz(3) f_dz(4)]);
legend('N = 140 Н*м','N = 200 Н*м','Regress N = 140 Н*м','Regress N = 200 Н*м','Teor N = 140 Н*м','Teor N = 200 Н*м');

% Проверка уравнения регрессии на адекватность
k = 2; % Количество факторов в эксперименте.
f_c_regres = gamma - (k + 1); % Число степеней свободы.
S_ag2 = ((f_avg(1)^2 + f_avg(2)^2 + f_avg(3)^2 + f_avg(4)^2) - (gamma * (b_1 ^ 2 + b_2 ^ 2))) / f_c_regres;
F_p = S_ag2 / S_y2_mean; % Расчетное значение критерия Фишера.
F_t = 7.71; % Табличное значение критерия Фишера для k1 = 1 и k2 = 4.
if F_p <= F_t
fprintf('Так как F_p = %.3f <= F_t = %.3f, \n', F_p, F_t);
disp('то гипотеза о случайной природе связи отклоняется и признается');
disp('статистическая значимость и надежность уравнения регрессии.');
end