Whats mistake in this code....can anybody guide me?

Shantanu K (view profile)

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

the cyclist

the cyclist (view profile)

on 24 Mar 2013

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

Shantanu K

Shantanu K (view profile)

on 24 Mar 2013
```Warning: Explicit solution could not be found.
> In solve at 81
In cauchyloop at 18
Error in MuPAD command: Subscripted assignment dimension mismatch
```
```Error in ==> sym.sym>sym.subsasgn at 1420
```
```Error in ==> cauchyloop at 20
x1(k)=x1(k-1)+p(1)*w;
```

This is error i am geting at line x1(k)=x1(k-1)+p(1)*w;

Products

No products are associated with this question.

Walter Roberson (view profile)

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

Shantanu K (view profile)

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'.

Join the 15-year community celebration.

Play games and win prizes!

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