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

Python中基于符号数组与数值数组求解线性回归最优E值

求解最优E的实现方案

你的所有方程均为 常数/E 的形式,可直接推导最小二乘损失下的解析解,无需复杂数值迭代,具体实现如下:

import numpy as np
import sympy as sp

# 原有变量定义
E = sp.Symbol('E')
values = np.array([0.0, 0.0001, 0.0001, 0.0002, 0.0003, 0.0004, 0.0006, 0.0007, 0.0009, 0.0011, 0.0013, 0.0015, 0.0017, 0.0019, 0.0021, 0.0024, 0.0026, 0.0028, 0.0031, 0.0033, 0.0036, 0.0038, 0.0041, 0.0043, 0.0046])
equations = np.array([27405854.8989427/E, 106962058.905272/E, 234787976.631598/E, 407151513.555005/E, 620469116.017057/E, 871305771.223787/E, 1156375007.24571/E, 1472538893.01782/E, 1816808038.33958/E, 2186341593.87493/E, 2578447251.15228/E, 2990581242.5645/E, 3420348341.36898/E, 3865501861.68755/E, 4323943658.50655/E, 4793724127.67675/E, 5273042205.91346/E, 5760245370.79641/E, 6253829640.76983/E, 6752439575.14242/E, 7254868274.08736/E, 7760057378.64231/E, 8267097070.70941/E, 8775226073.05526/E, 9283831649.31095/E])

# 提取每个方程的分子常数项
k_list = np.array([float(eq.subs(E, 1)) for eq in equations])

# 最小二乘解析解计算最优E:最小化sum((k_i/E - value_i)^2)
E_opt = np.sum(k_list ** 2) / np.sum(k_list * values)

print(f"最优E取值为:{E_opt}")

# 验证代入后的误差效果
pred_values = k_list / E_opt
mae = np.mean(np.abs(pred_values - values))
print(f"代入最优E后的平均绝对误差为:{mae}")

补充说明

如果后续你的方程形式更复杂,无法推导解析解,可以使用scipy.optimize.minimize做数值优化求解,逻辑如下:

  • 定义损失函数:输入E,返回所有方程代入E后和对应数值的误差平方和
  • 给E设置合理的初始猜测值,调用优化函数求解最小值点即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:27:04