簡體   English   中英

繪制指數函數python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM