求函数的不动点

2024-09-29 17:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

函数的不动点是f(x)=x的点

对于一个特定的函数,我应该从一个随机猜测开始,然后一次又一次地计算f,即:计算f(x),f(f(x)),f(f(f(x)),。。。 直到值在epsilon上没有变化。在

我要编写的函数得到一个输入:一个函数,一个随机猜测,epsilon和n迭代次数。函数应计算不动点的近似值。当两个数之间的差小于epsilon时,或者当n次迭代完成时,它将停止。 输入和输出示例:

    >>> fixed_point(lambda x:x**2, 1, n=5) 
1 #0 iterations needed, initial guess suffices 

>>> fixed_point(lambda x:x**2, 0.5, n=5) 
5.421010862427522e-20 #after 5 iterations 

>>> fixed_point(lambda x:x**2, 0.5, n=4) 
>>> #returns None 

>>> fixed_point(lambda x:x**2, 2, n=5) 
>>> #returns None, guesses were: 2, 4, 16, 256, 65536, 4294967296

我应该在第一个代码中给出正确的答案?在

^{pr2}$

Tags: lambda函数none示例次数initialreturnspoint
1条回答
网友
1楼 · 发布于 2024-09-29 17:13:37

你差点就赢了!你只是没能“记住”你最后的guess,看看:

 def fixed_point(f, guess, epsilon=10**(-8), n=10):
      itr=0
      print "Guess:", guess
      test=f(guess)
      if (abs(test-guess)<epsilon):
          return(test)


      while ((n>itr) and (abs(test-guess)>=epsilon)):
          itr+=1
          guess = test
          test = f(test)
          print "Guess:",guess

          if ((abs(test-guess))<epsilon):
              return(test)

      return(None)


  print fixed_point(lambda x:x**2, 1, n=5)
  print fixed_point(lambda x:x**2, 0.5, n=5)
  print fixed_point(lambda x:x**2, 0.5, n=4)
  print fixed_point(lambda x:x**2, 2, n=5)

相关问题 更多 >

    热门问题