# I got "The expression to the left of the equals sign is not a valid target for an assignment."

17 views (last 30 days)
hgrlk on 16 Apr 2019
Commented: hgrlk on 17 Apr 2019
Hello, when I run my code, i get error.
I can not see my fault. There is something wrong about i^2=-1 But I must use that expression.
Thank you.
clc
clear all
close all
fprintf('%10s %10s %10s %10s\n','k','real(xk)','imag(xk)','|f(xk)|')
k = 0 ;
i^2 = -1 ;
x = -2-2i;
f = @(x) x^3 - x - 3 ;
while abs(f(x)) > 10^(-5)
f = @(x) x^3 - x - 3 ;
diff = @(x) 3*(x^2) - 1 ;
xreal = real(x);
ximag = imag(x);
xnew = x - (f(x) / diff(x));
fprintf('%10.4f %10.4f %10.4f %10.4f\n',k,xreal,ximag,f(x))
x = xnew;
k = k +1;
end

A. Sawas on 16 Apr 2019
In Matlab you don't need to define the imaginary number (i) or (j).
i^2 = -1 ; % this is not a valid assignment
x = -2-2i;
hgrlk on 17 Apr 2019
thank you!! i didnt know that

Steven Lord on 16 Apr 2019
Just eliminate that line from your code. The way you've defined x on the next line will make it complex since i is already defined to be the imaginary unit.

#### 1 Comment

hgrlk on 17 Apr 2019
thank you!

Kelly Kearney on 16 Apr 2019
As others have pointed out, i is already assigned the value you want by default.
But assuming it weren't, the proper way to assign the value would be:
i = sqrt(-1);
The error is basically telling you that Matlab won't implictly do any algebra for you... you can only assign a value to a variable, not to a function or equation like you attempted to do.

#### 1 Comment

hgrlk on 17 Apr 2019
thank youu