Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.graphics.apps.gnuplot > #412

Re: Function defined by a while loop

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!newsfeed.x-privat.org!diesel.cu.mi.it!not-for-mail
From Mauro <pippo@hotmail.com>
Newsgroups comp.graphics.apps.gnuplot
Subject Re: Function defined by a while loop
Date Tue, 28 Jun 2011 11:48:33 +0200
Organization C.U. srl News Server
Lines 46
Message-ID <iuc7v1$i7p$1@tdi.cu.mi.it> (permalink)
References <b935110d-6f8d-4b0d-919c-3151effdf59f@28g2000yqu.googlegroups.com> <iuaalu$14e$1@dont-email.me>
NNTP-Posting-Host 147.162.219.242
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding 7bit
X-Trace tdi.cu.mi.it 1309254433 18681 147.162.219.242 (28 Jun 2011 09:47:13 GMT)
X-Complaints-To abuse@diesel.cu.mi.it
NNTP-Posting-Date Tue, 28 Jun 2011 09:47:13 +0000 (UTC)
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11
In-Reply-To <iuaalu$14e$1@dont-email.me>
Xref x330-a1.tempe.blueboxinc.net comp.graphics.apps.gnuplot:412

Show key headers only | View raw


Il 27/06/2011 18:21, James Waldby ha scritto:
> On Mon, 27 Jun 2011 02:50:05 -0700, Antonio Lo Turco wrote:
>> I would like to take advantage of the new construct while (<expr>)
>> {<commands>} in gnuplot to define a function something like that
>> f(x,<parameters>,x0 (initial guess of x), eps (maximum error), niter
>> (maximum no of iterations) =
>> x=x0;i=1; while (abs(x-x0)>eps&&  i<niter) {x=some function of x and
>> parameters;i=i+1}
>>
>> Obviously I tried and it doesn't work!
>>
>> The only way I managed to obtained some sensible result is to use the
>> instruction "call dummy.plt<parameters>  x0 eps niter" where "dummy.plt"
>> script contains the while loop.
>>
>> However I would like (and I'm not able) to implement such solution as a
>> user defined function.
> ...
>
> Because you set x=x0 at start of f(), if eps is positive the condition
> abs(x-x0)>eps is always false and the while loop won't do anything.

Oh, I actually introduced a conceptual mistake that would give a wrong 
result, but it wasn't the matter, because gnuplot merely refuses to give 
any result...

>
> I have gnuplot 4.4.0 installed, which apparently doesn't have 'while'
> but a workaround like the following is possible.  In following,
> f(x,x0,eps,iter) is analogous to your f(...), and g(x,y) stands for
> your "some function of x and parameters".  (I left out x=x0 statement.)
>
> gnuplot>  g(x,y)=(x+y)/2.0;
> gnuplot>  f(x,x0,eps,iter) = abs(x-x0)>eps ? (iter? f(g(x,x0),x0,eps,iter-1) : x) : x;
> gnuplot>  print f(15,0,.5,9),f(16,0,.5,9),f(17,0,.5,9)
> 0.46875 0.5 0.265625
> gnuplot>  print f(15,0,.5,3),f(16,0,.5,3),f(17,0,.5,3)
> 1.875 2.0 2.125
>

A further demonstration that a good use of human brain generally 
overcomes the need of new software functions!!!

Thank you indeed

Mauro

Back to comp.graphics.apps.gnuplot | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Function defined by a while loop Antonio Lo Turco <antonio.lo.turco@gmail.com> - 2011-06-27 02:50 -0700
  Re: Function defined by a while loop James Waldby <not@valid.invalid> - 2011-06-27 16:21 +0000
    Re: Function defined by a while loop Mauro <pippo@hotmail.com> - 2011-06-28 11:48 +0200
  Re: Function defined by a while loop Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2011-06-27 22:00 +0200
    Re: Function defined by a while loop Mauro <pippo@hotmail.com> - 2011-06-28 11:56 +0200

csiph-web