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

fsolve 出现是因为我需要找出 't' 等于什么,但我需要在父类级别评估 '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 回答