You have defined
but then you have
That is equivalent to
x = sym('x');
y = sym('y');
which is to say that it overwrites x and y, and afterwards they are no longer numeric. But afterwards you sometimes treat them as symbols and sometimes treat them as numeric. In particular,
attempts to treat them as numeric.
You also have
u = @(x,y) 10*sin(200*x)+0.1*cos(10*y)+(100*x)./y;
v = @(x,y) 10*cos(200*x)+0.1*sin(10*y)-100*(x./y);
ex = diff(u,x);
ey = diff(v,y);
The two diff() lines attempt to take the symbolic differentiation of a MATLAB function handle. You probably cannot do that. You can differentiate a symbolic expression, and you might be able to differentiate a symbolic function, but probably not a function handle.
ex = diff(u(x,y), x);
ey = diff(v(x,y), y)
would invoke the function handles on the symbolic parameters x and y, giving a symbolic expression as a result, and that symbolic expression can be differentiated.
Best Answer