MATLAB 解方程

solve

解方程和方程组。


语法


S = solve(eqn,var)
S = solve(eqn,var,Name,Value)
Y = solve(eqns,vars)
Y = solve(eqns,vars,Name,Value)
[y1,...,yN] = solve(eqns,vars)
[y1,...,yN] = solve(eqns,vars,Name,Value)
[y1,...,yN,parameters,conditions] = solve(eqns,vars,'ReturnConditions',true)

描述

选项 描述
S = solve(eqn,var)  求解变量var的方程eqn。如果没有指定var,则symvar函数确定要求解的变量。例如求解方程x + 1 = 2,则写:solve(x + 1 == 2, x)。
S = solve(eqn,var,Name,Value) 使用额外的由Name-Value对指定的选项
Y = solve(eqns,vars) 为变量vars求解方程组,并返回包含解的结构。为变量vars求解方程组,并返回包含解的结构。
Y = solve(eqns,vars,Name,Value) 使用额外的由Name-Value对指定的选项
[y1,…,yN] = solve(eqns,vars) 求解变量vars的方程组eqns。解被赋值给变量y1,…,yN。如果没有指定变量,solve使用symvar查找要求解的变量。在这种情况下,symvar找到的变量数量等于输出参数的数量N。
[y1,…,yN] = solve(eqns,vars,Name,Value)  使用额外的由Name-Value对指定的选项
[y1,…,yN,parameters,conditions] = solve(eqns,vars,’ReturnConditions’,true) 返回指定方程解中参数和条件parameters和conditions。

解二次方程

求没有指定求解变量的二次方程。solve会自动选择返回 x

例如:


syms a b c x
eqn = a*x^2 + b*x + c == 0

S = solve(eqn)  % 解方程

结果:

方程的解

还是上面的方程,但指定要求解的变量并求解a的二次方程:


Sa = solve(eqn,a)
解方程

求解多项式并返回实解

解一个五次多项式。它有五个解:


Sa = solve(eqn,a)
方程的5个解

通过设置“real”选项为真,只返回真实的解决方案。这个方程的唯一实解是5。


S = solve(eqn,x,'Real',true)
% 结果:
S = 5

数值求解方程

slove函数不能符号化地解一个方程时,便用vpasolve函数求一个数值解vpasolve函数返回找到的第一个解。

试着解下面的方程。因无法找到符号解而返回数值解:


syms x
eqn = sin(x) == x^2 - 1;
S = solve(eqn,x)

运行后可以看到警告提示,并且返回了一个数值解:

数值解

把方程的左右两边画出来。观察到这个方程还有一个正解:


fplot([lhs(eqn) rhs(eqn)], [-2 2])
函数解的图

那么,通过直接调用数值求解函数vpasolve并指定范围来找到另一个解。


V = vpasolve(eqn,x,[0 2])
% 结果:
V = 1.4096240040025962492355939705895





公众号

关注公众号,获取一手资讯

“ MATLAB 解方程 ” comments 0

评论/回复

电子邮件地址不会被公开。 必填项已用*标注