选取求解算法
可以为以下函数选取求解算法:Find、Minerr、Minimize、Maximize、Pdesolve、Odesolve、numol、genfit 和 polyroots 以及定积分。
• 要查看算法,请右键单击函数名称或积分运算符。
• 要更改求解算法,请从列表中选择求解算法。
定积分的算法选择
• 龙贝格 - 适用于大多数积分。在偶数个子区间上使用梯形近似值,然后通过对梯形面积求和来比较一系列积分估值。
• 自适应:适用于在积分区间内迅速变化的函数。也称自适应求积法。
• 无穷极限 - 适用于其中一个或两个极限均为无穷大的积分。积分函数必须为实数函数。
• 奇异端点 - 适用于在一个或两个积分极限处存在奇点或无穷大值的积分。也称开放式龙贝格方法。
附加信息:
• 如果至少一个积分极限大于 10^307 的绝对值,或为无穷大,则自动选择将使用无穷极限作为求解算法。其他情况则使用自适应。
Find、Minerr、Minimize 和 Maximize 的算法选择
对于
Find、Minerr、Minimize 和 Maximize,
自动选择所使用的默认算法为
非线性: 列文伯格-马夸尔特法。
• 线性 - 适用于涉及线性结构的问题,即含有所有约束的目标函数。此算法可快速求得精确结果。
• 非线性: 列文伯格-马夸尔特 - 尝试求出约束中的零误差。如果未求出零误差,该方法会尽可能求出约束中误差的最小平方和。
• 非线性: 共轭梯度 - 因式分解投影矩阵,并通过共轭梯度方法近似求得障碍问题二次模型的最小值。
• 非线性: SQP - 此有效集方法可解决一系列二次规划子问题,进而求得所需解。
• 非线性: 内点 - 此方法用一系列由障碍参数控制的障碍子问题替换非线性规划问题。
• 非线性: 有效集 - 有效集方法可基于原始问题的二次模型求解一系列子问题。
故障排除:
• 尝试其他方法。对于要解决的问题,某个特定方法可能比其他方法效果更好,也可能更差。
• 尝试不同的估值或添加不等式约束。如果求解复数解,请提供复数估值。
• 使用 Minerr 代替 Find 来获得近似解。
对于具有多个解的方程组,返回的解取决于估值。可添加不等式以强制求解器找到不同的解。
Pdesolve 和 numol 的算法选择
对于
Pdesolve 和
numol,默认求解算法为
递归五点差分。使用
Radau 方法求解所有算法。
• 多项式 - 使用一阶和二阶空间导数的多项式近似值,通过 time 变量将 PDE 方程组简化为 ODE方程组。
• 中心差分 - 使用一阶空间导数的中心差分近似值,并递归应用二阶空间导数,以通过 time 变量将 PDE 方程组简化为 ODE 方程组。
• 五点差分 - 使用一阶空间导数的五点差分近似值和二阶空间导数的单独近似值,通过 time 变量将 PDE 方程组简化为 ODE 方程组。
• 递归五点差分 - 使用一阶空间导数的五点差分近似值,并递归应用二阶空间导数,以通过 time 变量将 PDE 方程组简化为 ODE 方程组。
Odesolve 的算法选择
• Adams/BDF (默认) - 对于非刚性方程组,Odesolve 调用使用 Adams-Bashforth 算法的 Adams 求解器。如果 Odesolve 检测到 ODE 方程组为刚性方程组,则会切换到 BDF (后向微分公式) 求解器。
• 固定 - 调用使用固定步长 Runge-Kutta 算法的 rkfixed 求解器。
• 自适应 - 调用使用 Runge-Kutta 算法和自适应步长大小的 Rkadapt 求解器。
• Radau - 对于刚性方程组或具有代数约束的方程组,Odesolve 调用 Radau 求解器。
genfit 算法选择
• 列文伯格-马夸尔特优化 (默认) - 列文伯格-马夸尔特 法可求得非线性最小化数值解,其优化版本的求解速度通常更快,相较于不甚精确的估值,优化后的版本对所提供的代数导数中的误差更为敏感。
• 列文伯格-马夸尔特 - 此方法可求得非线性最小化数值解,适用于解决非线性最小二乘法问题。此方法应与 genfit 结合使用以获得可靠的函数和精确的估值。
polyroots 的算法选择
• 拉盖尔 (默认) - 此方法为迭代法,用于在复平面中搜索解。
• 友矩阵 - 此方法可将方程转换为特征值问题。