Operands Not Scalar ?
2 次查看(过去 30 天)
显示 更早的评论
[EDIT: 20110609 12:41 CDT - reformat - WDR]
function[x0]=Newton_Iteration(delta,epsilon,maxiter)
x0=5;
for iter=1:1:maxiter
x1=x0-(f(x0)/df(x0));
error=abs(x1-x0);
relerror=2*error/(abs(x1) + delta);
x0=x1;
f_final=f(x0);
if ((error<delta) || (relerror<delta) || (abs(f_final)<epsilon))
break
end
end
ERROR
Operands to the || and && operators must be convertible to logical scalar values.
Error in ==> Newton_Iteration at 17
if ((error<delta) || (relerror<delta) || (abs(f_final)<epsilon))
Error in ==> RF_Model at 187
T_e=Newton_Iteration(1e-10,1e-10,50);
What might be the problem...I am gettin this error once i change the / to ./ in a previous statement which was showing mldivider error...
pls help me out
1 个评论
Sean de Wolski
2011-6-9
what is epsilon
size(delta)
size(error)
size(relerror)
size(f_final)
?
Also:
DON'T name your variable 'error' as this is a very useful builtin MATLAB function.
采纳的回答
Jan
2011-6-9
This is no valid Matlab syntax:
if ((error<delta) (relerror<delta) (abs(f_final)<epsilon))
I guess, you want something like this:
if (all(error_value < delta) && ...
all(relerror < delta) && ...
all(abs(f_final) < epsilon))
break;
end
I've renamed your variable "error" to something, which does not equal the name of a toolbox function.
3 个评论
更多回答(1 个)
Walter Roberson
2011-6-9
You would encounter this problem if f(x0) or df(x0) return a non-scalar, which is something we cannot determine by looking at the code you show.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!