http://www.mathworks.com/matlabcentral/newsreader/view_thread/306957
MATLAB Central Newsreader  Convergence of iterative procedure
Feed for thread: Convergence of iterative procedure
enus
©19942015 by MathWorks, Inc.
webmaster@mathworks.com
MATLAB Central Newsreader
http://blogs.law.harvard.edu/tech/rss
60
MathWorks
http://www.mathworks.com/images/membrane_icon.gif

Thu, 28 Apr 2011 08:04:04 +0000
Convergence of iterative procedure
http://www.mathworks.com/matlabcentral/newsreader/view_thread/306957#833460
George Papazafeiropoulos
Hello to everyone,<br>
<br>
I am dealing with an iterative procedure in which an initial estimate of a vector {c}0 is given, and at the end of the process an updated vector {c} is calculated. This is used as the initial estimate for the next loop and a more updated {c} is obtained, and this goes on until the difference of the updated {c} from the penult {c} is lower than a specified number, in which case the iterative procedure stops. <br>
<br>
However, in certain cases the above procedure does not converge; the estimates of {c} seem to "oscillate" around a value, and this oscillation does not always happen every two estimates, but I have observed that it could happen also every 36 estimates. Furthermore, the elements of {c} take extreme values in some cases, and in the next iteration they come back to acceptable values. What could I do to force these oscillations to stop and avoid the appearance of extreme values? <br>
<br>
I write here an indicative example of the m. file which I run:<br>
<br>
c=ones(2,1);<br>
for i=1:Nt<br>
uL=2*sum(c);<br>
K=[uL^2,sqrt(uL);uL, 1/uL];<br>
D=[sin(uL);cos(uL)];<br>
d=cK\D;<br>
if d<ones(2,1)*0.0001<br>
break<br>
end<br>
c=K\D;<br>
end<br>
c<br>
<br>
I would appreciate any of your help. If anyone knows something about such procedures he is kindly requested to give me some hints or suggest some links for further information.<br>
Thank you very much in advance.

Thu, 28 Apr 2011 10:08:55 +0000
Re: Convergence of iterative procedure
http://www.mathworks.com/matlabcentral/newsreader/view_thread/306957#833469
Torsten
On 28 Apr., 10:04, "George Papazafeiropoulos"<br>
<gpapazafeiropou...@yahoo.gr> wrote:<br>
> Hello to everyone,<br>
><br>
> I am dealing with an iterative procedure in which an initial estimate of a vector {c}0 is given, and at the end of the process an updated vector {c} is calculated. This is used as the initial estimate for the next loop and a more updated {c} is obtained, and this goes on until the difference of the updated {c} from the penult {c} is lower than a specified number, in which case the iterative procedure stops.<br>
><br>
> However, in certain cases the above procedure does not converge; the estimates of {c} seem to "oscillate" around a value, and this oscillation does not always happen every two estimates, but I have observed that it could happen also every 36 estimates. Furthermore, the elements of {c} take extreme values in some cases, and in the next iteration they come back to acceptable values. What could I do to force these oscillations to stop and avoid the appearance of extreme values?<br>
><br>
> I write here an indicative example of the m. file which I run:<br>
><br>
> c=ones(2,1);<br>
> for i=1:Nt<br>
> uL=2*sum(c);<br>
> K=[uL^2,sqrt(uL);uL, 1/uL];<br>
> D=[sin(uL);cos(uL)];<br>
> d=cK\D;<br>
> if d<ones(2,1)*0.0001<br>
> break<br>
> end<br>
> c=K\D;<br>
> end<br>
> c<br>
><br>
> I would appreciate any of your help. If anyone knows something about such procedures he is kindly requested to give me some hints or suggest some links for further information.<br>
> Thank you very much in advance.<br>
<br>
What makes you believe that a general iteration of the form<br>
K(x_i)*x_(i+1)=D(x_i)<br>
should always converge ?<br>
It's simply not the case.<br>
Use MATLAB's fsolve to solve the system of equations<br>
K(x)*x  D(x) = 0<br>
<br>
Best wishes<br>
Torsten.

Thu, 28 Apr 2011 20:10:14 +0000
Re: Convergence of iterative procedure
http://www.mathworks.com/matlabcentral/newsreader/view_thread/306957#833556
Roger Stafford
"George Papazafeiropoulos" <gpapazafeiropoulos@yahoo.gr> wrote in message <ipb71k$o99$1@fred.mathworks.com>...<br>
> ........<br>
> I would appreciate any of your help. If anyone knows something about such procedures he is kindly requested to give me some hints or suggest some links for further information.<br>
> Thank you very much in advance.<br>
       <br>
