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

如何在Python中构造多项式x1*x2*Ai(x1-x2)^6并提取Ai?

解决单参数线性拟合问题:求解 ( A_i )

你的需求是拟合模型 ( y = A_i \cdot x_1 x_2 (x_1 - x_2)^6 ),其中 ( x_1、x_2 ) 为实验输入数据,( y ) 为对应输出,目标是提取参数 ( A_i )。np.polyfit 仅适用于单自变量的多项式曲线拟合(如 ( y = a_0 + a_1x + ... + a_nx^n )),无法直接处理这种多自变量组合的线性模型,可通过以下两种通用线性拟合方法解决:

方法一:使用numpy线性代数工具(最小二乘法)

这是最直接的方式,利用最小二乘法求解线性方程组 ( y = A_i \cdot f )(其中 ( f = x_1x_2(x_1-x_2)^6 )):

import numpy as np

# 替换为你的实验数据
x1 = np.array([1.2, 2.3, 3.1, 4.5])
x2 = np.array([0.8, 1.5, 2.2, 3.0])
y = np.array([5.6, 12.3, 20.1, 35.7])

# 构造特征项f
f = x1 * x2 * (x1 - x2)**6

# 转换为列向量以满足线性代数求解要求
F = f.reshape(-1, 1)

# 最小二乘法求解Ai
Ai, _, _, _ = np.linalg.lstsq(F, y, rcond=None)

print(f"求得的参数Ai: {Ai[0]:.4f}")

方法二:使用scikit-learn线性回归模型

适合后续扩展复杂模型的场景,需显式指定不拟合截距项(因为你的模型无截距):

from sklearn.linear_model import LinearRegression
import numpy as np

# 替换为你的实验数据
x1 = np.array([1.2, 2.3, 3.1, 4.5])
x2 = np.array([0.8, 1.5, 2.2, 3.0])
y = np.array([5.6, 12.3, 20.1, 35.7])

# 构造特征项f
f = x1 * x2 * (x1 - x2)**6
F = f.reshape(-1, 1)

# 初始化模型,关闭截距拟合
model = LinearRegression(fit_intercept=False)
model.fit(F, y)

Ai = model.coef_[0]
print(f"求得的参数Ai: {Ai:.4f}")

核心逻辑说明

你的模型本质是单参数线性模型,所有输入变量的组合项 ( x_1x_2(x_1-x_2)^6 ) 可视为一个整体特征,求解 ( A_i ) 等价于找到使预测值与实验值误差平方和最小的系数,这正是线性最小二乘法的适用场景。

内容的提问来源于stack exchange,提问作者Валерия Александровна Тецлова

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:41:00