MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Shantanu K on 24 Mar 2013

z = sym('2*x1 * x1 + x2*x2 + 3*x3*x3'); syms x1 x2 x3 a;

gradz = [diff(z,x1); diff(z,x2); diff(z,x3)]; x1(1)=2; x2(1)=-2; x3(1)=1;

for k=2:5 p=subs(gradz, [x1 x2 x3], [x1(k-1) x2(k-1) x3(k-1)]);

x1a=x1(k-1)+p(1)*a; x2a=x2(k-1)+p(1)*a; x3a=x3(k-1)+p(1)*a;

za=subs(z, [x1 x2 x3], [x1a x2a x3a]);

w=solve(za);

x1(k)=x1(k-1)+p(1)*w; x2(k)=x2(k-1)+p(2)*w; x3(k)=x3(k-1)+p(3)*w;

end

Its giving error

*No products are associated with this question.*

Answer by Walter Roberson on 24 Mar 2013

When the explicit solution could not be found, solve() is returning the empty matrix, which you assign into "w". The empty matrix multiplied by p(1) gives the empty matrix. Add x1(k-1) to the empty matrix and you get the empty matrix. You then try to assign that empty matrix, which is of size 0, to x1(k) which is of size 1.

Shantanu K on 24 Mar 2013

Hello Walter,

Variable 'w' is not empty. It is having some finite value. 'za' is linear equation which should be solved to produce 'w'.

## 2 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/68410#comment_138481

Which lines gives the error, and what is the full text of the error message?

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/68410#comment_138483

This is error i am geting at line

x1(k)=x1(k-1)+p(1)*w;