16.7.15 B组总结

今天的b组居然倒退了1名,坑。。。。。。。。
1:一看行列均小于200,于是打了个宽搜,打完运行后发现有个东西打错了,于是只好一个一个慢慢来了,结果一下子打了4700多B。。。。。后来才发现,不能复制样例的符号,否则会70分,更悲剧的是我还开小了数组,于是和我估这道题的的分一样:50
2:一看就发现是动态规划,可是10分钟都没推出来方程,再加上繁琐的高精度,去看第三题。
3:关于次方的题目没怎么做过,于是弃疗。
4:直接打了个dfs上去,对拍了一会儿还是没错,就交了,结果40.。。。。。。
再回去第二题:推出方程,却没时间,于是不打高精度加了上去,拿了20.

总分:50+20+0+40=110;

下次比赛要把握好时间。。。。。。。

% 基本参数 m = 3880; % 总质量 (kg) g = 9.8; % 重力加速度 (m/s²) G = m * g; % 车辆重力 (N) r = 0.367; % 车轮半径 (m) eta_t = 0.83; % 传动系统机械效率 f = 0.020; % 滚动阻力系数 CdA = 2.77; % 空气阻力系数×迎风面积 (m²) i0 = 5.58; % 主减速器传动比 ig = [6.09, 3.09, 1.71, 1.00]; % 变速器传动比 (1-4档) % 发动机参数 n_min = 600; % 最低转速 (r/min) n_max = 4000; % 最高转速 (r/min) Q_idle = 0.299; % 怠速油耗 (mL/s),对应400r/min n_idle = 400; % 怠速转速 (r/min) % 转动惯量 I_f = 0.218; % 飞轮转动惯量 (kg·m²) I_w1 = 1.798; % 前轮转动惯量 (kg·m²) I_w2 = 3.598; % 后轮转动惯量 (kg·m²) I_w_total = I_w1 + I_w2; % 总车轮转动惯量 % 其他参数 rho = 1.2258; % 空气密度 (kg/m³) fuel_density = 0.742; % 汽油密度 (kg/L) % 发动机万有特性数据 (转速, B0, B1, B2, B3, B4) n_data = [815, 1207, 1614, 2012, 2603, 3006, 3403, 3804]; B0 = [1326.8, 1354.7, 1284.4, 1122.9, 1141.0, 1051.2, 1233.9, 1129.7]; B1 = [-416.46, -303.98, -189.75, -121.59, -98.893, -73.714, -84.478, -45.291]; B2 = [72.379, 36.657, 14.524, 7.0035, 4.4763, 2.8593, 2.9788, 0.71113]; B3 = [-5.8629, -2.0553, -0.51184, -0.18517, -0.091077, -0.05138, -0.047449, -0.00075215]; B4 = [0.17768, 0.043072, 0.0068164, 0.0018555, 0.00068906, 0.00035032, 0.00028230, -0.000038568]; % 假设的发动机外特性曲线 (转矩 vs 转速) n_engine = linspace(n_min, n_max, 100); % 发动机转速范围 T_e = 250 * exp(-((n_engine - 2000)/800).^2) + 200 * exp(-((n_engine - 3500)/500).^2); % 外特性转矩 (N·m) P_e = T_e .* n_engine / 9549; % 发动机功率 (kW) %% 1. 绘制发动机外特性曲线 figure; yyaxis left; plot(n_engine, T_e, 'b-', 'LineWidth', 1.5); ylabel('发动机转矩 T_e (N·m)'); yyaxis right; plot(n_engine, P_e, 'r-', 'LineWidth', 1.5); ylabel('发动机功率 P_e (kW)'); xlabel('发动机转速 n (r/min)'); title('发动机外特性曲线'); grid on; legend('转矩特性', '功率特性'); %% 2. 绘制功率平衡图 (最高档) gear = 4; % 最高档 i_gear = ig(gear); v_max = n_engine * 0.377 * r / (i0 * i_gear); % 车速 (km/h) % 计算行驶阻力功率 v_kmh = linspace(0, 160, 100); % 车速范围 (km/h) v_ms = v_kmh / 3.6; % 车速 (m/s) F_roll = G * f * ones(size(v_kmh)); % 滚动阻力 (N) F_air = 0.5 * rho * CdA * v_ms.^2; % 空气阻力 (N) F_resist = F_roll + F_air; % 总行驶阻力 (N) P_resist = F_resist .* v_ms / 1000; % 行驶阻力功率 (kW) % 计算发动机功率曲线 P_engine = interp1(v_max, P_e, v_kmh, 'linear', 'extrap'); figure; plot(v_kmh, P_engine, 'b-', 'LineWidth', 1.5); hold on; plot(v_kmh, P_resist / eta_t, 'r-', 'LineWidth', 1.5); % 考虑传动效率 xlabel('车速 v (km/h)'); ylabel('功率 P (kW)'); title('最高档功率平衡图'); legend('发动机功率', '行驶阻力功率'); grid on; xlim([0, 160]); ylim([0, 120]); %% 3. 最高档和次高档等速燃油消耗率 gear_high = 4; % 最高档 gear_sub = 3; % 次高档 v_range = 10:1:120; % 车速范围 (km/h) % 预分配数 be_high = zeros(size(v_range)); be_sub = zeros(size(v_range)); for i = 1:length(v_range) v = v_range(i); % 计算行驶阻力功率 v_ms = v / 3.6; F_resist = G * f + 0.5 * rho * CdA * v_ms^2; P_resist = F_resist * v_ms / 1000; % kW P_e_req = P_resist / eta_t; % 发动机需求功率 (kW) % 最高档 n_high = (v * i0 * ig(gear_high)) / (0.377 * r); be_high(i) = calc_fuel_consumption(n_high, P_e_req, n_data, B0, B1, B2, B3, B4); % 次高档 n_sub = (v * i0 * ig(gear_sub)) / (0.377 * r); be_sub(i) = calc_fuel_consumption(n_sub, P_e_req, n_data, B0, B1, B2, B3, B4); end % 绘制燃油消耗率 figure; plot(v_range, be_high, 'b-', 'LineWidth', 1.5); hold on; plot(v_range, be_sub, 'r-', 'LineWidth', 1.5); xlabel('车速 v (km/h)'); ylabel('燃油消耗率 b_e (g/kWh)'); title('等速行驶燃油消耗率'); legend('最高档', '次高档'); grid on; %% 4. 最高档和次高档等速百公里油耗 % 计算百公里油耗 (L/100km) fuel_cons_high = (be_high .* (P_e_req * ones(size(v_range)))) ./ (10 * fuel_density * v_range); fuel_cons_sub = (be_sub .* (P_e_req * ones(size(v_range)))) ./ (10 * fuel_density * v_range); figure; plot(v_range, fuel_cons_high, 'b-', 'LineWidth', 1.5); hold on; plot(v_range, fuel_cons_sub, 'r-', 'LineWidth', 1.5); xlabel('车速 v (km/h)'); ylabel('百公里油耗 Q (L/100km)'); title('等速百公里油耗曲线'); legend('最高档', '次高档'); grid on; %% 5. 六工况百公里油耗计算 % 六工况参数 [起始车速, 结束车速, 时间, 距离] cycles = { [25, 25, 7.2, 50]; % 工况I: 等速 [25, 40, 16.7, 150]; % 工况II: 加速 (25->40) [40, 40, 22.5, 250]; % 工况III: 等速 [40, 50, 14.0, 175]; % 工况IV: 加速 (40->50) [50, 50, 18.0, 250]; % 工况V: 等速 [50, 25, 19.3, 200] % 工况VI: 减速 (50->25) }; dt = 0.1; % 时间步长 (s) total_fuel = 0; % 总燃油消耗 (mL) gear_cycle = 4; % 循环中使用最高档 for k = 1:length(cycles) cycle = cycles{k}; v_start = cycle(1); v_end = cycle(2); t_cycle = cycle(3); s_cycle = cycle(4); t_steps = 0:dt:t_cycle; a_cycle = (v_end - v_start) / t_cycle * 1000/3600; % 加速度 (m/s²) for t = t_steps v = v_start + (v_end - v_start) * t / t_cycle; % 当前车速 (km/h) a = a_cycle; % 当前加速度 (m/s²) % 计算需求功率 v_ms = v / 3.6; F_roll = G * f; F_air = 0.5 * rho * CdA * v_ms^2; F_accel = m * a; F_total = F_roll + F_air + F_accel; if F_total > 0 % 发动机提供动力 P_wheel = F_total * v_ms; % 车轮功率 (W) P_e_req = P_wheel / (eta_t * 1000); % 发动机需求功率 (kW) n_engine = (v * i0 * ig(gear_cycle)) / (0.377 * r); be = calc_fuel_consumption(n_engine, P_e_req, n_data, B0, B1, B2, B3, B4); fuel_rate = (P_e_req * be) / (3600 * fuel_density); % 燃油消耗率 (mL/s) else % 滑行或制动 (断油) fuel_rate = 0; end total_fuel = total_fuel + fuel_rate * dt; end end % 计算百公里油耗 total_distance = 1075; % 总行驶距离 (m) fuel_per_100km = (total_fuel / 1000) / (total_distance / 100000); % L/100km fprintf('六工况百公里油耗: %.2f L/100km\n', fuel_per_100km); %% 6. 经济性总体评价 % 基于计算结果进行评价 fprintf('\n经济性总体评价:\n'); fprintf('1. 最高档在经济车速区间(60-80km/h)的百公里油耗约为%.2f L/100km\n', ... mean(fuel_cons_high(v_range>=60 & v_range<=80))); fprintf('2. 次高档在相同车速下的油耗比最高档高约%.1f%%\n', ... 100 * (mean(fuel_cons_sub(v_range>=60 & v_range<=80)) / mean(fuel_cons_high(v_range>=60 & v_range<=80)) - 100)); fprintf('3. 六工况测试油耗为%.2f L/100km,接近等速经济性\n', fuel_per_100km); fprintf('4. 建议在实际驾驶中使用最高档,保持车速在60-80km/h以获得最佳经济性\n'); %% 辅助函数: 计算燃油消耗率 function be = calc_fuel_consumption(n, P_e, n_data, B0, B1, B2, B3, B4) % 确保转速在合理范围内 n = max(min(n, max(n_data)), min(n_data)); % 找到最近的转速点 [~, idx] = min(abs(n_data - n)); % 使用该转速点的系数 b0 = B0(idx); b1 = B1(idx); b2 = B2(idx); b3 = B3(idx); b4 = B4(idx); % 计算燃油消耗率 be = b0 + b1*P_e + b2*P_e^2 + b3*P_e^3 + b4*P_e^4; % 确保be为正 be = max(be, 0); end 请验证上述代码错误地方要求如下% 基本参数 m = 3880; % 总质量 (kg) g = 9.8; % 重力加速度 (m/s²) G = m * g; % 车辆重力 (N) r = 0.367; % 车轮半径 (m) eta_t = 0.83; % 传动系统机械效率 f = 0.020; % 滚动阻力系数 CdA = 2.77; % 空气阻力系数×迎风面积 (m²) i0 = 5.58; % 主减速器传动比 ig = [6.09, 3.09, 1.71, 1.00]; % 五档变速器传动比 % 发动机参数 n_min = 600; % 最低转速 (r/min) n_max = 4000; % 最高转速 (r/min) Q_idle = 0.299; % 怠速油耗 (mL/s),对应400r/min n_idle = 400; % 怠速转速 (r/min) % 转动惯量 I_f = 0.218; % 飞轮转动惯量 (kg·m²) I_w1 = 1.798; % 前轮转动惯量 (kg·m²) I_w2 = 3.598; % 后轮转动惯量 (kg·m²) I_w_total = I_w1 + I_w2; % 总车轮转动惯量 % 其他参数 rho = 1.2258; % 空气密度 (kg/m³) fuel_density = 0.742; % 汽油密度 (kg/L)。 n/(r/ min) B₀ B₁ B₂ B₃ B₄ 815 1326.8 -416.46 72.379 -5.8629 0.17768 1207 1354.7 -303.98 36.657 -2.0553 0.043072 1614 1284.4 -189.75 14.524 -0.51184 0.0068164 2012 1122.9 -121.59 7.0035 -0.18517 0.0018555 2603 1141.0 -98.893 4.4763 -0.091077 0.00068906 3006 1051.2 -73.714 2.8593 -0.05138 0.00035032 3403 1233.9 -84.478 2.9788 -0.047449 0.00028230 3804 1129.7 -45.291 0.71113 -0.00075215 -0.000038568 怠速油耗 (怠速转速400r/ min)。 六工况循环的参数如下: 工 况 累积行程/m 时间/s 累积时间/s 车速/(km/h) 说 明 I 50 7.2 7.2 25 等 速 Ⅱ 200 16.7 23.9 25~40 匀加速度为 Ⅲ 450 22.5 46.4 40 等 速 Ⅳ 625 14.0 60.4 40~50 匀加速度为 V 875 18.0 78.4 50 等 速 Ⅵ 1075 19.3 97.7 50~25 匀加速度为 1)根据书上所给的发动机使用外特性曲线拟合公式,绘制功率外特性和转矩外特性曲线; 2)绘制功率平衡图; 3)绘制汽车最高挡和次高档等速在水平路面上行驶时发动机的燃油消耗率b,见图2 图2 最高两挡等速行驶发动机燃油消耗率 4)绘制最高挡和次高档等速百公里油耗曲线; 5)求解六工况(GB/T 12545.2-2001)行驶的百公里油耗; 经济性计算时,取汽油密度0.742g/mL,柴油密度0.830g/mL 6)对经济性进行总体评价,请用matlab解决上述问题
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值