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
之外的任何表达式。多项式方程的解必须是完整的。