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

だろうあなたが実際に望んでいることを理解するのは難しいです。あなたが書いたコードは、あなたの質問に記載されている問題とは関係がないようです。あなたは問題がログ機能を使用する方法を理解するために行っていると仮定すると、 :

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

出力:

3.0 

と仮定すると、

あなたはその後、ベース2と、ログ機能を計算したいと言うことができます助けてください。さあ、あなたの機能を試してみましょう。これは次のようになります:

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

や機能にいくつかの回を繰り返すが、それは偶然にわずかに少ないように見える出力

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 

を与える不動点反復

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 

で提供反復ごとに1つの正しい数字が得られました。

関連する問題