2016-11-24 73 views
-2
import math 


if x == 2 ** (((x-1000)/10)^(1/2)): 
    print(x) 

我想写一个函数来解决函数N = 10 *(Log2 N)^ 2 + 1000,但它不工作,有人可以帮我解决它吗?计算具体功能

+2

你写的“函数”似乎与你的问题中陈述的问题没有任何关系。我认为你需要先学习一些Python基础知识。例如,不需要初始化变量。你不需要'if'语句,只需要一个简单的任务。你需要的是一个值来计算(在你的例子中'N')。查看[Python教程](http://docs.python.org/3/tutorial/index.html)。 –

+0

我写的函数是函数的简化版本 – jiahuiding

+1

它看起来像函数的反函数,但它至少需要另一个变量('x'将永远不会等于'2 **(((x-1000)/10)^(1/2))'),你需要一个为'N'找到匹配值的策略。如果你的目标是在不使用'math.log()'的情况下解决这个问题,那么可能会有一些迭代。 –

回答

0

恕我直言:

这是你在找什么,基于此公式:功能N = 10 *(LOG2 N)^ 2 + 1000

import math 
def funct_try(x): 
    return (10*(math.log(x,2)**2)+1000) 

funct_try(100) 

的答案是1441.4082507040794

+0

你为什么要100作为输入? x的答案是? – jiahuiding

+0

是100是一个输入,并且是x是100,所以函数给出函数 –

0

很难理解你真正想要的东西。你写的代码似乎与你的问题中提到的问题没有任何关系。 假设您有问题,了解如何使用日志功能:

可以说你要计算与当时基地2日志功能:

import math 
print(math.log(8,2)) 

输出:

3.0 

假设帮助。没有,让我们尝试你的功能;它应该看起来像这样:

import math 
def function_name(N): 
    print(10*(math.pow(math.log(N,2),2))+1000) 

function_name(110) #here I called the above function with a value 100 

输出:

1459.8683956421526 
+0

的值,是否解决了x?你为什么放110? – jiahuiding

+0

是的,它解决了这个问题。就像我说的,110只是一个示例值来证明你。 – Inconnu

1

或者迭代函数有些时候,只要它是偶然的固定点迭代

from math import log 

func = lambda x : 10*log(x,2)**2 + 1000 
x=1000 
for _ in range(15): x = func(x); print "%.12f" % x 

这使得它看起来像略少输出

1993.168564084178 
2201.401890990801 
2233.034094200055 
2237.609428257210 
2238.266536460564 
2238.360814103042 
2238.374338474385 
2238.376278539726 
2238.376556840441 
2238.376596762423 
2238.376602489195 
2238.376603310695 
2238.376603428538 
2238.376603445443 
2238.376603447868 

比每次迭代增加一个正确的数字。