5 views (last 30 days)

Show older comments

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

Steven Lord
on 16 Apr 2019

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.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!