Кажется, я сейчас бьюсь головой о кирпичную стену, как ни стараюсь, я не вижу здесь своей ошибки.
Я пытаюсь написать цикл for
в MATLAB, который использует приведенное ниже уравнение (адиабатическое сжатие) для вычисления нового давления после одного градуса вращения коленчатого вала в цикле четырехтактного двигателя.
P2 = P1 * (V2 / V1) ^2
Я использую рассчитанный объем из модели кривошипно-ползункового в качестве входных данных. Я пробовал это Excel, и он работает, как ожидалось, и дает общий максимальный вывод правильно.
Цикл for
, о котором идет речь, находится ниже;
Cyl_P = ones(720,1)
for i = (2:1:length(Cyl_V))'
Cyl_P(i,:) = Cyl_P(i-1,:) .* (Cyl_V(i,:) ./ Cyl_V(i-1,:)).^1.35
end
моя цель состоит в том, чтобы использовать первый элемент вектора Cyl_P
, который равен единице, в качестве входных данных для уравнения, приведенного выше, и умножить его на второй элемент Cyl_V
, деленный на первый, и умножить объемные условия на 1.35
. это должно вычислить второй элемент Cyl_P
. Затем я хотел бы вернуть это значение обратно в то же уравнение, чтобы вычислить третий элемент и т. Д.
Что мне не хватает?
Я поставил полный код ниже
Theta = deg2rad(1:1:720)'
Stroke = 82 / 1000
R = Stroke / 2
L = 90.5 / 1000
Bore = 71.9 / 1000
d_h = (R+L) - (R.*cos(Theta)) - sqrt(L.^2 - (R.*sin(Theta)).^2)
Pist_h = d_h
figure
plot(Pist_h)
Bore_A = (pi*Bore^2)/4
Swept_V = (Pist_h .* Bore_A)
Clear_V = max(Swept_V) / 10
Total_V = max(Swept_V) + Clear_V
Cyl_V = (Swept_V + Clear_V)
figure
plot(Cyl_V)
for ii = (2:1:length(Cyl_V))'
div_V(ii,:) = (Cyl_V(ii) ./ Cyl_V(ii-1,:)).^1.35
end
Cyl_P = ones(720,1)
for i = (2:1:length(Cyl_V))'
Cyl_P(i,:) = Cyl_P(i-1,:) .* (Cyl_V(i,:) ./ Cyl_V(i-1,:)).^1.35
end
figure
plot(Cyl_P)