2012-11-13 21 views
1

我有一個父方程,需要首先計算一些值。例如:Python中的多個參數類

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)+其他的東西'

的fsolve進來,因爲我需要找出什麼 'T' 等於,但是我需要在父母級別上去「t」。

+3

我真的不明白你在這裏問什麼。你能否給出一些更清晰的預期輸入/輸出示例。這裏使用的是什麼'500''和'1000'? –

+0

你是什麼意思,「我怎麼寫一個類接受多個參數,以後用於fsolve」? – mgilson

回答

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 
2

它看起來像你對我正在尋找numpy.poly1d。這提供了一個更強大的多項式類比你真的希望實現自己...

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是你的答案取決於什麼是你實際上做