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

如何实现仅含偶次项的多项式拟合及系数有效性验证

问题解答

1. 仅含偶次项的4阶多项式拟合与系数获取

普通的np.polyfit会生成包含0到4次所有项的多项式,要只保留偶次项(常数项、x²、x⁴),需要手动构造特征矩阵,将输入的振幅值转换为对应偶次幂的特征,再通过最小二乘法求解系数。

具体实现代码:

import numpy as np
import matplotlib.pyplot as plt

# 修正数据提取(假设name是pandas DataFrame)
amp = name['amplitude'].values
energy1 = name['solar'].values

# 构造偶次项特征矩阵:每一行对应 [1, x², x⁴]
X = np.column_stack([np.ones_like(amp), amp**2, amp**4])
# 最小二乘拟合求解系数
coeffs, _, _, _ = np.linalg.lstsq(X, energy1, rcond=None)
a0, a2, a4 = coeffs  # 分别对应常数项、x²项、x⁴项的系数

# 定义仅含偶次项的拟合函数
def even_degree_fit(x):
    return a0 + a2 * x**2 + a4 * x**4

# 可视化拟合结果
x1 = np.linspace(-1.6, 1.6, 100)
plt.plot(amp, energy1, 'b^', label="solar", markersize=12)
plt.plot(x1, even_degree_fit(x1), 'b', linewidth=2.0, label='Even-degree fit')
plt.legend()
plt.show()

# 输出拟合系数
print(f"偶次项拟合系数:")
print(f"常数项a0 = {a0:.4f}")
print(f"x²项系数a2 = {a2:.4f}")
print(f"x⁴项系数a4 = {a4:.4f}")

2. 验证特定amplitude下的拟合值与原始数据匹配

选取目标振幅值,从原始数据中提取对应的energy1,再用拟合函数计算该振幅的预测值,通过对比两者的误差来验证匹配程度(注意浮点精度问题,用np.isclose匹配数值)。

具体实现代码:

# 指定要验证的amplitude值
target_amp = 1.2  # 可替换为你需要验证的数值

# 从原始数据中找到对应amplitude的energy1(处理浮点精度)
match_indices = np.isclose(amp, target_amp)
if np.any(match_indices):
    original_energy = energy1[match_indices][0]
    predicted_energy = even_degree_fit(target_amp)
    
    # 输出对比结果
    print(f"=== 验证amplitude={target_amp} ===")
    print(f"原始energy1: {original_energy:.4f}")
    print(f"拟合预测值: {predicted_energy:.4f}")
    print(f"绝对误差: {abs(original_energy - predicted_energy):.6f}")
    print(f"相对误差: {abs(original_energy - predicted_energy)/original_energy:.6%}")
else:
    print(f"原始数据中没有找到接近{target_amp}的amplitude值")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:05:29