我正在解决一个需要绘制图形的问题:
r = (16442.21*(((np.e**(-10468.04/T))*(P 1.5))/((2-X)**1.5))*(((1-X)**2.5) /X))-17374.99*(((np.e (-23855.06/T)) (Fo 0.2) ((2-X)**0.5))/(P 0.5))*(X/((1-X) )**1.3))
我需要的图形是 X(T),曲线代表参数 r 具有相同值的 T 和 X 的值。因此,我使用以下代码从隐式方程中绘制了图:
#Librerías
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
#Ingreso de datos
P=float(input("Ingrese la presión de trabajo en atmosferas: "))
Fo=float(input("Ingrese el flujo inicial de moles de nitrógeno, en kmol/d: "))
#Definición de la función de manera implícita
def f(T,X,r):
return (16442.21*(((np.e**(-10468.04/T))*(P**1.5))/((2-X)**1.5))*(((1-X)**2.5)/X))-17374.99*(((np.e**(-23855.06/T))*(Fo**0.2)*((2-X)**0.5))/(P**0.5))*(X/((1-X)**1.3))-r
#Definición de vectores T y X
T=np.linspace(10,2000,500)
X=np.linspace(0.0001,0.9999,500)
#Pasaje a matriz
T,X=np.meshgrid(T,X)
#Gráfico
r=0.000001
hola=plt.contour(T,X,f(T,X,r),[0],colors='g',label='r=0.000001')
r=0.001
plt.contour(T,X,f(T,X,r),[0],colors='b',label='r=0.001')
r=0.002
plt.contour(T,X,f(T,X,r),[0],colors='m',label='r=0.002')
r=0.005
plt.contour(T,X,f(T,X,r),[0],colors='y',label='r=0.005')
r=0.01
plt.contour(T,X,f(T,X,r),[0],colors='k',label='r=0.01')
r=0.02
plt.contour(T,X,f(T,X,r),[0],colors='r',label='r=0.02')
r=0.05
plt.contour(T,X,f(T,X,r),[0],colors='g',label='r=0.05')
r=0.1
plt.contour(T,X,f(T,X,r),[0],colors='c',label='r=0.1')
r=0.2
plt.contour(T,X,f(T,X,r),[0],colors='b',label='r=0.2')
r=0.5
plt.contour(T,X,f(T,X,r),[0],colors='m',label='r=0.5')
r=1
plt.contour(T,X,f(T,X,r),[0],colors='y',label='r=1')
plt.xlabel('Temperatura [K]')
plt.ylabel('Conversión')
plt.title('Curvas de isovelocidad a presión constante')
plt.show()
结果是这样的:
https://i.stack.imgur.com/5ugDZ.png
问题是我需要最大化每条曲线,我不知道该怎么做,因为我找不到图形的数据,所以我无法进行拟合或类似的事情。
你知道另一种最大化它的方法吗?