extract values from function used by odeint scipy python

前端 未结 1 877
猫巷女王i
猫巷女王i 2021-01-14 18:40

I have the following script to calculate dRho using odeint.

P_r = 10e5
rho_r = 900
L = 750
H = 10
W = 150
A = H * W
V = A * L
fi = 0.17

k = 1.2e-13
c = 12.8         


        
1条回答
  •  执念已碎
    2021-01-14 18:56

    The following could be what you want. You could store the intermediate values in a list and later plot that list. That would require to store the x values as well.

    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.integrate import odeint
    
    xs = []
    yd = []
    
    def dY(y, x):
        a = 0.001
        yin = 1
        C = 0.01
        N = 1
        dC = C/N
        b1 = 0
        y_diff = -np.copy(y)
        y_diff[0] += yin
        y_diff[1:] += y[:-1]
        xs.append(x)
        yd.append(y_diff)
        return (a/dC)*y_diff+b1*dC
    
    x = np.linspace(0,20,1000)
    y0 = np.zeros(4)
    res = odeint(dY, y0, x)
    
    plt.plot(x,res, '-')
    
    plt.gca().set_prop_cycle(plt.rcParams['axes.prop_cycle'])
    plt.plot(np.array(xs),np.array(yd), '-.')
    
    plt.show()
    

    Dotted lines are the respective y_diff values for the res solutions of the same color.

    0 讨论(0)
提交回复
热议问题