In [1]:
import numpy as np
import pandas as pd
import math
import cmath
from scipy.optimize import root
from scipy.integrate import odeint
from __future__ import division
from scipy import *
from pylab import *
import matplotlib.pyplot as plt
%matplotlib inline

In [2]:
xo = 0.5
gamma = 0.8
yr = 0.1 #kg kgCO2 −1
TAO = 15

In [3]:
# en la matriz parametros se define cada conbinación (xk, A) como una fila de la matriz
parametros = np.array([[0.1, 1],[0.3, 2],[0.4, 4]])
parametros


Out[3]:
array([[ 0.1,  1. ],
       [ 0.3,  2. ],
       [ 0.4,  4. ]])

In [4]:
def intervalosExtraccion(tao, xk, A):
    tao1 = (xo - xk) / (gamma * A * yr)
    tao2 = tao1 + xk / (gamma * A * yr) * np.log(xk / xo + (1 - xk / xo) * np.exp(xo / xk * A))
    zk = xk / (A * xo) * np.log((xo * np.exp(gamma * A * yr / xk * (tao - tao1)) - xk) / (xo - xk))

    return tao1, tao2, zk

In [5]:
def rendimiento(tao, xk, A):
    
    tao1, tao2, zk = intervalosExtraccion(tao, xk, A)
    
    if tao <= tao1 and tao < tao2:
        e = gamma * yr* tao * (1- np.exp(- A))
        #print("tao < tao1 and tao < tao2")
        return e
    if tao > tao1 and tao <= tao2:
        zk = xk / (A * xo) * np.log((xo * np.exp(gamma * A * yr / xk * (tao - tao1)) - xk) / (xo - xk))
        e = gamma * yr * (tao - tao1 * np.exp(- A * (1 - zk)))
        #print("tao >= tao1 and tao < tao2")
        return e
    if tao > tao2:
        e = xo - xk / A * np.log(1 + xk / xo * (np.exp(xo / xk * A) - 1) * np.exp(gamma * A * yr / xk * (tao1 - tao)))
        #print("tao >= tao2")
        return e

In [6]:
caso1 = [[rendimiento(tao, xk, A) for tao in np.linspace(0,TAO)] for xk, A in parametros]
caso1


/home/andres-python/anaconda3/lib/python3.5/site-packages/ipykernel/__main__.py:4: RuntimeWarning: invalid value encountered in log
Out[6]:
[[0.0,
  0.015480503481515702,
  0.030961006963031404,
  0.046441510444547106,
  0.061922013926062808,
  0.077402517407578517,
  0.092883020889094212,
  0.10836352437060991,
  0.12384402785212562,
  0.13932453133364131,
  0.15480503481515703,
  0.17028553829667273,
  0.18576604177818842,
  0.20124654525970415,
  0.21672704874121981,
  0.23220755222273556,
  0.24768805570425123,
  0.26316226702728307,
  0.27855816883989115,
  0.29378225368823213,
  0.30876157355231604,
  0.32343654083397494,
  0.33775619815162916,
  0.35167527000149623,
  0.36515222904087458,
  0.3781479701886501,
  0.39062486466268487,
  0.402546060258831,
  0.41387494623903642,
  0.42457473119368283,
  0.43460810015827545,
  0.44393692830690873,
  0.45252203554707215,
  0.46032297089746099,
  0.46729781856882635,
  0.47340301974008819,
  0.47859332113463482,
  0.48286931725454763,
  0.48634893672002549,
  0.48915980931666803,
  0.49141660746817667,
  0.49321943250109174,
  0.49465369004190646,
  0.49579093662844093,
  0.49669026865739097,
  0.49739993904691948,
  0.49795899361401663,
  0.49839880411139981,
  0.49874443572454247,
  0.49901582679662498],
 [0.0,
  0.021175462451348267,
  0.042350924902696534,
  0.063526387354044797,
  0.084701849805393067,
  0.10586240724665469,
  0.12693119197306726,
  0.14783738881474864,
  0.1685261464121838,
  0.18894922443715043,
  0.20906060982884964,
  0.22881410899010135,
  0.24816182896433522,
  0.26705309024678237,
  0.28543355559493905,
  0.30324446322126325,
  0.32042190154796807,
  0.33689608714873753,
  0.35259062034949884,
  0.36742169991480716,
  0.38130372981839566,
  0.39419609082205931,
  0.40609012315244303,
  0.41699047089218877,
  0.42691473211076258,
  0.43589255261409354,
  0.44396415365496233,
  0.45117844370314303,
  0.45759089218955901,
  0.46326134405019936,
  0.46825193197286874,
  0.47262520626848792,
  0.47644255912026351,
  0.479762978345391,
  0.48264213103884324,
  0.48513175212947535,
  0.48727929723524216,
  0.48912781199630445,
  0.49071596928965422,
  0.49207822925725819,
  0.49324508303711023,
  0.49424334802607572,
  0.49509648943078877,
  0.49582494917820918,
  0.49644646866322384,
  0.49697639621796236,
  0.49742797363639818,
  0.4978125986875685,
  0.49814006243866604,
  0.49841876152514436],
 [0.0,
  0.024041249659867737,
  0.048071045167731294,
  0.07204855156465495,
  0.095944822306298611,
  0.11973478671205953,
  0.14339127944692867,
  0.16688275925732202,
  0.19017165999482702,
  0.21321275986469856,
  0.23595135235832557,
  0.25832109460095881,
  0.28024142838261135,
  0.30161446466951503,
  0.32232120677507808,
  0.34221696436393212,
  0.36113676813322215,
  0.37893448936471802,
  0.39547915297515002,
  0.41065899741032463,
  0.42439210534462729,
  0.43663509264548273,
  0.44738801583190058,
  0.45669436554392162,
  0.46463614757215638,
  0.4713251864255304,
  0.47689249223342239,
  0.48147761541705325,
  0.48521947683365291,
  0.48824948300646315,
  0.49068709355671958,
  0.49263756209496956,
  0.49419135465912917,
  0.49542471233898844,
  0.49640089297803586,
  0.49717173720285363,
  0.49777931571338624,
  0.49825750797968005,
  0.49863343155527706,
  0.49892868792607403,
  0.49916041983863529,
  0.49934219141038738,
  0.49948471027077262,
  0.49959641371380292,
  0.49968394057592386,
  0.49975250873476684,
  0.49980621564599303,
  0.49984827671470905,
  0.49988121381246126,
  0.49990700403098148]]

In [9]:
Tao = np.linspace(0,TAO)

plt.plot(Tao, caso1[2])
plt.title("Modelo Lack")
plt.xlabel(" $tao $ ")
plt.ylabel("Rendimiento e")


Out[9]:
<matplotlib.text.Text at 0x7f0789130320>

In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]: