NSolve

NSolve[expr,vars]

试图找到以 vars 为变量的方程组或不等式组 expr 的解的数值近似.

NSolve[expr,vars,Reals]

在实数域内求解.

更多信息和选项

  • expr 可以为下述形式的任意逻辑组合:
  • lhs==rhs方程
    lhs!=rhs不等方程
    lhs>rhslhs>=rhs 不等式
    exprdom定义域说明
    {x,y,}reg区域指定
    ForAll[x,cond,expr]全称量词
    Exists[x,cond,expr]存在量词
  • NSolve[{expr1,expr2,},vars] 等价于 NSolve[expr1&&expr2&&,vars].
  • 可以指定一个单变量或一个变量列表.
  • NSolve 以如下规则形式给出解:
  • {}没有解
    {{x->solx,y->soly,},}几个解
    {{}}解集是全维度的
  • 当指定了一个单变量且一个方程的一个特定根具有大于1的重数时,NSolve 给出对应解的多个复件.
  • NSolve[expr,vars] 缺省假设以代数形式出现在不等式中的量为实数,而其它所有量为复数.
  • NSolve[expr,vars,Reals] 中,所有变量、参数、常数以及函数值被限定为实数.
  • NSolve[expr&&varsReals,vars,Complexes] 求解得到的是变量的实数值,但函数值可以为复数.
  • NSolve[,xreg,Reals]x 约束在区域 reg 内. x 的不同坐标可以使用 Indexed[x,i] 指代.
  • NSolve 处理的主要是线性和多项式方程.
  • 可以给出以下选项:
  • MaxRoots Automatic返回的最大根数
    Method Automatic应该使用何种方法
    RandomSeeding1234伪随机发生器的种子
    VerifySolutions Automatic是否验证解
    WorkingPrecision Automatic计算所用精度
  • 可能的 Method 设置包括 "EndomorphismMatrix""Homotopy""Monodromy",和 "Symbolic". »

范例

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

基本范例  (6)

一个多项式方程的近似解:

一个多项式方程的近似实解:

求高次多项式方程的三个近似解:

多项式方程组的近似解:

多项式方程组的近似实解:

求解几何区域中的方程:

范围  (48)

单变量复数方程  (10)

单变量多项式方程:

具有不确切系数的多项式方程:

具有多重根的多项式方程:

求一个高次多项式的五个根:

代数方程:

超越方程:

求所有解:

指定返回的解的数量:

有界区域上的单变量初等函数方程:

有界区域上的单变量正则函数方程:

复平面上一个垂直条纹的纯虚周期的方程:

求所有解:

无限制超越函数方程:

多变量复数方程组  (9)

线性方程组:

具有不确切系数的线性方程:

欠定线性方程组:

无解的线性方程:

多项式方程组:

从多项式方程组的一万亿个根中找出五个:

欠定多项式方程组:

代数方程:

超越方程:

指定返回的解的数量:

单变量实数方程  (11)

多项式方程:

具有多重根的多项式方程:

代数方程:

分段方程:

可用反函数求解的超越方程:

超越方程,可用特殊零函数求解:

超越不等式,可用特殊零函数求解:

指对数方程:

高次离散多项式方程:

涉及高次根式的代数方程:

涉及无理实数幂的方程:

Tame 初等函数方程:

有界区间上的初等函数方程:

有界区间上的正则函数方程:

多变量实数方程组和不等式组  (9)

线性方程组:

多项式方程组:

量化的多项式方程组:

代数方程组:

分段方程组:

超越方程及不等式组,可用反函数求解:

第一个变量为指数对数形式、其它变量为多项式形式的方程组:

量化的方程组:

第一个变量为初等有界形式、其它变量为多项式形式的方程组:

量化的方程组:

第一个变量为正则有界形式、其它变量为多项式形式的方程及不等式组:

量化的方程及不等式组:

变量域混合的方程及不等式组  (1)

混合的实数及复数变量:

几何区域  (8)

在二维空间的特殊区域中求解:

绘制图线:

求解三维空间中的特殊区域:

绘制图线:

隐式定义的区域:

参数式定义的区域:

导出区域:

绘制图线:

与参数相关的区域:

绘制图形:

求圆能将给定点包含进去的参数 的值:

绘制图形:

指定 中的矢量:

此例中 中的矢量:

推广和延伸  (1)

求解所有变量:

工作精度可由最后一个参数给出:

选项  (10)

MaxRoots  (4)

从多项式的 个根中求出其中 个:

从多项式方程组的 个根中求出其中 个:

从一个超越方程组的无穷多个解中求出 个:

在默认的 Automatic 设置下,NSolve 可能无法给出所有解:

设置 MaxRootsInfinityNSolve 会尝试求所有解:

Method  (4)

使用自动选择的方法求解平方多项式方程式:

使用 "EndomorphismMatrix" 方法:

使用 "Homotopy" 方法:

使用 "Monodromy" 方法:

使用 "Symbolic" 方法:

该方程组有 个根,严格小于 Bernstein-Khovanskii-Kushnirenko 定理提供的 根的界限:

默认使用的 "Homotopy" 方法会返回某些根的多个重复副本:

删除重复副本:

"Monodromy" 方法在这里运行得更快,而且不会产生根的重复副本:

"Monodromy" 方法返回超越方程组的有限多个解:

使用 "Symbolic" 方法可以获取所有解:

Method 选项也可用于本地设置 "NSolveOptions" 组中的系统选项:

