寫了一個分段函式,引數是單個數字,執行函式 畫圖

weixin_42053726發表於2018-12-28

其實當出現分段函式時候就不能傳入陣列了,只能一個一個傳入方法如下

[T_r(t, ) for t in R]

R = np.linspace(5, 50, num=500)

y = np.array([T_r(t, ) for t in R])

一般不要用range 這個函式了,用

np.arange(0,51) #range() 不好用

下面是一個分段函式的例子,函式比較複雜,g是一個分段函式

import numpy as np
import math
import matplotlib.pyplot as plt


def C_sp():
    return 1 / 3


def C_ap(R):
    return 1 / 3 + 3 / 2 * (3.6 / R - 2 / 3) ** 2


def g(R, C_ap, C_sp_):
    if C_ap >= 1:
        return 1
    else:
        dividend = -2 * (1 - 3.6 / R) * (1 - C_ap) ** 2
        divisor = 3 * 3.6 / R * (C_ap + 1 / 3)
        # return math.exp(-2 * (1 - 3.6 / R) * (1 - C_ap) ** 2 / 3 * 3.6 / R * (C_ap + 1 / 3))
        return math.exp(dividend / divisor)


def ED_r(R):
    dividend = 7 * 0.4 * (90 ** 2)
    divisor = 12 * 100 * (R - 3.6)
    return dividend / divisor


def ED_p(R, C_ap, g):
    dividend = 0.4 * (C_ap + 1)
    divisor = (2 / 9) * (1 / 9 - 0.4) * g
    return dividend / divisor


def T_r(R):
    T_r = ED_r(R) + ED_p(R, C_ap(R), g(R, C_ap(R), C_sp()))
    return T_r


# R = np.arange(0,51) #range() 不好用
R = np.linspace(5, 50, num=500)

y = np.array([T_r(t, ) for t in R])

plt.plot(R, y)
plt.show()

 

相關文章