[英]Plotting exponential function python
嘗試繪制指數函數時,得到線性圖:
import math
import numpy as np
import matplotlib.pyplot as plt
def graph(formula, x_range):
x = np.array(x_range)
y = eval(formula)
plt.plot(x, y)
graph('100*(np.power(0.8, x))', (0,100))
我究竟做錯了什么? output_image
您確實不應該使用評估。 但是,撇開該問題,問題在於您正在傳遞兩個值的元組作為x_range參數的參數。 這將創建一個x
,其值為: array([ 0, 100])
,如果創建相應的y,則只有兩個點,因此當然會得到一條線。 您想使用np.arange
而不是np.array
。 但是,如果將元組傳遞給graph
函數,則將元組傳遞給np.arange.
時,需要將其np.arange.
所以這應該工作:
def graph(formula, x_range):
x = np.arange(*x_range)
y = eval(formula)
plt.plot(x, y)
認真地,盡管如此,為什么不僅僅傳遞一個函數,而不是eval
?
def graph(func, x_range):
x = np.arange(*x_range)
y = func(x)
plt.plot(x, y)
graph(lambda x: 100*(np.power(0.8, x)), (0,100))
結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.