Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.



Re: Using partial derivatives in Matlab
Posted:
Nov 26, 2012 10:38 AM


On 11.10.12 18:24, Jagdish wrote: > Hi, > > I am writing a code to implement a function with conditions that involve partial derivatives. The out put is going to be a 3*1 matrix and will involve partial derivatives with all the three parameters. Before I could implement the actual function, I was fiddling around with a simple function as described below with no success. Could you please have a look and let me know if I have made a mistake? I think I am making a rookie mistake that would be trivial to the expert eye. Thanks a lot in advance! > > Code  > > function resid=case2(x) > > syms x1 x2 > > x1=x(1); > x2=x(2); > > y=x1^25*x1*x2+3*x2^2; > > resid=[diff(y,x1);diff(y,x2)];
1. Inside a function, using syms is not really a good idea. Search for ?poofing MATLAB variables? for details. Instead, use
x1 = sym('x1'); x2 = sym('x2');
2. You first define x1 and x2 to be symbolic names, just to immediately replace them by your input values, before computing anything. Try this instead:
function resid=case2(x)
x1=sym('x1'); x2=sym('x2');
y=x1^25*x1*x2+3*x2^2;
resid=[diff(y,x1);diff(y,x2)]; resid=subs(resid,{x1,x2},x);
Now, obviously, you'll get much better performance by not computing the (symbolic) derivatives each time you call the function. Compute them once and take that:
% interactive level syms x1 x2; y=x1^25*x1*x2+3*x2^2; c2=[diff(y,x1);diff(y,x2)]; matlabFunction(c2,'file','case2.m');
HTH, Christopher



