- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试在 sympy 中求解 4 个微分方程组。我收到“NotImplementedError”。有解决办法吗?
我试图解决的颂歌集是:
![ODE]: /image/2U4BR.jpg
我尝试用数值替换 R12 到 R45 符号。我继续收到同样的错误。
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
# Define symbols
m1, m2, m3, m4 = sp.symbols('m1 m2 m3 m4', real = True, positive=True)
c1, c2, c3, c4 = sp.symbols('c1 c2 c3 c4', real = True, positive=True)
R12, R25, R23, R34, R45 = sp.symbols('R12 R25 R23 R34 R45', real = True, positive=True) #0.2, 0.1, 2.7, 0.5, .6
T1, T2, T3, T4 = sp.symbols('T1 T2 T3 T4', cls=sp.Function)
qp, qel = sp.symbols('qp qel')
T5 = 25 # ambient temperature
# Define equations
eq1 = -sp.Eq(sp.Derivative(T1(t), t)) + - (T1(t)-T2(t)) / (R12 * m1 * c1)
eq2 = -sp.Eq(sp.Derivative(T2(t), t)) + 1 / (m2 * c2) * ((T1(t) - T2(t))/R12 + (T5-T2(t))/R25 - (T2(t)-T3(t))/R23)
eq3 = -sp.Eq(sp.Derivative(T3(t), t)) + 1 / (m3 * c3) * ((T2(t) - T3(t))/R23 + (T4(t)-T3(t))/R34 - qp)
eq4 = -sp.Eq(sp.Derivative(T4(t), t)) + 1 / (m4 * c4) * (qp - (T4(t) - T3(t))/R34 + (T4(t)-T5)/R45)
eq = (eq1, eq2, eq3, eq4)
funct = (T1(t), T2(t), T3(t), T4(t))
# Solve
sp.dsolve(eq, funct)
我期望收到这组微分方程的符号解。结果是“NotImplementedError”
最佳答案
您创建方程的语法不正确。 Eq
需要接受两个参数,左侧和右侧。
eq1 = sp.Eq(sp.Derivative(T1(t), t), + - (T1(t)-T2(t)) / (R12 * m1 * c1))
eq2 = sp.Eq(sp.Derivative(T2(t), t), + 1 / (m2 * c2) * ((T1(t) - T2(t))/R12 + (T5-T2(t))/R25 - (T2(t)-T3(t))/R23))
eq3 = sp.Eq(sp.Derivative(T3(t), t), + 1 / (m3 * c3) * ((T2(t) - T3(t))/R23 + (T4(t)-T3(t))/R34 - qp))
eq4 = sp.Eq(sp.Derivative(T4(t), t), + 1 / (m4 * c4) * (qp - (T4(t) - T3(t))/R34 + (T4(t)-T5)/R45))
我这样做了,dsolve 需要一段时间来计算解决方案。它必须对 4x4 符号矩阵求幂,这涉及到查找符号特征值,即求解四次方程,即 very complicated in the general case .
SymPy 可能可以在这里改进。用数字参数替换符号参数应该会使速度更快。
关于python - 如何修复/解决 sympy dsolve 函数中的 NotImplemented 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55516346/
为什么 sympy 的 dsolve 函数给出的答案取决于给出方程的顺序? 这个顺序(x,然后是 y,然后是 z): k2, k3, t = symbols('k2 k3 t') x,
所以我尝试使用 sympy 的 dsolve 函数来解决简单谐波运动的非常简单的情况,即: 我是这样做的: w = sympy.symbols('ω', real = True, positive=T
我使用的是 SymPy 0.7.3 版本,在使用 dsolve 函数时遇到了一些问题。当输入方程的参数太多时,dsolve 似乎有困难。 我试过求解以下等式: from sympy import *
我不太确定如何解释这一点。 我正在求解一个相当大的微分方程系统,DSolve 有时会吐出一个替换规则列表,其中包括具有 #1 的项。 .我知道#1是一个参数的占位符,但我只是不知道它来自哪里。 如果我
我的代码 我有一个程序可以计算二阶微分方程的解,如下面的代码片段所示: import sympy as sp print('sympy version:', sp.__version__) t = s
我正在尝试求解方程系统,其中包含代数方程和微分方程。为了象征性地做到这一点,我需要将 dsolve 和 solve 结合起来(是吗?)。 考虑以下示例:我们有三个基本方程 a == b + c; %
我尝试在 sympy 中求解 4 个微分方程组。我收到“NotImplementedError”。有解决办法吗? 我试图解决的颂歌集是: ![ODE]: /image/2U4BR.jpg 我尝试用数值
我正在尝试求解一个微分方程: DSolve[{0.02*x^2*y''[x] - y'[x] - y[x] == 0}, y[x], x] 但我收到警告: Part::partw: Part 2 of
我是一名优秀的程序员,十分优秀!