| solve函数是解方程经常使用的函数,有很多坛友在使用该函数时经常遇到问题,现简单汇总如下& N) j- ?# k2 s( f' M3 m 一、使用用法老旧- |# Z' a; s! M8 |) o% [# h 例
[color=rgb(51, 102, 153) !important]复制代码 % \; w! e% X6 p) f% W- { L9 z 会报错 Error using solve>getEqns (line 418) List of equations must not be empty.! c/ x$ Y C$ D) L8 [0 J, N h; ^ 错误在于使用用法过于陈旧,现使用的MATLAB多为高版本; g6 s% c0 A. E. }$ g 解决办法 使用用法改变,具体参见solve帮助文档) [, M) g% _, X2 Y 例; j8 s7 |& G3 z6 T
[color=rgb(51, 102, 153) !important]复制代码 xs =4 L7 B+ Y; R8 x 3 o. w- U# L, P- } -17 a! } n8 B) Z 1 二、循环求解3 v& h( I( E) M- x7 G 解方程经常遇到方程的一个或多个参数是变化的 例如例子的变量a分别等于1、4、9、16" f3 [3 C) c: ^ 经常会出现以下代码+ s- \. ]' L' U- U) ~% W& e: c0 T
[color=rgb(51, 102, 153) !important]复制代码* ^4 e% U( c% [( P " D6 l8 U4 R" o! ~" t+ j MATLAB运算无解4 s8 j) F8 {, g1 h: P xs =3 v+ \3 t7 a( q Empty sym: 0-by-1' f# o% O5 E2 ~& J 这种情况应使用循环求解- k; @+ z) K# C 但有时会遇到以下情况
[color=rgb(51, 102, 153) !important]复制代码' f8 J; f' b! S6 A# n1 E+ z5 I 6 B! q8 b4 m8 g5 @6 O% \ 报错如下$ l! p9 [- G8 @8 [ A- h) ] x = -1 1 ; B9 I- `/ t! g, ] Error using sym.getEqnsVars>checkVariables (line 92) Second argument must be a vector of symbolic variables., G n* o: M) [; M) b' J 原因在于经过第一次循环后,变量x以转变为具体数值(-1,1),即导致在第二次循环中方程里无未知量 解决办法保存解得变量名改变) ?! x+ X& T3 P" j# | 循环求解方程并保存变量的代码如下
[color=rgb(51, 102, 153) !important]复制代码 运行后在命令窗口输入xs即可看到全部解如下0 E1 `6 ^1 T& C3 P, O >> xs xs = / a y( V e2 E [ -1, 1]0 E4 H5 `! [3 [% g [ -2, 2] [ -3, 3] [ -4, 4]: n8 G) S+ } D6 V. L 希望对需要的坛友有所帮助,也希望大家多提宝贵意见,共同进步 |
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |