0

Slope引数を持ち、Distanceを返すPython 関数がありますCost。勾配は 1 から 80 の範囲で指定できます。距離は 1 から 20000 の範囲で指定できます。コストは任意の正の数です。

傾き、距離、コストの関係を知りたいです。これら 3 つの変数間の関係を示すのに最適なプロットはどれですか? そして、どうやってそれを作成しますか。たとえば、勾配が上がって距離が下がった場合、コストはどうなるか知りたいですか? 勾配と距離が上がるとコストはどうなりますか? 等...

def func(Slope, Distance):
     ...
     return cost


SlopeList = list(xrange(81))
DistanceList = list(xrange(20000)



myList= []
for Distance in DistanceList:
    for Slope in SlopeList:   
         cost = func(Slope, Distance)
         var = (Slope, Distance, Cost)
         append.myList(var)
4

1 に答える 1

2

質問は少し不明確なので、すべての可能性をカバーしようとします:

a) のような 2 つの変数の関数があり、2 つの変数funcの多くの組み合わせに対してその関数を実行できる場合、 を使用matplotlibして、(おそらく) 勾配と距離をそれぞれ x 軸と y 軸に設定した等高線図を描画できます。等高線として表示されるコスト。例については、こちらを参照してください。

b) 次のような機能がある場合:

Cost = func(Slope,Distance)

... そして、Cost と他の 2 つの変数のいずれかの値がわかっている場合は、次のいずれかを実行できます。

b1)既知の変数から未知の変数を生成する2 つの関数 (例:funcSlope(Cost,Distance)と) をさらに記述します。funcDistance(Slope,Cost)

b2) 関数funcが利用できないため、その計算方法がわからず、オプション 1 で提案した関数を明示的に記述できない場合、またはfunc分析的に反転して勾配または距離を見つけることが困難な場合他の 2 つの変数では、次のようなコードを使用して未知の変数を数値的に見つけることができます。

def func(Slope,Distance):
    # Imagine that we didn't know the definition of this function
    # so we couldn't write funcSlope() explicitly
    return Slope * Distance**0.1234

def funcSlope(Cost,Distance,minSlope,maxSlope):
    def fs (Slope):
        return Cost - func(Slope,Distance)
    return scipy.optimize.brentq(fs, minSlope, maxSlope)

print (func(2,6))
print (funcSlope(2.4949,6,0,10))

...出力は次のとおりです。

2.494904118641096
1.999996698357211

を呼び出すときに、未知の変数の境界を指定する必要があることがわかりますbrentq()

于 2013-03-13T05:37:56.400 に答える