0

以下代码有什么问题?

clear all

syms x y a ;

u=2*x*y;
v=a^2+x^2-y^2;

diff=diff(u,'x',1)+diff(v,'y',1);
if diff==0
    disp('Liquid motion is possible.')
    disp('Stream function exists.')
else
    disp('Liquid motion is not possible.')
    disp('Stream function does not exist.')
end

diff2=diff(v,'x',1)-diff(u,'y',1);
if diff2==0
    disp('Velocity potential exists.')
else
    disp('Velocity potential does not exist.')
end

当我运行上述命令时,它会出现在命令窗口中。

Liquid motion is possible.
Stream function exists.
Error using sym/subsindex (line 672)
Invalid indexing or function definition. When defining a function, ensure that the body of the function is a SYM
object. When indexing, the input must be numeric, logical or ':'.

Error in sym>privformat (line 1502)
    x = subsindex(x)+1;

Error in sym/subsref (line 694)
            [inds{k},refs{k}] = privformat(inds{k});

Error in q7 (line 17)
diff2=diff(v,'x',1)-diff(u,'y',1);

但是如果我在第一个构造之后重写(重新定义)符号变量if,它运行良好。此外,如果我取消第一个if构造,它就会运行。

4

1 回答 1

0

我会避免覆盖保留名称,所以而不是

diff=diff(u,'x',1)+diff(v,'y',1);

我会建议

derFcn = diff(u,'x',1)+diff(v,'y',1);

这会触发第二个错误;

diff2=diff(v,'x',1)-diff(u,'y',1);

此时 diff 是你的 diff 值(顺便说一下是 0)所以它相当于写

0(v,'x',1)

当然,它不会编译,这不是你的意思。

因此,请进行替换(并相应地更新您的 if 语句)。

于 2017-11-11T15:40:28.227 回答