- if ea eps | i= maxit : this is not Matlab syntax, there's no comparison of the values
- Your function doesn't terminate with an end block
- You are using , instead of ; to terminate lines

# can you solve this problem

1 view (last 30 days)

Show older comments

I solved this problem but the file didn't run, the codes in the editor are:

function [s,ea,i]=SqRoot(a,eps,maxit)

i = 0;

s = a/2;

ea = 100;

while(1)

sold = s;

s= (s+a/s)/2;

i = i+1;

if s ~= 0, ea=abs((s - sold)/s)*100; end

if ea <= eps | i>= maxit, break, end

end

##### 5 Comments

Walter Roberson
on 27 Jan 2016

a_arg = rand();

eps_arg = randn() / 10^8;

maxit_arg = randi([10,500]);

[s_ans, ea_ans, i_ans] = Student(a_arg, eps_arg, maxit_arg)

### Answers (1)

Star Strider
on 26 Jan 2016

Your code runs for me, and produces the correct result:

a = 50; % Argument

maxit = 100; % Argument

i = 0;

s = a/2;

ea = 100;

while(1)

sold = s;

s= (s+a/s)/2;

i = i+1;

if s ~= 0, ea=abs((s - sold)/s)*100; end

if ea <= eps || i>= maxit, break, end

end

What problems are you having with it?

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!