我是Matlab的新手。我正在尝试使用solve
:
syms x y
S = solve(x^2 + y^2 + x*y < 1, x > 0, y > 0, [x, y]);
solx = S.x
soly = S.y
但Matlab回归:
警告:2个变量中的5个方程式。
在C:\ Program中 文件\ MATLAB \ R2012a \ toolbox \ symbolic \ symbolic \ symengine.p&gt; symengine at 54
在mupadengine.mupadengine> mupadengine.evalin at 97
mupadengine.mupadengine> mupadengine.feval at 150
在160解决
警告:找不到明确的解决方案。 &GT;在169解决
逗号分隔列表扩展具有数组的单元格语法 不是一个细胞。
sym / subsref中的错误(第1575行)
[inds {k},refs {k}] = privformat(inds {k});
有人能告诉我如何修复此错误吗?
答案 0 :(得分:0)
如果可能,首先要做的是使用更新版本的Matlab。近年来,符号数学工具箱已经看到了很多更新。
我正在使用R2015a,所以我无法准确测试你的情况。但是,您可以尝试以下几种方法。首先,使用assumptions
(链接到R2012a归档文档)。其次,我认为您的错误是由求解向量[x y]
引起的,而不是由不同的变量x
和y
引起的。使用旧版本的Matlab时,请务必查看适用于您的版本的已归档在线文档,或在命令窗口中使用help
和doc
(Google会向您显示仅适用于当前版本的内容): the archived documentation for solve
in R2012a
以下是适用于您的示例的更改:
syms x y;
assume(x > 0);
assume(y > 0);
S = solve(x^2 + y^2 + x*y < 1, x, y)
这仍然会返回警告:
警告:解决方案由符号参数化:u,v。包括 解决方案中的参数和条件,指定'ReturnConditions'选项。
&GT;在解决&gt; warnIfParams (第510行)中 在解决(第360行)中 警告:解决方案在以下条件下有效:4 * v ^ 2&lt;你和你你&lt; 4&amp; 0&lt; v。要在解决方案中包含参数和条件,请指定“ReturnConditions”选项。
&GT;在解决&gt; warnIfParams (第517行)中 在解决(第360行)中
S =
x: [1x1 sym]
y: [1x1 sym]
但也产生
(- 3*v^2 + u)^(1/2)/2 - v/2
S.x
的和v
S.y