MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Help understanding "Missing operator, comma, or semicolon" error.

Asked by Mubarak on 1 Mar 2011

Hello I'm taking Numerical Methods course in my college. And am trying to write a program for a method called 'bisection method' and this is my program :

```clear;
fx=inline('sin(0.01*x)+cos(0.75*x^2)');
xl=2;
xu=2.5;
n=5 % number of iteration
xr_old[];
for i=1:n
xr=(xl+xu)/2;
ea=abs((xr - xr_old)/xr)*100;
xr_old=xr;
% To display the results: Type the following command %
if i==1
dis('iteration   Xl   Xu   Xr   f(Xl)*f(Xu)   ea');
end
dis([i   xl   xu   xr   fx(xl)*fx(xu)   ea]);
if fx(xl)*fx(xr) < 0
xu=xr;
else if fx(xl)*fx(xu) > 0
xl=xr;
else
return;
end
end
end
```

When I want to run it, am keeping getting the following error:

>> bisection

??? Error: File: C:\MATLAB6p1\work\bisection.m Line: 6 Column: 7 Missing operator, comma, or semicolon.

So what is wrong with it?

Products

No products are associated with this question.

Answer by Andreas Goser on 1 Mar 2011

I get

??? Error: File: bisection.m Line: 6 Column: 7 Unbalanced or unexpected parenthesis or bracket.

Which explains better. Problaly you want to do

```xr_old=[];
```

Walter Roberson on 1 Mar 2011

What is "dis" ? Did you mean "disp" ?

Mubarak on 2 Mar 2011

Yes.
I've corrected it.
But still it is display only 1 row.
I think we must type i=i+1; before the last end, Right?

Andreas Goser on 2 Mar 2011

Well with i=i+1, your whole for i=1:n loop would be pointless, right?

After the first run of the loop "fx(xl)*fx(xu)" is <0, so the "return" command fires. I do not know what you intend to do, but the codes executes correctly.

Let me share my concern that your project will be succesful with this sequential progress. I encourage you to take the warning and error messages serious and look at programming tools like the MATLAB debugger and M-Lint.