缺省时,NSolve 为欠定复数方程组引入分层超平面:

Method->{"UseSlicingHyperplanes"->False} 时,NSolve 给出参数化的解:

VerifySolutions  (1)

NSolve 合适用不等价变换获得的解:

通过 VerifySolutions->FalseNSolve 不核实解:

部分同 VerifySolutions->False 一起返回的解不正确:

这里用一个快速数值测试以求选出正确解:

这种情况下简单的数值确认给出正确解的集合:

WorkingPrecision  (1)

缺省时,NSolve 利用机器精度计算得到确切方程的解:

这里用50位精度计算解:

应用  (17)

几何  (11)

求出圆和抛物线的交点:

InfiniteLine[{0,0},{1,1}]InfiniteLine[{{0,1},{1,0}}] 的交集:

绘制图线:

InfiniteLine[{0,0},{1,1}]Circle[{0,0},1] 的交集:

绘制图线:

求5个随机线条的所有成对交集:

使用 BooleanCountingFunction 表示恰好两个条件为真:

绘制图线:

求圆环 Circle[{1/3 Cos[k 2π/5],1/3 Sin[k 2π/5]}] 的每一对交集,其中 k=0,,4:

绘制图线:

InfiniteLine[{{-1,1,1},{1,1,1}}]InfinitePlane[{{2,0,0},{0,2,0},{0,0,2}}] 的交集:

绘制图线:

InfiniteLine[{{-1,1,1},{1,1,1}}]Sphere[{0,0,0},3] 的交集:

绘制图线:

InfiniteLine[{{-1,1/3,1/2},{1,1/3,1/2}}]Tetrahedron[{{0,0,0},{1,0,0},{0,1,0},{0,0,1}}] 边界的交集:

绘制图线:

求三个随机平面的交集:

绘制图线:

求球面 Sphere[{1/3 Cos[k 2π/3],1/3 Sin[k 2π/3],0}] 的叠加区域,其中 k=0,1,2:

绘制图线:

求在10个随机平面中恰好三个平面交叠的所有交集:

使用 BooleanCountingFunction 查找恰好三样东西为真的条件:

绘制图线:

化学  (1)

某种化学反应网络平衡的多项式方程式:

由于变量代表化学物质的数量,我们对所有分量均为非负的实值解感兴趣:

求解:

表观多重性是 Automatic 方法的一个伪影,该方法往往很快,但有时会夸大多重性:

机械  (3)

Gough-Stewart 自由度为 6 的平行平台的正运动学:

该解集有多个解;删除解的重复副本:

不同的方法不会生成解的重复副本:

建立一个由四个变量组成的六方程超定系统,该系统源于摄像机姿态估算程序:

使用前四个多项式就可以精确确定子系统:

对于每个解,插入解的前四个残差都很小,而后两个残差则不可忽略:

现在,将每个解作为最小化残差平方和的起点,精细化求解每个解:

平面内两根无质量缆绳悬挂重物的静态平衡方程组:

每个实值解均对应一个不同的平衡位置,共有六个这样的平衡位置:

经济  (1)

经济学中出现的简化 8 维系统;我们使用非默认方法来获得更高的精度:

求实值解:

差分方程  (1)

多项式差分方程的非线性方程组:

RSolve 无法找到解的解析形式:

建立多项式系统,找出渐近值:

求解并给出可能的实数渐近值(它们取决于初始条件):

属性和关系  (8)

近似满足方程的解:

以替代规则给出的解可以直接用于替代:

NSolve{} 表示空或无解:

NSolve{{}} 表示通解或满足方程的所有点:

对于单变量多项式方程,NSolve 会根据解的倍数重复求解:

求指定域上的解:

NSolve 表示替换规则的解:

NSolveValues 给出了解的值:

NSolve 是一个全局方程求解器:

FindRoot 是一个局部方程求解器:

NSolve 给出近似结果:

使用 Solve 得到确切解:

使用 FindInstance 得到确切解的实例:

使用 NDSolve 对微分方程进行数值求解:

可能存在的问题  (7)

通过机器精度数值计算得到的解可能不准确:

更高的 WorkingPrecision 下,产生了更准确的结果:

由于数值误差的存在,近似解可能不满足方程:

方程在一定公差范围内成立:

使用较高的 WorkingPrecision 将给出公差较小的解:

如果多项式系统的解集是无限的,NSolve 会给出其与随机超平面的交集:

ContourPlotContourPlot3D 观察解的实部:

默认情况下,NSolve 可能会显示有多个解,但实际计数其实应该更小:

与非默认方法进行比较:

根据另一个非默认方法进行验证:

使用特定方法求解系数较大的多项式系统:

使用相同的方法,但精度高于默认值:

在机器精度水平上,有些残差并不小:

使用更高精度的解得到的残差更小,这一点不足为奇:

尽管残差存在差异,但两个解在 MachinePrecision 的所有位数上都是一致的:

在指定域为 Reals 的情况下,NSolve 可能无法找到在解的任何邻域中函数不是实值的解:

给出所有实数解:

NSolve 可能不会给出所有解:

获得 个解:

巧妙范例  (1)

求解方程

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

文本

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

CMS

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

APA

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

BibTeX

@misc{reference.wolfram_2024_nsolve, author="Wolfram Research", title="{NSolve}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/NSolve.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_nsolve, organization={Wolfram Research}, title={NSolve}, year={2024}, url={https://reference.wolfram.com/language/ref/NSolve.html}, note=[Accessed: 21-November-2024 ]}