Operands Not Scalar ?

2 visualizzazioni (ultimi 30 giorni)
Gowtham
Gowtham il 9 Giu 2011
[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 Commento
Sean de Wolski
Sean de Wolski il 9 Giu 2011
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.

Accedi per commentare.

Risposta accettata

Jan
Jan il 9 Giu 2011
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 Commenti
Sean de Wolski
Sean de Wolski il 9 Giu 2011
assuming all of those values are scalars.
Gowtham
Gowtham il 9 Giu 2011
hey thanks ..i got the working code...

Accedi per commentare.

Più risposte (1)

Walter Roberson
Walter Roberson il 9 Giu 2011
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.

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by