FindRoot
FindRoot[f,{x,x0}]
求 f 的一个数值根,从点 x=x0 开始.
FindRoot[lhs==rhs,{x,x0}]
求方程 lhs==rhs 的一个数值解.
FindRoot[{f1,f2,…},{{x,x0},{y,y0},…}]
求满足所有 fi 的数值解.
FindRoot[{eqn1,eqn2,…},{{x,x0},{y,y0},…}]
求联立方程 eqni 的一个数值解.
更多信息和选项
- 如果变量的初始值是以列表形式给出,变量值采用相同维数的列表.
- FindRoot 返回 x,y,… ,的替换列表,这和从 Solve 获得的形式相同.
- FindRoot 首先局部化所有变量值,然后在变量保持符号形式的情况下计算 f,然后以数值法重复计算结果.
- FindRoot 具有属性 HoldAll,实际上用 Block 局部化变量.
- FindRoot[lhs==rhs,{x,x0,x1}] 用 x0 和 x1 作为 x 的前 2 个值进行求解,避免使用导数.
- FindRoot[lhs==rhs,{x,xstart,xmin,xmax}] 搜索一个解,如果 x 超出了 xmin 到 xmax 的范围,就停止搜索.
- 如果用户只指定了 x 的一个初值,FindRoot 就用牛顿法求解. 如果用户指定两个初值,FindRoot 会采用割线法的变体来求解.
- 如果所有方程和初值都是实数,则 FindRoot 仅搜索实数根. 如果出现复数,则还要搜索复数根.
- 可以通过对初值加上 0.I,使 FindRoot 搜索复数根.
- 可以给出下列选项:
-
AccuracyGoal Automatic 搜索的准确度 EvaluationMonitor None 计算方程时要计算的表达式 Jacobian Automatic 方程组的 Jacobian MaxIterations 100 最大迭代次数 Automatic 使用的方法 PrecisionGoal Automatic 搜索精度 StepMonitor None 每个步骤计算的表达式 WorkingPrecision MachinePrecision 内部计算的精度 - AccuracyGoal 和 PrecisionGoal 的默认设置是 WorkingPrecision/2.
- AccuracyGoal 的设置指定了搜索根的位置和计算函数在根处的值时要达到多少位的准确度.
- PrecisionGoal 的设置指定了搜索根的位置时要采用多少位的精度.
- FindRoot 会持续搜索直到实现 AccuracyGoal 或 PrecisionGoal 指定的目标中的任何一个.
- 如果 FindRoot 在 MaxIterations 步骤内,没有搜索到指定准确度的解,它将返回最后找到的解的近似值. 可用这个近似值为起点,再次应用 FindRoot.
范例
打开所有单元关闭所有单元范围 (4)
选项 (9)
应用 (3)
计算反函数 (1)
属性和关系 (2)
对一个多项式方程组,NSolve 求所有解,FindRoot 求一个解:
FindRoot 用迭代法求单个解:
NSolve 直接求出所有解:
对含有参数或有精确解的方程,用 Solve、Reduce 或 FindInstance:
Solve 将返回某些解:
Reduce 列举所有解:
FindInstance 求特定实例:
文本
Wolfram Research (1988),FindRoot,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindRoot.html (更新于 2003 年).
CMS
Wolfram 语言. 1988. "FindRoot." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2003. https://reference.wolfram.com/language/ref/FindRoot.html.
APA
Wolfram 语言. (1988). FindRoot. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FindRoot.html 年