where is the problem

1 view (last 30 days)
belal hariz belgacem on 25 Nov 2018
Commented: Walter Roberson on 26 Nov 2018
% Resoulision des systèmes non-linéaire
clc
clear
x1=5;
x2=5;
x3=5;
X=[x1;x2;x3];
deltx=1;
k=1;
while abs(deltx)>10^-6
f=[3*X(1)+cos(X(2)*X(3))-1;X(1)^2-81*(X(2)+0.1)^2+sin(X(3))+0.25;exp(-X(1)*X(2))+20*X(3)+9];
j=[3 -X(3)*sin(X(2)*X(3)) -X(2)*sin(X(2)*X(3));2*X(1) -162*(X(2)+0.1) cos(X(3));-X(2)*exp(-X(1)*X(2)) -X(1)*exp(-X(1)*X(2)) 20];
deltx=-inv(j)*f;
X=X+deltx;
k=k+1;
end
format long
racinx1=X(1);
racinx2=X(2);
racinx3=X(3);

Show 1 older comment
Walter Roberson on 25 Nov 2018
deltx=1;
So it's a scalar?
deltx=-inv(j)*f;
j is 3 x 3. f is 3 x 1. So inv(j)*f is 3 x 3 * 3 x 1, which is going to give a 3 x 1 result. So after that line, deltx is going to be 3 x 1, not a scalar.
while abs(deltx)>10^-6
Remember that for the purpose of if and while there is an implicit all() so the test is
while all(abs(deltx)>10^-6)
Is that what you want? Or do you want
while any(abs(deltx)>10^-6)
belal hariz belgacem on 26 Nov 2018
Thank you
The program works
My fault here ..........while abs(deltx)>10^-6
After correction
while all (abs(deltx)>10^-6)
Walter Roberson on 26 Nov 2018
Those would be the same thing to MATLAB, it automatically supplies all()