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

已知x与y,求解满足Ax=y的非方阵A的方法

求解满足Ax=y的非方阵A

已知向量x(10维)和y(8维),求8×10矩阵A使得Ax = y,核心要点如下:

问题本质分析

Ax = y展开后是8个线性方程:对A的第i行向量a_i,满足a_i · x = y_i(向量内积)。A共有80个元素,但仅受8个约束,因此存在无穷多个解,无法唯一确定原矩阵(除非额外添加约束,比如稀疏性、秩限制等)。

你之前尝试的A = BX^-1方法失效,是因为该公式仅适用于X为可逆方阵的场景——这里x是单个向量,对应的矩阵是10×1的列矩阵,不是方阵,无法求逆,因此不适用。

具体解法示例

方法1:最小范数解(行向量为x的倍数)

这是所有解中行向量范数最小的解,构造方式为:每个行向量是x的缩放版本,缩放系数由y_i和x的范数决定。

# 已知x和y
x <- c(50,36,60,85,14,22,84,92,34,74)
y <- matrix(c(0.51*50+0.42*36,
              0.35*60+0.49*85+0.43*14,
              0.43*22+0.31*84+0.97*92,
              0.70*34+0.42*74,
              50+60,
              36+85+22,
              14+84+34,
              92+74), nrow=8)

# 计算x的范数平方
norm_x_sq <- sum(x^2)
# 构造解矩阵
A_min_norm <- t(y) %*% t(x) / norm_x_sq

# 验证
all.equal(A_min_norm %*% x, y) # 返回TRUE,说明满足条件

方法2:稀疏解(仅保留单个非零元素)

选择x中任意非零元素(比如第一个元素x[1]=50),令每行仅该位置非零,直接计算满足方程的系数:

A_sparse <- matrix(0, nrow=8, ncol=10)
for (i in 1:8) {
  A_sparse[i, 1] <- y[i, 1] / x[1]
}

# 验证
all.equal(A_sparse %*% x, y) # 返回TRUE

方法3:通解构造

每个行向量a_i可以表示为特解 + 齐次解:

  • 特解:任意满足a_i · x = y_i的向量(比如上述两种方法中的行向量)
  • 齐次解:任意与x正交的10维向量(即满足v · x = 0的向量)

因此,完整通解为:A = A0 + Z,其中A0是任意一个特解矩阵,Z是任意8×10矩阵,且Z的每一行都与x正交。

关键结论

  • 仅通过x和y无法唯一确定原矩阵A,只能找到满足条件的一类矩阵。
  • 若要还原原矩阵,需要额外信息(比如A的稀疏结构、非零元素的位置等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:10:29