nsolve 不会解决

如何解决nsolve 不会解决

我正在尝试根据温度创建曲面图。我需要将冷热温度输入到一个函数中,该函数为我们的“z 轴”值求解方程组。该函数工作正常,直到我将其设置为某个变量。当我将它设置为变量时,系统并没有完全解决。以下是我得到的错误示例:

SympifyError                              Traceback (most recent call last)
<ipython-input-12-828bf02f4398> in <module>
     49 cin = linspace(0,200,100)
     50 X,Y = meshgrid(hin,cin)
---> 51 Z = solver(X,Y)
     52 
     53 ax = axes(projection='3d')

<ipython-input-12-828bf02f4398> in solver(TH,TC)
     34     Tinfhin = TH +273.15
     35     Tinfcin = TC + 273.15
---> 36     sols = sy.nsolve(  (Eq(Qh,mdoth * cph * (Tinfhin - Tinfhout) ),37           Eq(Qh,nsh * hh * Ash * ((Tinfhin + Tinfhout)/2 - Th)),38           Eq(Qh,n * (alpha * II * Th - 0.5 * (II**2) * ree + (Ke * (Th-Tc)))),D:\Users\sampl\Anaconda3\lib\site-packages\sympy\core\relational.py in __new__(cls,lhs,rhs,**options)
    389 
    390         lhs = _sympify(lhs)
--> 391         rhs = _sympify(rhs)
    392 
    393         evaluate = options.pop('evaluate',global_evaluate[0])

D:\Users\sampl\Anaconda3\lib\site-packages\sympy\core\sympify.py in _sympify(a)
    415 
    416     """
--> 417     return sympify(a,strict=True)
    418 
    419 

D:\Users\sampl\Anaconda3\lib\site-packages\sympy\core\sympify.py in sympify(a,locals,convert_xor,strict,rational,evaluate)
    337 
    338     if strict:
--> 339         raise SympifyError(a)
    340 
    341     if iterable(a):

SympifyError: SympifyError: array([[1353.5478432 - 4.955328*Tinfhout,1363.55860683636 - 4.955328*Tinfhout,1373.56937047273 - 4.955328*Tinfhout,...,2324.59191592727 - 4.955328*Tinfhout,2334.60267956364 - 4.955328*Tinfhout,

这是我的代码

from pylab import *
from random import *
from mpl_toolkits import mplot3d
import pandas as pd
from scipy.optimize import fsolve
import sympy as sy

mdoth = 0.004916
cph = 1008
nsh = .598
hh= 86.68
Ash = .02
n=127
alpha = .00041427
rho = .002129
k=3.041
Le = .0025
Ae = .000001
re = rho * Le/Ae
Ke = k * Ae/Le
nsc = .674
hc = 87.68
Asc = .016
rL = re
mdotc = .004542
cpc = 1007




II,Qc,Qh,Tc,Th,Tinfcout,Tinfhout = symbols('II,Tinfhout')

def solver(TH,TC):
    Tinfhin = TH +273.15
    Tinfcin = TC + 273.15
    sols = sy.nsolve(  (Eq(Qh,Eq(Qh,Eq(Qc,n * (alpha * II * Tc + 0.5 * (II**2) * ree + (Ke * (Th-Tc)))),nsc * hc * Asc * (Tc - (Tinfcin + Tinfcout)/2) ),mdotc * cpc * (Tinfcout - Tinfcin) ),Eq(II,(alpha * (Th - Tc))/(rL + ree) )),(II,Tinfhout),(1,5,300,330,330) )
    result = sols[0]
    return(result)     


hin = linspace(0,100)
cin = linspace(0,100)
X,cin)
Z = solver(X,Y)

ax = axes(projection='3d')
ax.set_xlabel("TC")
ax.set_ylabel("Ambient")
ax.set_zlabel("Voltage")
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap = 'plasma')
ax.view_init(0,180)'''

这个问题的最佳解决方案是什么?

解决方法

在使用多个包时必须始终更加小心,因为一个中的习语并不总是适用于另一个。 SymPy 告诉您它不知道如何处理 array 对象。我认为您需要一次解包一个数组元素来求解和建立解向量。 *并且还将变量名称 re 更改为 ree

def solver(_TH,_TC):
    rv = []
    for TH,TC in zip(_TH,_TC):
        TH = TH[0]
        TC = TC[0]
        Tinfhin = TH +273.15
        Tinfcin = TC + 273.15
        sols = sy.nsolve(  (Eq(Qh,mdoth * cph * (Tinfhin - Tinfhout) ),Eq(Qh,nsh * hh * Ash * ((Tinfhin + Tinfhout)/2 - Th)),n * (alpha * II * Th - 0.5 * (II**2) * ree + (Ke * (Th-Tc)))),Eq(Qc,n * (alpha * II * Tc + 0.5 * (II**2) * ree + (Ke * (Th-Tc)))),nsc * hc * Asc * (Tc - (Tinfcin + Tinfcout)/2) ),mdotc * cpc * (Tinfcout - Tinfcin) ),Eq(II,(alpha * (Th - Tc))/(rL + ree) )),(II,Qc,Qh,Tc,Th,Tinfcout,Tinfhout),(1,5,300,330,330) )
        rv.append(sols[0])
    return(rv)     
,

不要使用这些,这是一种不好的做法。请使用ìmport matplotlib.pyplot

from pylab import *
from random import *

改进后的代码是:

import matplotlib
import matplotlib.pyplot as plt
import random
# from mpl_toolkits import mplot3d
# import pandas as pd
from scipy.optimize import fsolve
import sympy as sy
import numpy as np

mdoth = 0.004916
cph = 1008
nsh = .598
hh= 86.68
Ash = .02
n=127
alpha = .00041427
rho = .002129
k=3.041
Le = .0025
Ae = .000001
ree = rho * Le/Ae
Ke = k * Ae/Le
nsc = .674
hc = 87.68
Asc = .016
rL = ree
mdotc = .004542
cpc = 1007




II,Tinfhout = sy.symbols('II,Tinfhout')

def solver(_TH,_TC):
        TH = TH[0]
        TC = TC[0]
        Tinfhin = TH +273.15
        Tinfcin = TC + 273.15
        sols = sy.nsolve((sy.Eq(Qh,sy.Eq(Qh,sy.Eq(Qc,sy.Eq(II,330) )
        rv.append(sols[0])
    return rv


hin = np.linspace(0,200,20)
cin = np.linspace(0,20)
X,Y = np.meshgrid(hin,cin)
Z = solver(X,Y)

ZZ = []

for _ in range(0,len(Z)):
    ZZ.append(Z)
    
ZZ = np.array(ZZ,dtype='float')

fig,ax = plt.subplots(figsize=(8,8),subplot_kw={"projection": "3d"})
ax.plot_surface(X,Y,ZZ,rstride=1,cstride=1,cmap = 'plasma',antialiased=False)

ax.set_xlabel("TC")
ax.set_ylabel("Ambient")
ax.set_zlabel("Voltage")
ax.view_init(0,180)
fig.tight_layout()
plt.show()

图是

enter image description here

我用过@smichr 的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?