You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何获取点集拟合曲线的函数以计算任意x对应的y值?

获取拟合曲线函数并计算任意x的y值

一、numpy.polyfit() 处理流程

numpy.polyfit() 会返回拟合多项式的系数数组,你可以用 numpy.poly1d() 将这个系数数组转换成一个可直接调用的函数,传入任意x值就能得到对应的y值。

举个实际例子:

import numpy as np

# 模拟一组数据点
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 5, 10, 17, 26])

# 用2次多项式拟合,得到系数
coeffs = np.polyfit(x, y, deg=2)
# 将系数转为可调用的多项式函数
poly_func = np.poly1d(coeffs)

# 计算任意x对应的y值,比如x=6和x=2.5
y_6 = poly_func(6)
y_25 = poly_func(2.5)

print(f"x=6时y值:{y_6:.2f}")
print(f"x=2.5时y值:{y_25:.2f}")

二、scipy.optimize.curve_fit() 处理流程

curve_fit() 需要你先自定义拟合函数的形式,它返回的是函数的最优参数。拿到参数后,直接把参数代入自定义函数,就能计算任意x的y值。

比如用一个指数函数拟合:

from scipy.optimize import curve_fit
import numpy as np

# 自定义拟合函数形式(这里是指数函数)
def exp_func(x, a, b, c):
    return a * np.exp(b * x) + c

# 模拟数据
x = np.array([0, 1, 2, 3, 4])
y = np.array([2.1, 3.9, 8.2, 16.3, 32.5])

# 拟合得到最优参数popt,pcov是协方差矩阵(这里暂时用不到)
popt, pcov = curve_fit(exp_func, x, y)
# popt里就是[a, b, c]三个参数

# 用拟合后的函数计算任意x的y值
y_5 = exp_func(5, *popt)
y_15 = exp_func(1.5, *popt)

print(f"x=5时y值:{y_5:.2f}")
print(f"x=1.5时y值:{y_15:.2f}")

总结:

  • 用polyfit时,靠poly1d将系数转成可调用函数;
  • 用curve_fit时,把返回的参数代入你自定义的函数即可。

内容的提问来源于stack exchange,提问作者joyoforigami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:15:44