2016-11-24 76 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 

比每次迭代增加一個正確的數字。