Numpy中求解Ax=b时固定部分x元素值的简便方法
带固定元素的线性方程组Ax=b求解方法
当你需要求解线性方程组Ax=b,同时要求x的部分元素取固定值时,不需要复杂的矩阵修改技巧,直接通过拆分转化就能简便解决,以下是具体思路和步骤:
核心思路
把固定元素对应的项从原方程中分离出来,将问题转化为只包含未知元素的新线性方程组,求解后再补回固定元素即可。
具体步骤(以x₁固定为4的3×3矩阵为例)
- 拆分原方程
设A是3×3矩阵,列向量为A=[a₁, a₂, a₃],x=[4, x₂, x₃]^T,b是3×1右端项。原方程Ax=b可展开为:4a₁ + x₂a₂ + x₃a₃ = b - 构造新方程组
将固定项移到等式右侧,得到只含未知变量x₂、x₃的方程:
此时:x₂a₂ + x₃a₃ = b - 4a₁- 新系数矩阵A':去掉原矩阵A的第一列,即
A'=[a₂, a₃](3×2矩阵) - 新右端项b':计算
b - 4*a₁(3×1向量) - 新未知向量x':
[x₂, x₃]^T(2×1向量)
- 新系数矩阵A':去掉原矩阵A的第一列,即
- 求解新方程组
求解A'x' = b',根据A'的秩情况:- 若A'列满秩且方程组相容,可直接求出精确解x'
- 若方程组超定(方程数多于未知量),可通过最小二乘法求最优近似解
- 补回固定元素
将解得的x₂、x₃与固定值4组合,得到原问题的解x=[4, x₂, x₃]^T
一般化方法(适用于任意固定元素)
假设x的第k个元素固定为常数c:
- 取出A的第k列,记为a_k
- 计算新右端项:
b' = b - c*a_k - 生成新系数矩阵A':删除A的第k列
- 生成新未知向量x':删除x的第k个元素
- 求解
A'x' = b',最后将c补回x'的对应位置得到原解
这种方法的优势在于无需对原矩阵做复杂的增广或修改,仅通过简单的向量运算拆分问题,计算效率高且逻辑清晰。
内容的提问来源于stack exchange,提问作者Archaic
相关产品推荐
相关产品推荐

