다음 코드는 무엇이 잘못 되었습니까?심볼릭 MATLAB 정보
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
구문을 취소하면 실행됩니다.
내장 함수'diff'를 재정의하지 마십시오. 그리고 심볼릭 비교를 위해서'==' 대신에''isAlways'' (https://www.mathworks.com/help/symbolic/isalways.html)를 사용하십시오. 'diff (u, 'x', 1)'은'diff (u, x)'와 같습니다. – horchler
@ horchler 님의 의견을 확장하려면 내장 된 'diff'함수를 음영 처리하는'diff'라는 새로운 변수를 만듭니다. 일반적으로 사용할 함수와 같은 이름의 변수 이름은 사용하지 않아야합니다. – jodag
@horchler 감사합니다. 내 문제를 해결했다. –