1

我是 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
Files\MATLAB\R2012a\toolbox\symbolic\symbolic\symengine.p>symengine 在 54

      在 mupadengine.mupadengine>mupadengine.evalin 在 97

      在 mupadengine.mupadengine>mupadengine.feval 在 150

      在 160 处求解

警告:找不到明确的解决方案。> 在 169 处求解

逗号分隔的列表扩展具有非单元格数组的单元格语法。

sym/subsref 中的错误(第 1575 行)

      [inds{k},refs{k}] = privformat(inds{k});


谁能告诉我如何解决这个错误?

4

1 回答 1

0

如果可能,首先要做的是使用更新版本的 Matlab。符号数学工具箱近年来进行了很多更新。

我正在使用 R2015a,所以我无法准确测试您的案例。但是,您可以尝试以下几件事。首先,使用assumptions(链接到 R2012a 存档文档)。其次,我认为你的错误是由求解向量引起的[x y],而不是不同的变量,xy。使用旧版本的 Matlab 时,请务必查看您的版本或使用的存档在线文档,helpdoc在您的命令行窗口中查看(Google 向您显示的内容仅适用于当前版本):R2012a 中的存档文档solve

以下是应用于您的示例的更改:

syms x y;
assume(x > 0);
assume(y > 0);
S = solve(x^2 + y^2 + x*y < 1, x, y)

这仍然返回警告:

警告:解决方案由符号参数化:u、v。要在解决方案中包含参数和条件,请指定“ReturnConditions”选项。
> 在求解中>warnIfParams(第 510 行)
   在求解中(第 360 行)
警告:解决方案在以下条件下有效:4*v^2 < u & u < 4 & 0 < v。在解决方案中包含参数和条件,指定“返回条件”选项。
> 在求解中>warnIfParams(第 517 行)
   在求解中(第 360 行)

S = 

    x: [1x1 sym]
    y: [1x1 sym]

但也产生

(- 3*v^2 + u)^(1/2)/2 - v/2

S.xvS.y

于 2015-05-08T20:15:01.840 回答