gpt4 book ai didi

python - Sympy dsolve 答案取决于输入的顺序?

转载 作者:行者123 更新时间:2023-11-28 18:14:56 24 4
gpt4 key购买 nike

为什么 sympy 的 dsolve 函数给出的答案取决于给出方程的顺序?

这个顺序(x,然后是 y,然后是 z):

    k2, k3, t = symbols('k2 k3 t')
x,y,z = symbols('x y z', function=True)

eq = (Eq(Derivative(x(t),t), k3*y(t)), Eq(Derivative(y(t),t), -(k3+k2)*y(t)), Eq(Derivative(z(t),t), k2*y(t)))
dsolve(eq)

给出:

   [Eq(x(t), C1 + C2*t + C3*k3*exp(t*(-k2 - k3))/k2), Eq(y(t), -C3*(k2 + k3)*exp(t*(-k2 - k3))/k2), Eq(z(t), C2 + C3*exp(t*(-k2 - k3)))]

但是当 eq 的顺序改变时(首先是 z,然后是 x,然后是 y):

    k2, k3, t = symbols('k2 k3 t')
x,y,z = symbols('x y z', function=True)

eq = (Eq(Derivative(z(t),t), k2*y(t)), Eq(Derivative(x(t),t), k3*y(t)), Eq(Derivative(y(t),t), -(k3+k2)*y(t)))

dsolve(eq, ics={z(0):0, x(0):0, y(0):1})

答案不同。

[Eq(z(t), C1 + C2*t - C3*k2*exp(t*(-k2 - k3))/(k2 + k3)), Eq(x(t), C2 - C3*k3*exp(t*(-k2 - k3))/(k2 + k3)), Eq(y(t), C3*exp(t*(-k2 - k3)))]

除此之外,dsolve 在这两种情况下给出的答案都不正确。特别是常量C1、C2、C3不正确。将初始条件设置为 ics={x(0):0, y(0):1,...etc 不起作用或影响答案。

最佳答案

显然,此类系统的求解器逻辑不正确;我 raised an issue .

另外:微分方程组的解中的常数可以用多种方式表示,它们没有单一的规范形式。可以预期,方程式的呈现顺序将影响它们的处理顺序(就像线性方程组中发生的那样),这将影响解的形式。

但是,正如您所指出的,两种解决方案都不正确。这可以通过插入它们来检查:

eq1 = (Eq(Derivative(x(t),t), k3*y(t)), Eq(Derivative(y(t),t), -(k3+k2)*y(t)), Eq(Derivative(z(t),t), k2*y(t)))
sol1 = dsolve(eq1)
print([eqn.subs({e.lhs: e.rhs for e in sol1}).doit().simplify() for eqn in eq1])
eq2 = (Eq(Derivative(z(t),t), k2*y(t)), Eq(Derivative(x(t),t), k3*y(t)), Eq(Derivative(y(t),t), -(k3+k2)*y(t)))
sol2 = dsolve(eq2)
print([eqn.subs({e.lhs: e.rhs for e in sol2}).doit().simplify() for eqn in eq2])

第一次打印

[Eq(C3*k3*(k2 + k3)*exp(-t*(k2 + k3))/k2, -(C2*k2*exp(t*(k2 + k3)) - C3*k3*(k2 + k3))*exp(-t*(k2 + k3))/k2),
True,
True]

表示满足第2、3个方程,但第1个不满足。

第二次打印

[Eq(C3*k2*exp(-t*(k2 + k3)), C2 + C3*k2*exp(-k2*t)*exp(-k3*t)), True, True]

因此,第一个方程式再次无法正确求解,尽管现在已经不同了。

Giving the initial conditions as ics={x(0):0, y(0):1,...etc doesn't work or influence the answer.

在 SymPy 1.1.1 发布后添加了对初始条件的支持。他们在 development version 工作并将在 SymPy 1.2+ 中工作。

关于python - Sympy dsolve 答案取决于输入的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48949289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com