% Main script to read boiling point data and provide user options clear; clc; % Import data from file data = importdata('data.txt'); % Extract pressure and temperature values pressure = data(:, 1); % First column: Pressure (bar) temperature = data(:, 2); % Second column: Boiling Temperature (°C) while true % Display menu options disp('Type:'); disp('1 to find the boiling point for a specific pressure'); disp('2 to print the known experimental values'); disp('3 to create a table of values in a desired pressure interval'); disp('0 to exit'); choice = input('Enter your choice: '); if choice == 1 % Find boiling point for specific pressure user_pressure = input('Enter pressure in bar: '); idx = find(pressure == user_pressure); if ~isempty(idx) % Exact match found fprintf('The boiling point at %.1f bar is %.1f °C (experimental value).\n', ... user_pressure, temperature(idx)); else % Perform linear interpolation if user_pressure < min(pressure) || user_pressure > max(pressure) fprintf('Pressure out of range. Please enter a value between %.1f and %.1f bar.\n', ... min(pressure), max(pressure)); else interp_temp = linear_interpolation(pressure, temperature, user_pressure); fprintf('The estimated boiling point at %.1f bar is %.1f °C (linear interpolation).\n', ... user_pressure, interp_temp); end end elseif choice == 2 % Print known experimental values fprintf('\nPressure (bar) | Boiling Temperature (°C)\n'); fprintf('----------------|--------------------------\n'); for i = 1:length(pressure) fprintf('%16.1f | %24.1f\n', pressure(i), temperature(i)); end elseif choice == 3 % Create table of values in a desired pressure interval min_pressure = input('Enter minimum pressure (bar): '); max_pressure = input('Enter maximum pressure (bar): '); step_size = input('Enter step size (bar): '); if min_pressure < min(pressure) || max_pressure > max(pressure) || step_size <= 0 fprintf('Invalid input range or step size.\n'); else new_pressures = min_pressure:step_size:max_pressure; new_temperatures = arrayfun(@(p) linear_interpolation(pressure, temperature, p), new_pressures); fprintf('\nPressure (bar) | Estimated Temperature (°C)\n'); fprintf('----------------|----------------------------\n'); for i = 1:length(new_pressures) fprintf('%16.1f | %26.1f\n', new_pressures(i), new_temperatures(i)); end end elseif choice == 0 % Exit the program disp('Exiting...'); break; else disp('Invalid choice, please try again.'); end disp(' '); % Add space for readability between iterations end