I am very curious as to what equation or equations you were attempting to solve with that iteration you have described. Based on my limited observations it will fail to converge no matter what initial values it is given. There is a certain single pair of values with a sum a little less than two that in theory would give a constant result to that iteration, but it is highly unstable and in practice would actually diverge rapidly even with them because of round off errors. You should know that there are iterative methods that would quickly converge to that pair, but I have a hunch that there is some kind of error, typographical or programming, in what you have presented here.<br>
<br>
Roger Stafford

Fri, 29 Apr 2011 05:26:04 +0000
Re: Convergence of iterative procedure
http://www.mathworks.com/matlabcentral/newsreader/view_thread/306957#833607
George Papazafeiropoulos
Dear Mr. Roger,<br>
<br>
The iteration I described does not pertain to the specific problem I am trying to solve. It was indicative of that problem. However, I used successfully the fsolve command and I solved the problem. Thank you very much for your answer!<br>
<br>
Best regards,<br>
<br>
George<br>
<br>
"Roger Stafford" wrote in message <ipchj6$dfm$1@fred.mathworks.com>...<br>
> "George Papazafeiropoulos" <gpapazafeiropoulos@yahoo.gr> wrote in message <ipb71k$o99$1@fred.mathworks.com>...<br>
> > ........<br>
> > I would appreciate any of your help. If anyone knows something about such procedures he is kindly requested to give me some hints or suggest some links for further information.<br>
> > Thank you very much in advance.<br>
>        <br>
> I am very curious as to what equation or equations you were attempting to solve with that iteration you have described. Based on my limited observations it will fail to converge no matter what initial values it is given. There is a certain single pair of values with a sum a little less than two that in theory would give a constant result to that iteration, but it is highly unstable and in practice would actually diverge rapidly even with them because of round off errors. You should know that there are iterative methods that would quickly converge to that pair, but I have a hunch that there is some kind of error, typographical or programming, in what you have presented here.<br>
> <br>
> Roger Stafford

Fri, 29 Apr 2011 05:35:19 +0000
Re: Convergence of iterative procedure
http://www.mathworks.com/matlabcentral/newsreader/view_thread/306957#833608
George Papazafeiropoulos
Dear Mr Torsten,<br>
<br>
Thank you very much for your reply. I tried the fsolve command and I managed to solve the problem.<br>
<br>
Best regards,<br>
<br>
George<br>
<br>
Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <d01e02ece1d44059948f789ab4bca203@s9g2000yqm.googlegroups.com>...<br>
> On 28 Apr., 10:04, "George Papazafeiropoulos"<br>
> <gpapazafeiropou...@yahoo.gr> wrote:<br>
> > Hello to everyone,<br>
> ><br>
> > I am dealing with an iterative procedure in which an initial estimate of a vector {c}0 is given, and at the end of the process an updated vector {c} is calculated. This is used as the initial estimate for the next loop and a more updated {c} is obtained, and this goes on until the difference of the updated {c} from the penult {c} is lower than a specified number, in which case the iterative procedure stops.<br>
> ><br>
> > However, in certain cases the above procedure does not converge; the estimates of {c} seem to "oscillate" around a value, and this oscillation does not always happen every two estimates, but I have observed that it could happen also every 36 estimates. Furthermore, the elements of {c} take extreme values in some cases, and in the next iteration they come back to acceptable values. What could I do to force these oscillations to stop and avoid the appearance of extreme values?<br>
> ><br>
> > I write here an indicative example of the m. file which I run:<br>
> ><br>
> > c=ones(2,1);<br>
> > for i=1:Nt<br>
> > uL=2*sum(c);<br>
> > K=[uL^2,sqrt(uL);uL, 1/uL];<br>
> > D=[sin(uL);cos(uL)];<br>
> > d=cK\D;<br>
> > if d<ones(2,1)*0.0001<br>
> > break<br>
> > end<br>
> > c=K\D;<br>
> > end<br>
> > c<br>
> ><br>
> > I would appreciate any of your help. If anyone knows something about such procedures he is kindly requested to give me some hints or suggest some links for further information.<br>
> > Thank you very much in advance.<br>
> <br>
> What makes you believe that a general iteration of the form<br>
> K(x_i)*x_(i+1)=D(x_i)<br>
> should always converge ?<br>
> It's simply not the case.<br>
> Use MATLAB's fsolve to solve the system of equations<br>
> K(x)*x  D(x) = 0<br>
> <br>
> Best wishes<br>
> Torsten.<br>
> <br>
>