1

親方程式があり、最初にいくつかの値を計算する必要があります。例えば:

parent = child1*1 + child2*2 ...

ただし、各子は、変更可能なパラメーターに基づいて値を計算する際に柔軟である必要があります。私はクラスがPythonでこれを行う方法かもしれないと考えていましたが、これを効果的に行う方法に慣れていません.

では、質問の要点は、後で fsolve で使用される複数のパラメーターを受け入れるクラスをどのように作成すればよいのでしょうか? このようなもの?

class parent:
    def __init__(self, x):
        self.child1 = 1*x + 2*x ...
        self.child2 = x**2 + x**3 ...

print(parent.child1(500) + parent.child2(1000))

明確化のために編集:

わかりました、私はこれを一般化しようとしていましたが、私は特定の問題が有益かもしれないと思います. いくつかの燃料の燃焼時の温度を計算しようとしています。最初のパスとして、理想気体近似のエンタルピーの違いを把握する必要があります。これらのエンタルピーは次の形式で計算されます。

'H° − H°298.15= A*t + B*t2/2 + C*t3/3 + D*t4/4 − E/t + F − H'

ここで、A、B、C などは特定の数値です。ただし、コンポーネントを変更すると、たとえば、O2 と N2 の両方を計算する必要がある場合、N2 の A、B、C の値は O2 とは異なります。これらのコンポーネントを子として使用しようとしていました。

'self.N2 = A1*t ...' 'self.O2 + A2*t ...'

親方程式は次の形式になります。

「0 = h.N2(t) + h.O2(t) + その他のもの」

't' が何に等しいかを調べる必要があるため、fsolve が使用されますが、親クラス レベルで 't' を評価する必要があります。

4

3 に答える 3

2

あなたが探しているように私には見えますnumpy.poly1d。これにより、実際に自分で実装することを期待できるよりもはるかに堅牢な多項式クラスが提供されます...

于 2012-11-13T13:53:49.543 に答える
0

次のようなメソッドを使用できます。

class parent:
    def __init__(self, x):
       self.__child1 = 1*x
       self.__child2 = 2*x

    def child1(x):
        return self.__child1*x

    def child2(x):
        return self.__child2*x
于 2012-11-13T13:52:53.433 に答える
0

これは、あなたが期待するものに近いことは何もしません。

必要なのは複数のパラメーターです。

class parent:
    def __init__(self, x1, x2):
        self.child1 = 1*x1 + 2*x1 ...
        self.child2 = x2**2 + x2**3 ...

>> x = parent(500,1000)
>> print(x.child1+x.child2)
987638461

クラスではなく単純な関数を使用したほうがよいでしょうが...

def poly_wants_a_cracker(x1,x2):
    child1 = 1*x1 + 2*x1 ...
    child2 = x2**2 + x2**3 ...
    return child1 + child2

>>poly_wants_a_cracker(500,1000)
987638461

987638461 は、実際に何をしているかに応じた答えです

于 2012-11-13T13:55:13.937 に答える