Python如何创建每个元素为fi函数乘积求和结果的矩阵
首先补全你没给出的f0定义后,用numpy向量化操作就能快速实现你要的矩阵构造逻辑,完全不需要嵌套循环:
完整实现代码
import numpy as np from numpy import pi # 预设输入:你的x采样点数组、y观测数组提前定义好 # 补全f0定义,根据你实际的函数调整,示例假设f0是常值函数1 f0 = np.ones_like(x) f1 = np.sin(pi * x) f2 = np.sin((2/3) * pi * x) # 拼接所有f函数为shape=(3, x采样点数量)的数组 f_arr = np.vstack([f0, f1, f2]) # 构造矩阵A:每个元素A[m][n]为所有采样点上f_m * f_n的求和结果 matrix_A = f_arr @ f_arr.T # 构造向量b:每个元素为对应f_i与y乘积的求和结果 vector_b = (f_arr * y).sum(axis=1)
你之前尝试的错误点
- 第一次实现构造的是范德蒙德矩阵,和你需要的f函数乘积求和逻辑完全不匹配,维度也不符合3×3的需求
- 第二次手动组合只计算了单采样点的f乘积,没有执行跨所有采样点的求和步骤,且得到的是嵌套列表而非标准numpy数组
拓展(如果是积分场景)
如果你需要的是连续积分结果而非离散采样点求和,只要加上对应积分权重即可,比如梯形积分的实现:
# 计算梯形积分的区间权重 weight = np.gradient(x) matrix_A = f_arr @ (weight[:, None] * f_arr.T) vector_b = (f_arr * weight * y).sum(axis=1)
内容的提问来源于stack exchange,提问作者Laura V.
相关产品推荐
相关产品推荐

