LinearSolve

LinearSolve[m,b]

求解矩阵方程 m.x==bx.

LinearSolve[m]

产生一个可重复应用于不同 bLinearSolveFunction[].

LinearSolve[a,b]

求解数组方程 a.x==bx.

更多信息和选项

  • LinearSolve 可用于数字矩阵和符号矩阵,也可用于 SparseArray 对象.
  • 自变量 b 或者是一个向量或者是一个矩阵. »
  • 矩阵 m 可以是方阵或矩形阵. »
  • LinearSolve[m]LinearSolveFunction[] 提供一个有效的方式多次求解相同的近似数值的线性系统.
  • LinearSolve[m,b] 等价于 LinearSolve[m][b].
  • 对未确定的系统,LinearSolve 返回一个可能的特解;Solve 返回通解. »
  • 对于一个 n1××nk×m 的数组 a 和一个 n1××nk×d1××dl 的数组 bLinearSolve[a,b] 给出一个 m×d1××dl 的数组 x,使得 a.xb.
  • LinearSolve 具有下列选项和设置:
  • Method Automatic使用的方法
    Modulus 0是否求解模 n
    ZeroTestAutomatic测试以判断什么时候表达式是零
  • ZeroTest 选项只应用于精确和符号矩阵.
  • 设置 Method->Automatic,取决于输入自动选择该方法.
  • 精确和符号矩阵的显式 Method 设置包括:
  • "CofactorExpansion"拉普拉斯 cofactor 展开
    "DivisionFreeRowReduction"不可除行化简的 Bareiss 方法
    "OneStepRowReduction"标准行化简
  • 近似数值矩阵的显式 Method 设置包括:
  • "Banded"带状矩阵求解器
    "Cholesky"正定 Hermitian 矩阵的 Cholesky 方法
    "Krylov"迭代 Krylov 稀疏求解器
    "Multifrontal"直接稀疏 LU 分解
    "Pardiso"并行直接稀疏求解器

范例

打开所有单元关闭所有单元

基本范例  (3)

,求解矩阵-向量方程

验证解:

,求解矩阵方程

验证解:

求解矩阵方程:

验证解:

范围  (16)

基本用法  (9)

以机器精度求解

是矩阵的情况下求解:

复矩阵的情况下求解

求精确矩阵的解:

在任意精度上计算解:

符号矩阵的情况下求解

是矩阵的情况下求解:

求解有限域上的

求解 CenteredInterval 矩阵:

找出 mb 的随机代表 mrepbrep

验证 sol 包含 LinearSolve[mrep,brep]

是维数不同的矩阵,解 ,求得

如果没有给定 右侧的 ,则返回 LinearSolveFunction

下面给出针对一些 值快速求解的数据:

特殊矩阵  (6)

稀疏矩阵的情况下求解

由于结果通常不是稀疏矩阵,因此以普通列表的形式返回结果:

用稀疏方法高效求解稀疏矩阵:

可视化结果:

结构化矩阵的情况下求解:

使用不同类型的矩阵结构:

单位矩阵总是给出平凡解:

求解系数矩阵为 Hilbert 矩阵的线性方程组:

求解一个 方程组,其系数为次数为 的单变量多项式:

数组  (1)

用 2×3×6 的数组 和一个 2×3×4×5 的数组 求解

得到的结果为一个 6×4×5 的数组:

验证解:

选项  (7)

Method  (6)

"Banded"  (1)

用带状矩阵法解

检查计算结果的相对误差:

"Cholesky"  (1)

用 Cholesky 分解求解

检查计算结果的相对误差:

"Krylov"  (2)

