Solve Multivariate Equations and Assign Outputs to Variables
解多重方程组并且赋值给输出变量
解如下系统方程:
{
2
u
2
+
v
2
=
0
u
−
v
=
1
\left\{\begin{aligned} &2u^2 + v^2 = 0 \\ &u - v = 1 \end{aligned}\right.
{2u2+v2=0u−v=1
超过一个变量时,制定变量的顺序定义了求解器 solver 返回结果的顺序。
syms u v
eqns = [2*u^2 + v^2 == 0, u - v == 1];
vars = [v u];
[solv, solu] = solve(eqns,vars)
结果为:
solv =
- (2^(1/2)*1i)/3 - 2/3
(2^(1/2)*1i)/3 - 2/3
solu =
1/3 - (2^(1/2)*1i)/3
(2^(1/2)*1i)/3 + 1/3
Ref: solve-MathWorks
再求解一下我自己当时遇到的问题
求解以下三元三次微分方程组:
{
(
a
t
f
+
b
)
2
=
2
(
a
t
f
+
2
b
)
t
f
−
2
=
0
a
t
f
3
+
3
b
t
f
2
−
6
t
f
−
60
=
0
\left\{\begin{aligned} &(a t_f + b)^2 = 2 \\ &(a t_f + 2 b) t_f - 2 = 0 \\ &a t_f^3 + 3 b t_f^2 - 6 t_f - 60 = 0 \\ \end{aligned}\right.
⎩⎪⎨⎪⎧(atf+b)2=2(atf+2b)tf−2=0atf3+3btf2−6tf−60=0
syms a b tf
eqns = [(a*tf+b)^2==2, (a*tf+2*b)*tf-2==0, a*tf^3+3*b*tf^2-6*tf-60==0];
vars = [a b tf];
[a b tf] = solve(eqns, vars)
结果为:
a =
root(z^4 - 2*z^2 - 120*z - 1800, z, 1)^2/900 - root(z^4 - 2*z^2 - 120*z - 1800, z, 1)/15 - 1/450
root(z^4 - 2*z^2 - 120*z - 1800, z, 2)^2/900 - root(z^4 - 2*z^2 - 120*z - 1800, z, 2)/15 - 1/450
root(z^4 - 2*z^2 - 120*z - 1800, z, 3)^2/900 - root(z^4 - 2*z^2 - 120*z - 1800, z, 3)/15 - 1/450
root(z^4 - 2*z^2 - 120*z - 1800, z, 4)^2/900 - root(z^4 - 2*z^2 - 120*z - 1800, z, 4)/15 - 1/450
b =
root(z^4 - 2*z^2 - 120*z - 1800, z, 1)^2/30 - 1/15
root(z^4 - 2*z^2 - 120*z - 1800, z, 2)^2/30 - 1/15
root(z^4 - 2*z^2 - 120*z - 1800, z, 3)^2/30 - 1/15
root(z^4 - 2*z^2 - 120*z - 1800, z, 4)^2/30 - 1/15
tf =
root(z^4 - 2*z^2 - 120*z - 1800, z, 1)
root(z^4 - 2*z^2 - 120*z - 1800, z, 2)
root(z^4 - 2*z^2 - 120*z - 1800, z, 3)
root(z^4 - 2*z^2 - 120*z - 1800, z, 4)
结果出现了上述情况,可直接使用 double()
解决,参考这篇文章matlab解方程出现root,如何获得数值解:,因此有以下解决办法
>> double(a)
ans =
0.4254 + 0.0000i
-0.0011 + 0.4418i
-0.0011 - 0.4418i
-0.4276 + 0.0000i
>> double(b)
ans =
1.0720 + 0.0000i
-1.4475 + 0.3052i
-1.4475 - 0.3052i
1.6897 + 0.0000i
>> double(tf)
ans =
-5.8447 + 0.0000i
-0.7071 - 6.4751i
-0.7071 + 6.4751i
7.2589 + 0.0000i
考虑到
t
f
t_f
tf 变量代表时间的末端时刻值,因此不能有负值和虚部,因此
t
f
=
7.2589
b
=
1.6897
a
=
−
0.4276
\begin{aligned} t_f &= 7.2589 \\ b &= 1.6897 \\ a &= -0.4276 \\ \end{aligned}
tfba=7.2589=1.6897=−0.4276
求解含有未知变量的方程组
如系统含有三个未知量
u
,
v
,
x
u, v, x
u,v,x,方程组的形式为
{
u
+
v
+
x
=
0
u
−
v
=
1
\left\{\begin{aligned} &u + v + x = 0 \\ &u - v = 1 \end{aligned}\right.
{u+v+x=0u−v=1
求解 u u u 和 v v v 的表达式
程序如下
syms u v x real
eqns = [u + v + x == 0, u - v == 1];
vars = [v u];
[solv, solu] = solve(eqns,vars)
结果为:
solv =
- x/2 - 1/2
solu =
1/2 - x/2
v = − x 2 − 1 2 u = 1 2 − x 2 \begin{aligned} v &= -\frac{x}{2} - \frac{1}{2} \\ u &= \frac{1}{2} - \frac{x}{2} \\ \end{aligned} vu=−2x−21=21−2x