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

如何根据函数图像推导对应的数学函数?(支持Python实现)

从折线图拟合对应数学函数的实现方法

Python 实现方案

1. 多项式拟合(通用场景)

如果图像呈现多项式形态(线性、二次曲线等),可以用 numpy 的 polyfit 和 poly1d 快速拟合:

import numpy as np
import matplotlib.pyplot as plt

# 替换为你的时间、速度列表
time_list = [0, 1, 2, 3, 4, 5]
speed_list = [0, 2.1, 4.2, 6.0, 8.3, 10.1]

# 选择拟合阶数:1=线性,2=二次,依图像形态调整
fit_degree = 1
# 计算拟合系数
coeffs = np.polyfit(time_list, speed_list, fit_degree)
# 生成拟合函数
fit_function = np.poly1d(coeffs)

# 输出拟合的函数表达式
print(f"拟合函数:{fit_function}")

# 可视化原始数据与拟合曲线
plt.plot(time_list, speed_list, 'o', label='原始数据')
plt.plot(time_list, fit_function(time_list), '-', label='拟合曲线')
plt.legend()
plt.show()

2. 非线性拟合(特殊曲线场景)

如果图像是指数、对数、正弦等非多项式形态,用 scipy.optimize.curve_fit 自定义函数拟合:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# 自定义目标拟合函数(示例为指数函数)
def exp_func(x, a, b, c):
    return a * np.exp(b * x) + c

# 替换为你的实际数据
time_list = [0, 1, 2, 3, 4]
speed_list = [1.1, 2.8, 7.3, 20.2, 54.5]

# 拟合参数计算
popt, _ = curve_fit(exp_func, time_list, speed_list)
a, b, c = popt

# 输出拟合结果
print(f"拟合指数函数:y = {a:.2f} * e^({b:.2f}x) + {c:.2f}")

# 可视化
x_fit = np.linspace(min(time_list), max(time_list), 100)
plt.plot(time_list, speed_list, 'o', label='原始数据')
plt.plot(x_fit, exp_func(x_fit, a, b, c), '-', label='拟合曲线')
plt.legend()
plt.show()

非代码工具方案

  • OriginLab:可视化操作的专业拟合工具,支持几十种预设函数拟合,无需编程。
  • MATLAB:用 fit 函数可快速实现各类曲线拟合,语法逻辑与Python类似,适合熟悉MATLAB的用户。

注意:拟合前先观察图像形态选择对应函数类型,多项式阶数不宜过高,避免过拟合导致数据范围外预测失真。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:10:34