对于 "Krylov" 方法,可以指定下列子选项:

  • "BasisSize"Krylov 基的大小(只适用于 GMRES 法)
    "MaxIterations"最大迭代次数
    "Method"使用的方法
    "Preconditioner"使用哪个预条件子
    "PreconditionerSide"怎样运用预条件子("Left""Right"
    "ResidualNormFunction"范数函数,用来计算解的残差的范数
    "StartingVector"迭代计算的初始向量
    "Tolerance"停止迭代的容差
  • "Method" 的可能设置包括:

  • "BiCGStab"用于厄尔米特矩阵的迭代算法
    "ConjugateGradient"用于正定厄尔米特矩阵的迭代算法
    "GMRES"用于方阵的迭代算法
  • "Preconditioner" 的可能设置包括:

  • "ILU0"基于对未进行元素填充的原始矩阵不完全 LU 分解的预条件子
    "ILUT"ILU0 的变体,进行元素填充
    "ILUTP"ILUT 的变体,进行列置换
  • "Preconditioner" 的子选项可以包括:

  • "FillIn"允许由 ILUT 预条件子引入的行中出现非零元素个数的上限
    "PermutationTolerance"什么时候进行列置换
    "Tolerance"调降公差(视幅值小于该设定值的元素为零)
  • 用 Krylov 方法求解

    检查计算结果的相对误差:

    "Multifrontal"  (1)

    用直接多波前法求解

    检查计算结果的相对误差:

    "Pardiso"  (1)

    用 Pardiso 法求解

    查看解的相对误差:

    Modulus  (1)

    求模47的 m.x==b 的解 x

    验证解:

    应用  (11)

    生成空间和线性独立  (3)

    以下三个向量不是线性独立的:

    右侧为通用变量的情况下方程无解:

    同样,右边为单位矩阵的方程也没有解:

    以下三个向量是线性独立的:

    右侧为通用变量的情况下方程有解:

    同样,右边为单位矩阵的方程也有解:

    解是 的逆矩阵:

    确定以下向量是否线性无关:

    由于 对任意 无解,它们不是线性无关的:

    求解方程和可逆性  (6)

    解以下方程组:

    将方程组改写为矩阵形式:

    LinearSolve 求解:

    NullSpace 证明解是唯一的:

    SolveValues 验证结果:

    求下列方程组的所有解:

    首先,写出系数矩阵 、变量向量 和常向量

    检验重写后的方程组:

    LinearSolve 给出特解:

    NullSpace 给出齐次方程 解的基:

    定义 的元素的任意线性组合:

    通解是 的和:

    确定以下矩阵是否有逆矩阵:

    由于方程组 无解, 没有逆矩阵:

    Inverse 验证结果:

    确定以下矩阵是否有非零行列式:

    由于方程组 有一个解, 的行列式一定非零:

    Det 确认结果:

    求以下矩阵的逆矩阵:

    想要求出逆矩阵,先求解方程组

    Inverse 验证结果:

    通过计算 LinearSolveFunction 解方程组 ,其中 取不同的值:

    通过求矩阵的逆并乘以逆来进行计算:

    结果几乎相同,尽管 LinearSolveFunction 快很多倍:

    微积分  (2)

    求多元函数根的牛顿法:

    FindRoot 求得的答案相比较:

    用离散差分近似求解边界值问题

    显示与精确解相比较的误差:

    属性和关系  (9)

    对于可逆矩阵 LinearSolve[m,b] 给出相应方程组的解与 SolveValues 的相同:

    创建相应的线性方程组:

    确认 SolveValues 给出同样的结果:

    对于齐次方程 LinearSolve 总是返回平凡解

    如果 是奇异矩阵,用 NullSpace 获取完整的解集:

    SolveValues 的结果相比较:

    如果 是非奇异矩阵,当 是单位矩阵时, 的解 的逆矩阵:

    在下面的例子中, 无解:

    LeastSquares 最小化

    与通用的最小化相比较:

    如果 可解,则 LeastSquares 等价于 LinearSolve

    对于方阵,如果 b 是通用的,当且仅当 Det[m]!=0LinearSolve[m,b] 才有解:

    对于方阵,如果 b 是通用的,当且仅当 m 是满秩矩阵时 LinearSolve[m,b] 才有解:

    对于方阵,如果 b 是通用的,当且仅当 m 有逆矩阵时 LinearSolve[m,b] 才有解:

    对于方阵,如果 b 是通用的,当且仅当 m 有平凡零空间时 LinearSolve[m,b] 才有解:

    可能存在的问题  (3)

    为欠定方程组找到的解不是唯一的:

    所有的解都是用 Solve 求出的:

    LinearSolve 给出对应于 的解:

    对于病态矩阵,数值解可能不够准确:

    如果使用足够高的精度,解会更准确:

    一些可用的线性求解器不是确定性的. 建立方程组:

    创建求解器函数:

    "Pardiso" 求解器不是确定性的:

    Automatic 求解器方法是确定性的:

    巧妙范例  (3)

    用直接法求解100,000个方程:

    用迭代法求解上百万个方程:

    检查计算结果的相对误差:

    用带状矩阵法求解同一个方程组:

    检查计算结果的相对误差:

    Wolfram Research (1988),LinearSolve,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LinearSolve.html (更新于 2024 年).

    文本

    Wolfram Research (1988),LinearSolve,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LinearSolve.html (更新于 2024 年).

    CMS

    Wolfram 语言. 1988. "LinearSolve." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/LinearSolve.html.

    APA

    Wolfram 语言. (1988). LinearSolve. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/LinearSolve.html 年

    BibTeX

    @misc{reference.wolfram_2024_linearsolve, author="Wolfram Research", title="{LinearSolve}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/LinearSolve.html}", note=[Accessed: 02-December-2024 ]}

    BibLaTeX

    @online{reference.wolfram_2024_linearsolve, organization={Wolfram Research}, title={LinearSolve}, year={2024}, url={https://reference.wolfram.com/language/ref/LinearSolve.html}, note=[Accessed: 02-December-2024 ]}