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

2 ビュー (過去 30 日間)
Mubarak
Mubarak 2011 年 3 月 1 日
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?

回答 (1 件)

Andreas Goser
Andreas Goser 2011 年 3 月 1 日
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=[];
  4 件のコメント
Mubarak
Mubarak 2011 年 3 月 2 日
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
Andreas Goser 2011 年 3 月 2 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDebugging and Analysis についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by