??? Undefined function or method 'power' for input arguments of type 'function_handle'.

2 views (last 30 days)
hello guys, I am quite new to matlab and am trying to do a newton-raphson iteration. but i keep getting this error: ??? Undefined function or method 'power' for input arguments of type 'function_handle'.
Error in ==> @(z)(z.^3-z.^2+m*z+m2)
Error in ==> graded_lab1 at 24 x1=y-(z1(z)/dz(z));
Some of the code i temporarily commented out. but i am also having trouble doing a for loop inside a for loop. Here's the code:
%problem2
tc=373.56;
pc=88.9;
t=293;
p= [1 1.5 2 2.5 3 5 10 15 25 50];
r=8.3144621;
a=(r*r*(sqrt(tc*tc*tc*tc*tc)))/(9*pc*(sqrt(8)-1));
b=((sqrt(8)-1)*r*tc)/(3*pc);
A=(a*p)/(r*r*sqrt(t*t*t*t*t));
B=(b*p)/(r*t);
%for i=1:10
m=(A(i)-B(i)-B(i)*B(i))
m2=-A(i)*B(i)
z1 = @(z) (z.^3-z.^2+m*z+m2);
dz = @(z) 3*z.^2-2*z+m;
y=0;
for u=1:1:100
x1=y-(z1(z)/dz(z));
y=x1
if x1==y break
end
end
%v(i)=(root(1)*r*t)/p(i);
%end
%v(3)=(Zed*r*t)/p
v
plot(v);

Answers (1)

Mischa Kim
Mischa Kim on 25 Feb 2015
Suj, two things: root and Zed are not defined. In
x1 = y - (z1(z)/dz(z));
the running index is probably u, and not z, I assume.
  2 Comments
suj gal
suj gal on 25 Feb 2015
u is just for iterations from 1 to 100 no? i thought z1(z) would be referring to the function z?
Mischa Kim
Mischa Kim on 25 Feb 2015
Edited: Mischa Kim on 25 Feb 2015
OK. That's what you meant. I have started cleaning up your code. It's not quite done yet... but running.
...
B = (b*p)/(r*t);
del = 1e-5;
max_i = 10;
v = zeros(1,max_i); % pre-allocate memory
for ii = 1:max_i
m = (A(ii)-B(ii)-B(ii)*B(ii));
m2 = -A(ii)*B(ii);
z1 = @(z) (z.^3-z.^2+m*z+m2);
dz = @(z) 3*z.^2-2*z+m;
y = 0;
for u = 1:1:100
deltaz = (z1(y)/dz(y)); % the arg seems to be y
x1 = y - deltaz;
if (abs(deltaz)< del) % close enough to solution?
v(ii) = x1; % save solutions
break
end
y = x1;
end
end
plot(v);

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!