Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 为什么对多元方程组使用“solve”会出现意外错误?_Matlab_Solver - Fatal编程技术网

Matlab 为什么对多元方程组使用“solve”会出现意外错误?

Matlab 为什么对多元方程组使用“solve”会出现意外错误?,matlab,solver,Matlab,Solver,当我试图求解一个包含两个变量和两个未知数的方程组(Izhikevich nullclines)时,我遇到了一个意外错误:警告:两个变量中有4个方程。和警告:无法找到显式解。 这是出乎意料的,因为正如我所说的,我只提供了2个方程和2个变量,这应该是一个格式良好的方程组 我的相关代码如下: syms uu vv [solvv,soluu]=solve([0.04*vv^2+5*vv+140-uu+I(t)==0,a(t)*(b(t)*vv-uu)==0,[vv,uu]) 完整的错误跟踪是: 警告:2

当我试图求解一个包含两个变量和两个未知数的方程组(Izhikevich nullclines)时,我遇到了一个意外错误:
警告:两个变量中有4个方程。
警告:无法找到显式解。

这是出乎意料的,因为正如我所说的,我只提供了2个方程和2个变量,这应该是一个格式良好的方程组

我的相关代码如下:

syms uu vv
[solvv,soluu]=solve([0.04*vv^2+5*vv+140-uu+I(t)==0,a(t)*(b(t)*vv-uu)==0,[vv,uu])

完整的错误跟踪是:

警告:2个变量中有4个等式。
\>在C:\Program Files\MATLAB\R2012b\toolbox\symbol\symbol\symmengine.p>symmengine at 54中
在97处的mupadengine.mupadengine>mupadengine.evalin中
在mupadengine.mupadengine>mupadengine.feval中,150
以160为单位计算
第三季度,纽约大学37岁
64岁开始跑步
警告:找不到显式解决方案。
\>在第169页
第三季度,纽约大学37岁
在64档运行

困惑的是,我去了MATLAB的
solve
,并尝试使用示例片段来求解多元方程组:

syms u v
[solv,solu]=solve([2*u^2+v^2==0,u-v==1],[v,u])

根据文档,此代码段的预期输出为:

solv=
-(2^(1/2)*1i)/3-2/3
(2^(1/2)*1i)/3-2/3
索鲁=
1/3-(2^(1/2)*1i)/3
(2^(1/2)*1i)/3+1/3

但狙击手却回来了:

警告:2个变量中有4个等式。
\>在C:\Program Files\MATLAB\R2012b\toolbox\symbol\symbol\symmengine.p>symmengine at 54中
在97处的mupadengine.mupadengine>mupadengine.evalin中
在mupadengine.mupadengine>mupadengine.feval中,150
以160为单位计算
警告:找不到显式解决方案。
\>在169处求解

solv=

[空符号]

solu=

[]

和以前一样

现在我知道我的代码并没有犯一些初学者的错误,因为即使是示例代码也有同样的错误。调用单变量示例snippit的效果与预期一样。我已经用Matlab2012a和Matlab2014a试过了


什么可以解释这种不寻常的行为?

可以在MATLAB 2014a上复制这种情况。我发现如果我已经使用
syms
定义了变量,那么可以让
solve
自动解析变量

syms u v
[sv, su] = solve([2*u^2 + v^2 == 0, u - v == 1], [v, u]) % Doesn't work

% works but order-unspecified so this is not desirable
[su, sv] = solve([2*u^2 + v^2 == 0, u - v == 1]) 
另一个用户指出了使用错误文档的错误。使用以下符号代替重新排序的解决方案。另一种形式似乎是2015年。您可能应该在2012a中验证这一点,但似乎确实如此


您说您使用的是R2014a,但您链接到了当前版本的Matlab R2015a的文档。这是R2014a中的示例。你会发现你所指的例子并不存在。抓住了。没想到会有这样的变化。注意。我无法访问存档文档,因为我只是一个用户,而不是许可证持有人。我认为发生这种变化是因为许多用户不理解求解
u
v
与二元向量之间的区别。对于符号解,Mathematica可能是更好的选择,正如@madbitloman所说,Matab的符号数学工具箱对于这样的系统是一个非常好的选择。但是,您需要查看正确的文档。您说您使用的是R2014a,但您链接到了当前版本的Matlab R2015a的文档。如果您使用的是旧版本的Matlab,则不应依赖于Google。只需在命令窗口中键入
docsolve
,即可阅读您版本的完整文档。存档文档也可以在线获取。我没有登录访问存档文档的权限,因为我使用的是我的学术机构的MATLAB许可证。@StockB:我在大学里也使用学术版本。您可能只需要创建一个MathWorks帐户。在任何情况下,命令窗口中的
doc solve
都会起作用。谢谢,我今天学习了
doc
命令!我以前知道
帮助
,但HTML格式更易于阅读。
syms u v
[sv, su] = solve([2*u^2 + v^2 == 0, u - v == 1], v, u)