- #1
roam
- 1,271
- 12
In MATLAB, I want to use the Newton-Raphson method with absolute tolerance 1e-1, other tolerances zero, and an initial estimate x0 = 4 to find a zero of the function
f(x) = tan-1 (x-1) - 0.5
And then repeat the process for a better estimate with absolute tolerance 10-9. So here is my code so far:
But we get:
So why is it that we don't get a single number instead of all 30 iterations?
Also when I changed the value of the absolute tolerance to 10^-9, there was no change in the output. Why is that? I'm new to Matlab, so any help is greatly appreciated.
f(x) = tan-1 (x-1) - 0.5
And then repeat the process for a better estimate with absolute tolerance 10-9. So here is my code so far:
Code:
format long
x=4;
ind=0;
k=1;
f=@(x)(atan(x-1)-0.5);
fp=@(x)(1/((x - 1)^2 + 1));
N=30;
tola=1e-1;
tolr=0;
tolf=0;
while ind == 0 & k <= N,
fp_value=feval(fp,x);
if fp_value ~= 0,
f_value=feval(f,x);
if abs(f_value)>tolf,
x_new=x - f_value/fp_value;
if abs(x_new - x)<= tola + tolr * abs(x),
ind=2;
end
x=x_new;
else
ind=1;
end
else
ind=3;
end
k=k+1;
end
if ind==0,
ind=4;
end
x
But we get:
Code:
x =
-2.742845125833007e+211
So why is it that we don't get a single number instead of all 30 iterations?
Also when I changed the value of the absolute tolerance to 10^-9, there was no change in the output. Why is that? I'm new to Matlab, so any help is greatly appreciated.