import matplotlib.pyplot as plt
import numpy as np
# Define the exact data points for communications and computing cost trends
communications_cost_points = np.array([(60, 0.9), (80, 0.12)])
computing_cost_points = np.array([(62, 10), (77, 0.01)])
# Interpolate the values for each trend with 100 points
communications_years = np.linspace(communications_cost_points[0][0], communications_cost_points[1][0], 100)
computing_years = np.linspace(computing_cost_points[0][0], computing_cost_points[1][0], 100)
# Since we are working with a semi-log plot, we need to interpolate in log scale
communications_cost_values = np.logspace(np.log10(communications_cost_points[0][1]),
np.log10(communications_cost_points[1][1]),
100)
computing_cost_values = np.logspace(np.log10(computing_cost_points[0][1]),
np.log10(computing_cost_points[1][1]),
100)
# Extrapolate the computing cost values linearly in log scale to the years 60 and 80
slope = (np.log10(computing_cost_values[-1]) - np.log10(computing_cost_values[0])) / (computing_years[-1] - computing_years[0])
intercept = np.log10(computing_cost_values[0]) - slope * computing_years[0]
extrapolated_computing_years = np.linspace(60, 80, 100)
extrapolated_computing_cost_values = 10**(slope * extrapolated_computing_years + intercept)
# Composite packet switching cost is the sum of the other two
composite_packet_switching_cost_values = np.interp(extrapolated_computing_years, communications_years, communications_cost_values) + extrapolated_computing_cost_values
# Plotting the data
fig, ax = plt.subplots(figsize=(4, 6))
ax.plot(communications_years, communications_cost_values, label='Communications Cost Trend')
ax.plot(extrapolated_computing_years, extrapolated_computing_cost_values, label='Computing Cost Trend')
ax.plot(extrapolated_computing_years, composite_packet_switching_cost_values,
label='Composite Packet Switching Cost Trend', linestyle='--')
ax.set_yscale ('log')
# Setting the axes limits
ax.set_xlim(60, 80)
ax.set_ylim(0.01, 10)
# Adding labels and legend
ax.set_xlabel('Year of Service')
ax.set_ylabel('Cost ($/million bits)')
ax.set_title('Cost Trends Over Time')
ax.legend()
# Adding the grid
plt.grid(True, which="both", ls="--")
# Show the plot
plt.savefig("Packet-switching cost performance trends.svg")
plt.show()
You must be logged in to post a comment.