簡體   English   中英

dsolve 中未知類型的方程

[英]Unknown type of equation in dsolve

我需要解決這個與化學反應器相關的系統。 我使用了 sympy 並且無法以任何方式解決錯誤

我的代碼在這里:

from sympy import symbols, Function, dsolve, Eq, Derivative, sin, cos

Pf, Po, Pm, Pc, Ph, Pn = symbols('Pf Po Pm Pc Ph Pn', cls=Function)

#Pf-furfural pressure; Po-oxygen pressure; Pm-maleic anhydride pressure; Pco-carbon dioxide pressure; Ph-steam pressure; Pn-nitrogen pressure*

W, k1, k2, k3, n, m, l, R, T, vt, Pt = symbols('W k1 k2 k3 n m l R T vt Pt')

#W-catalyst mass; k1-kinetic constant first reaction; k2-kinetic constant second reaction; k3-kinetic constant third reaction; n, m y l, reaction orders for oxygen in the first, second and third reaction, respectively; R- universal gas constant, T-temperature, vt-catalyst volume*

A = R*T/vt

Pt = Pf(W)+Pf(W)+Pm(W)+Pc(W)+Ph(W)+Pn(W)

eq=((Eq(Derivative(Pf(W), W), (-A*k1*Pf(W)*(Po(W)**n)-A*k2*Pf(W)*(Po(W)**m)))),
    (Eq(Derivative(Po(W), W), (-A*k1*Pf(W)*(Po(W)**n)-A*k2*Pf(W)*(Po(W)**m)-A*k3*Pm(W)*(Po(W)**l)))),
    (Eq(Derivative(Pm(W), W), (A*k1*Pf(W)*(Po(W)**n)-A*k3*Pm(W)*(Po(W)**l)))),
    (Eq(Derivative(Pc(W), W), (A*k1*Pf(W)*(Po(W)**n)+5*A*k2*Pf(W)*(Po(W)**m)+4*A*k3*Pm(W)*(Po(W)**l)))),
    (Eq(Derivative(Ph(W), W), (A*k1*Pf(W)*(Po(W)**n)+2*A*k2*Pf(W)*(Po(W)**m)+A*k3*Pm(W)*(Po(W)**l)))),
    (Eq(Derivative(Pn(W), W), (0))))

dsolve(eq, [Pf(W), Po(W), Pm(W), Pc(W), Ph(W), Pn(W)], hint="all")

我運行代碼后,出現以下錯誤

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-56-42dc4d2e7b25> in <module>
----> 1 dsolve(eq)

~\Anaconda3\lib\site-packages\sympy\solvers\ode.py in dsolve(eq, func, hint, simplify, ics, xi, eta, x0, n, **kwargs)
    607             "number of functions being equal to number of equations")
    608         if match['type_of_equation'] is None:
--> 609             raise NotImplementedError
    610         else:
    611             if match['is_linear'] == True:

NotImplementedError: 

符號微分方程求解的sympy函數是實驗性的,不是很完整,因此您應該從表面上獲取錯誤消息,您的系統不屬於任何具有求解器方法的類別。

此外,一般微分方程和 DE 的更多系統不具有符號解,具有符號解的集合非常“薄”,對符號可解方程的輕微更改將使其無法解。 這意味着即使是更完整的符號求解器方法庫,例如 Mathematica 中的一個,也無法找到符號解法。

所以你需要弄清楚你真正想要的是什么(解圖、參數擬合等),然后找到合適的數值方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM