[Tutor] problems with the bisect method
Mic Forster
micforster@yahoo.com
Sun Mar 9 18:32:02 2003
It's still not obtaining the value that I need. I'll
go back and rethink this from first basis.
--- "antonmuhin at rambler.ru" <antonmuhin@rambler.ru>
wrote:
> Hello Mic,
>
> Wednesday, March 5, 2003, 6:16:00 AM, you wrote:
>
> [snip]
>
> >>>> def fun(k, s):
> MF> return f(k, s) - j
>
> >>>> delta = 1e-9
> >>>> bisect(delta, 1-delta, delta, fun)
> MF> Traceback (most recent call last):
> MF> File "<pyshell#10>", line 1, in ?
> MF> bisect(delta, 1-delta, delta, fun)
> MF> File "<pyshell#5>", line 2, in bisect
> MF> fMax = function(max)
> MF> TypeError: fun() takes exactly 2 arguments (1
> given)
> >>>>
>
> Quite reasonable I must say :). Your function fun
> takes couple of
> arguments---k and s and f too althouh s argument
> seems to be unused.
>
> You may modify it as:
>
> def f(x):
> return ...
>
> def fun(k):
> return f(k) - j
>
> Or write a wrapper function:
>
> def wrapFun(x):
> return fun(x, some constant goes here)
>
> Or even with lambda:
>
> bisect(delta, 1 - delta, delta, lambda x: fun(x,
> smth...))
>
> BTW, although you script is quite short, you'd
> better avoid global
> variables like j.
>
> If you need a set of functions like fun. Python can
> provide with
> better (IMHO) options:
>
> 1. def makeFun(j):
> def newF(x):
> f(x) - j
> return newF
>
> 2. Lambdas again: myF = lambda x: f(x) - j
>
> --
> Best regards,
> anton
> mailto:antonmuhin@rambler.ru
>
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/