import numpy as np from scipy.optimize import curve_fit def decay_model(x, amplitude, decay, baseline): return amplitude * np.exp(-decay * x) + baseline x = np.linspace(0.0, 4.0, 9) y = np.array([2.91, 1.77, 1.15, 0.82, 0.62, 0.51, 0.44, 0.41, 0.39]) initial_guess = (2.5, 1.0, 0.3) bounds = (0.0, [5.0, 5.0, 2.0]) params, covariance = curve_fit( decay_model, x, y, p0=initial_guess, bounds=bounds, ) stderr = np.sqrt(np.diag(covariance)) fit = decay_model(x, *params) residuals = y - fit rmse = np.sqrt(np.mean(residuals**2)) condition_number = np.linalg.cond(covariance) print(f"parameters: amplitude={params[0]:.3f}, decay={params[1]:.3f}, baseline={params[2]:.3f}") print(f"std_error: amplitude={stderr[0]:.3f}, decay={stderr[1]:.3f}, baseline={stderr[2]:.3f}") print(f"rmse: {rmse:.3f}") print(f"covariance_condition: {condition_number:.1f}")