以下是使用 Octave 解决此问题的代码: ```octave function [urban_ratio, suburban_ratio] = population_change(p, years) total_population = 1; % 假设总人口为 1 urban_population = p; suburban_population = 1 - p; for year = 1:years new_urban_population = urban_population * (1 - 0.06) + suburban_population * 0.02; new_suburban_population = suburban_population * (1 - 0.02) + urban_population * 0.06; urban_population = new_urban_population; suburban_population = new_suburban_population; end urban_ratio = urban_population; suburban_ratio = suburban_population; end p_values = 0:0.01:1; years = [10, 30, 50]; figure; for year = years urban_ratios = []; suburban_ratios = []; for p = p_values [urban_ratio, suburban_ratio] = population_change(p, year); urban_ratios = [urban_ratios, urban_ratio]; suburban_ratios = [suburban_ratios, suburban_ratio]; end subplot(length(years), 1, find(years == year)); plot(p_values, urban_ratios, 'r', p_values, suburban_ratios, 'b'); title(sprintf('Year = %d', year)); xlabel('Initial Urban Population Percentage (p)'); ylabel('Population Ratio'); legend('Urban', 'Suburban'); end % 额外需要注意的逻辑点: % 1. 确保输入的初始人口比例 p 在 0 到 1 之间。 % 2. 检查循环的边界条件,以避免出现意外的结果。 % 3. 对于图形的绘制,要根据数据的特点选择合适的坐标轴范围和刻度。 ``` [2025-03-23 20:03:25 | AI写代码神器 | 460点数解答]