solve
方程和方程组求解器
语法
说明
使用由一个或多个 S = solve(eqn,var,Name=Value)Name=Value 参量指定的附加选项。
使用由一个或多个 Y = solve(eqns,vars,Name=Value)Name=Value 参量指定的附加选项。
[ 使用由一个或多个 y1,...,yN] = solve(eqns,vars,Name=Value)Name=Value 参量指定的附加选项。
[ 返回额外参量 y1,...,yN,parameters,conditions] = solve(eqns,vars,ReturnConditions=true)parameters 和 conditions,这两者分别指定解中的参数以及解的条件。
示例
输入参数
名称-值参数
输出参量
提示
如果
solve无法求出解并且ReturnConditions为false,则solve函数会在内部调用数值求解器vpasolve来尝试求出数值解。对于没有符号参数的多项式方程和方程组,数值求解器会返回所有解。对于没有符号参数的非多项式方程和方程组,数值求解器仅会返回一个解(如果存在解的话)。如果
solve无法求出解并且ReturnConditions为true,则solve会返回空解并发出警告。如果不存在解,则solve会返回空解且不发出警告。如果解中包含参数且
ReturnConditions为true,则solve函数会返回解中的参数以及解成立的条件。如果ReturnConditions为false,则solve函数会选择参数的值并返回相应的结果,或者返回参数化的解而不选择特定的值。在后一种情况下,solve还会发出警告,指出返回的解中参数的值。如果一个参数不出现在任何条件中,这意味着该参数可以取任何复数值。
除了
solve引入的参数外,solve的输出还可以包含输入方程中的参数。solve引入的参数不会出现在 MATLAB 工作区中。必须使用包含这些参数的输出参量来获得它们。要在 MATLAB 工作区中使用这些参数,还可以使用syms来初始化相关参数。例如,如果参数是k,可以使用syms k。变量名称
parameters和conditions不允许作为solve的输入。要求解微分方程,可以使用
dsolve函数。在求解方程组时,务必要将结果赋值给输出参量。输出参量可用于获得方程组的解的值。
MaxDegree仅接受小于 5 的正整数,因为一般来说,高于 4 次的多项式的根没有显式表达式。输出变量
y1,...,yN不指定solve求解方程或方程组所关于的变量。如果y1,...,yN是出现在eqns中的变量,则无法保证solve(eqns)会按照正确的顺序将解赋值给y1,...,yN。因此,运行[b,a] = solve(eqns)时,可能会将a的解赋值给b,反之亦然。为了确保返回解的顺序正确,请指定变量vars。例如,调用[b,a] = solve(eqns,b,a)会将a的解赋值给a,将b的解赋值给b。
算法
使用 IgnoreAnalyticConstraints 时,求解器会对方程两边的表达式应用以下一些规则。
对于 a 和 b 的所有值,有 log(a) + log(b) = log(a·b) 。特别地,对于 a、b 和 c 的所有值,以下等式成立:
(a·b)c = ac·bc.
对于 a 和 b 的所有值,有 log(ab) = b·log(a) 。特别地,对于 a、b 和 c 的所有值,以下等式成立:
(ab)c = ab·c.
如果 f 和 g 是标准数学函数,并且对于所有小正数都有 f(g(x)) = x,则假设 f(g(x)) = x 对于所有的复数值 x 都成立。特别地:
log(ex) = x
asin(sin(x)) = x, acos(cos(x)) = x, atan(tan(x)) = x
asinh(sinh(x)) = x, acosh(cosh(x)) = x, atanh(tanh(x)) = x
对于朗伯 W 函数的所有分支索引 k,都有 Wk(x·ex) = x。
求解器可以将方程的两边乘以除
0之外的任何表达式。多项式方程的解必须是完整的。
