Básico¶
Para realizar un ajuste,
definimos la función a ajustar
y se la pasamos a curve_fit
junto con los datos:
import numpy as np
from labo1 import curve_fit
def lineal(x, a, b):
return a * x + b
result = curve_fit(
lineal,
x=np.array([1.0, 2.0, 3.0, 4.0, 5.0]),
y=np.array([2.9, 5.0, 6.9, 9.0, 11.0]),
estimate_errors=True,
)
donde usamos estimate_errors=True
para que estime el error en y
a partir de los residuos del ajuste.
Ver la sección de ajustes ponderados
si los errores son distintos para cada y
o se conocen los errores.
result
es un objeto que encapsula el resultado del ajuste,
mostrándonos los parámetros obtenidos con su error:
result
Result(a=2.020 ± 0.016, b=0.900 ± 0.054)
Acceder a los parámetros¶
Podemos acceder a ellos con:
result.params
array([2.02, 0.9 ])
y a sus incertezas con:
result.errors
array([0.01632993, 0.05416026])
El orden es el mismo que en la definición de la función:
lineal
<function __main__.lineal(x, a, b)>
También es posible acceder al valor y su incerteza por nombre:
result["a"]
(2.020000000002225, 0.016329932000876773)
Graficar el ajuste¶
Se puede realizar un gráfico rápidamente con:
result.plot()
(<Figure size 600x300 with 1 Axes>, <Axes: >)
El método .plot
nos devuelve la figura y los ejes de matplotlib
,
a los cuales podemos agregarle nombres con:
fig, ax = result.plot()
ax.set(xlabel="eje x", ylabel="eje y")
[Text(0.5, 0, 'eje x'), Text(0, 0.5, 'eje y')]
En la sección Graficando el ajuste, hay más información sobre como graficar.
Graficar el ajuste con residuos¶
Para realizar un gráfico con residuos llamamos al método .plot_with_residuals()
.
A diferencia de .plot
, este nos devuelve dos ejes:
fig, axes = result.plot_with_residuals()
axes[0].set(ylabel="y [unidad]")
axes[1].set(ylabel="Residuos", xlabel="x [unidad]")
fig.align_labels()